{
  "id": "992736c9d138691fa95dea9f48ab9d23",
  "_format": "hh-sol-build-info-1",
  "solcVersion": "0.6.12",
  "solcLongVersion": "0.6.12+commit.27d51765",
  "input": {
    "language": "Solidity",
    "sources": {
      "contracts/GoldMinerV2.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity 0.6.12;\npragma experimental ABIEncoderV2;\n\nimport \"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\";\nimport \"@boringcrypto/boring-solidity/contracts/BoringBatchable.sol\";\nimport \"@boringcrypto/boring-solidity/contracts/BoringOwnable.sol\";\nimport \"./libraries/SignedSafeMath.sol\";\nimport \"./interfaces/IRewarder.sol\";\nimport \"./interfaces/IGoldMiner.sol\";\n\ninterface IMigratorMiner {\n    // Take the current LP token address and return the new LP token address.\n    // Migrator should have full access to the caller's LP token.\n    function migrate(IERC20 token) external returns (IERC20);\n}\n\n/// @notice The (older) GoldMiner contract gives out a constant number of GOLN tokens per block.\n/// It is the only address with minting rights for GOLN.\n/// The idea for this GoldMiner V2 (MCV2) contract is therefore to be the owner of a dummy token\n/// that is deposited into the GoldMiner V1 (MCV1) contract.\n/// The allocation point for this pool on MCV1 is the total allocation point for all pools that receive double incentives.\ncontract GoldMinerV2 is BoringOwnable, BoringBatchable {\n    using BoringMath for uint256;\n    using BoringMath128 for uint128;\n    using BoringERC20 for IERC20;\n    using SignedSafeMath for int256;\n\n    /// @notice Info of each MCV2 user.\n    /// `amount` LP token amount the user has provided.\n    /// `rewardDebt` The amount of GOLN entitled to the user.\n    struct UserInfo {\n        uint256 amount;\n        int256 rewardDebt;\n    }\n\n    /// @notice Info of each MCV2 pool.\n    /// `allocPoint` The amount of allocation points assigned to the pool.\n    /// Also known as the amount of GOLN to distribute per block.\n    struct PoolInfo {\n        uint128 accGoldNuggetPerShare;\n        uint64 lastRewardBlock;\n        uint64 allocPoint;\n    }\n\n    /// @notice Address of MCV1 contract.\n    IGoldMiner public immutable GOLD_MINER;\n    /// @notice Address of GOLN contract.\n    IERC20 public immutable GOLN;\n    /// @notice The index of MCV2 master pool in MCV1.\n    uint256 public immutable GOLD_PID;\n    // @notice The migrator contract. It has a lot of power. Can only be set through governance (owner).\n    IMigratorMiner public migrator;\n\n    /// @notice Info of each MCV2 pool.\n    PoolInfo[] public poolInfo;\n    /// @notice Address of the LP token for each MCV2 pool.\n    IERC20[] public lpToken;\n    /// @notice Address of each `IRewarder` contract in MCV2.\n    IRewarder[] public rewarder;\n\n    /// @notice Info of each user that stakes LP tokens.\n    mapping (uint256 => mapping (address => UserInfo)) public userInfo;\n    /// @dev Total allocation points. Must be the sum of all allocation points in all pools.\n    uint256 public totalAllocPoint;\n\n    uint256 private constant GOLDMINER_GOLN_PER_BLOCK = 1e20;\n    uint256 private constant ACC_GOLN_PRECISION = 1e12;\n\n    event Deposit(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\n    event Withdraw(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\n    event EmergencyWithdraw(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\n    event Harvest(address indexed user, uint256 indexed pid, uint256 amount);\n    event LogPoolAddition(uint256 indexed pid, uint256 allocPoint, IERC20 indexed lpToken, IRewarder indexed rewarder);\n    event LogSetPool(uint256 indexed pid, uint256 allocPoint, IRewarder indexed rewarder, bool overwrite);\n    event LogUpdatePool(uint256 indexed pid, uint64 lastRewardBlock, uint256 lpSupply, uint256 accGoldNuggetPerShare);\n    event LogInit();\n\n    /// @param _GOLD_MINER The LuckySwap MCV1 contract address.\n    /// @param _goldnugget The GOLN token contract address.\n    /// @param _GOLD_PID The pool ID of the dummy token on the base MCV1 contract.\n    constructor(IGoldMiner _GOLD_MINER, IERC20 _goldnugget, uint256 _GOLD_PID) public {\n        GOLD_MINER = _GOLD_MINER;\n        GOLN = _goldnugget;\n        GOLD_PID = _GOLD_PID;\n    }\n\n    /// @notice Deposits a dummy token to `GOLD_MINER` MCV1. This is required because MCV1 holds the minting rights for GOLN.\n    /// Any balance of transaction sender in `dummyToken` is transferred.\n    /// The allocation point for the pool on MCV1 is the total allocation point for all pools that receive double incentives.\n    /// @param dummyToken The address of the ERC-20 token to deposit into MCV1.\n    function init(IERC20 dummyToken) external {\n        uint256 balance = dummyToken.balanceOf(msg.sender);\n        require(balance != 0, \"GoldMinerV2: Balance must exceed 0\");\n        dummyToken.safeTransferFrom(msg.sender, address(this), balance);\n        dummyToken.approve(address(GOLD_MINER), balance);\n        GOLD_MINER.deposit(GOLD_PID, balance);\n        emit LogInit();\n    }\n\n    /// @notice Returns the number of MCV2 pools.\n    function poolLength() public view returns (uint256 pools) {\n        pools = poolInfo.length;\n    }\n\n    /// @notice Add a new LP to the pool. Can only be called by the owner.\n    /// DO NOT add the same LP token more than once. Rewards will be messed up if you do.\n    /// @param allocPoint AP of the new pool.\n    /// @param _lpToken Address of the LP ERC-20 token.\n    /// @param _rewarder Address of the rewarder delegate.\n    function add(uint256 allocPoint, IERC20 _lpToken, IRewarder _rewarder) public onlyOwner {\n        uint256 lastRewardBlock = block.number;\n        totalAllocPoint = totalAllocPoint.add(allocPoint);\n        lpToken.push(_lpToken);\n        rewarder.push(_rewarder);\n\n        poolInfo.push(PoolInfo({\n            allocPoint: allocPoint.to64(),\n            lastRewardBlock: lastRewardBlock.to64(),\n            accGoldNuggetPerShare: 0\n        }));\n        emit LogPoolAddition(lpToken.length.sub(1), allocPoint, _lpToken, _rewarder);\n    }\n\n    /// @notice Update the given pool's GOLN allocation point and `IRewarder` contract. Can only be called by the owner.\n    /// @param _pid The index of the pool. See `poolInfo`.\n    /// @param _allocPoint New AP of the pool.\n    /// @param _rewarder Address of the rewarder delegate.\n    /// @param overwrite True if _rewarder should be `set`. Otherwise `_rewarder` is ignored.\n    function set(uint256 _pid, uint256 _allocPoint, IRewarder _rewarder, bool overwrite) public onlyOwner {\n        totalAllocPoint = totalAllocPoint.sub(poolInfo[_pid].allocPoint).add(_allocPoint);\n        poolInfo[_pid].allocPoint = _allocPoint.to64();\n        if (overwrite) { rewarder[_pid] = _rewarder; }\n        emit LogSetPool(_pid, _allocPoint, overwrite ? _rewarder : rewarder[_pid], overwrite);\n    }\n\n    /// @notice Set the `migrator` contract. Can only be called by the owner.\n    /// @param _migrator The contract address to set.\n    function setMigrator(IMigratorMiner _migrator) public onlyOwner {\n        migrator = _migrator;\n    }\n\n    /// @notice Migrate LP token to another LP contract through the `migrator` contract.\n    /// @param _pid The index of the pool. See `poolInfo`.\n    function migrate(uint256 _pid) public {\n        require(address(migrator) != address(0), \"GoldMinerV2: no migrator set\");\n        IERC20 _lpToken = lpToken[_pid];\n        uint256 bal = _lpToken.balanceOf(address(this));\n        _lpToken.approve(address(migrator), bal);\n        IERC20 newLpToken = migrator.migrate(_lpToken);\n        require(bal == newLpToken.balanceOf(address(this)), \"GoldMinerV2: migrated balance must match\");\n        lpToken[_pid] = newLpToken;\n    }\n\n    /// @notice View function to see pending GOLN on frontend.\n    /// @param _pid The index of the pool. See `poolInfo`.\n    /// @param _user Address of user.\n    /// @return pending GOLN reward for a given user.\n    function pendingGoldNugget(uint256 _pid, address _user) external view returns (uint256 pending) {\n        PoolInfo memory pool = poolInfo[_pid];\n        UserInfo storage user = userInfo[_pid][_user];\n        uint256 accGoldNuggetPerShare = pool.accGoldNuggetPerShare;\n        uint256 lpSupply = lpToken[_pid].balanceOf(address(this));\n        if (block.number > pool.lastRewardBlock && lpSupply != 0) {\n            uint256 blocks = block.number.sub(pool.lastRewardBlock);\n            uint256 goldnuggetReward = blocks.mul(goldnuggetPerBlock()).mul(pool.allocPoint) / totalAllocPoint;\n            accGoldNuggetPerShare = accGoldNuggetPerShare.add(goldnuggetReward.mul(ACC_GOLN_PRECISION) / lpSupply);\n        }\n        pending = int256(user.amount.mul(accGoldNuggetPerShare) / ACC_GOLN_PRECISION).sub(user.rewardDebt).toUInt256();\n    }\n\n    /// @notice Update reward variables for all pools. Be careful of gas spending!\n    /// @param pids Pool IDs of all to be updated. Make sure to update all active pools.\n    function massUpdatePools(uint256[] calldata pids) external {\n        uint256 len = pids.length;\n        for (uint256 i = 0; i < len; ++i) {\n            updatePool(pids[i]);\n        }\n    }\n\n    /// @notice Calculates and returns the `amount` of GOLN per block.\n    function goldnuggetPerBlock() public view returns (uint256 amount) {\n        amount = uint256(GOLDMINER_GOLN_PER_BLOCK)\n            .mul(GOLD_MINER.poolInfo(GOLD_PID).allocPoint) / GOLD_MINER.totalAllocPoint();\n    }\n\n    /// @notice Update reward variables of the given pool.\n    /// @param pid The index of the pool. See `poolInfo`.\n    /// @return pool Returns the pool that was updated.\n    function updatePool(uint256 pid) public returns (PoolInfo memory pool) {\n        pool = poolInfo[pid];\n        if (block.number > pool.lastRewardBlock) {\n            uint256 lpSupply = lpToken[pid].balanceOf(address(this));\n            if (lpSupply > 0) {\n                uint256 blocks = block.number.sub(pool.lastRewardBlock);\n                uint256 goldnuggetReward = blocks.mul(goldnuggetPerBlock()).mul(pool.allocPoint) / totalAllocPoint;\n                pool.accGoldNuggetPerShare = pool.accGoldNuggetPerShare.add((goldnuggetReward.mul(ACC_GOLN_PRECISION) / lpSupply).to128());\n            }\n            pool.lastRewardBlock = block.number.to64();\n            poolInfo[pid] = pool;\n            emit LogUpdatePool(pid, pool.lastRewardBlock, lpSupply, pool.accGoldNuggetPerShare);\n        }\n    }\n\n    /// @notice Deposit LP tokens to MCV2 for GOLN allocation.\n    /// @param pid The index of the pool. See `poolInfo`.\n    /// @param amount LP token amount to deposit.\n    /// @param to The receiver of `amount` deposit benefit.\n    function deposit(uint256 pid, uint256 amount, address to) public {\n        PoolInfo memory pool = updatePool(pid);\n        UserInfo storage user = userInfo[pid][to];\n\n        // Effects\n        user.amount = user.amount.add(amount);\n        user.rewardDebt = user.rewardDebt.add(int256(amount.mul(pool.accGoldNuggetPerShare) / ACC_GOLN_PRECISION));\n\n        // Interactions\n        IRewarder _rewarder = rewarder[pid];\n        if (address(_rewarder) != address(0)) {\n            _rewarder.onGoldNuggetReward(pid, to, to, 0, user.amount);\n        }\n\n        lpToken[pid].safeTransferFrom(msg.sender, address(this), amount);\n\n        emit Deposit(msg.sender, pid, amount, to);\n    }\n\n    /// @notice Withdraw LP tokens from MCV2.\n    /// @param pid The index of the pool. See `poolInfo`.\n    /// @param amount LP token amount to withdraw.\n    /// @param to Receiver of the LP tokens.\n    function withdraw(uint256 pid, uint256 amount, address to) public {\n        PoolInfo memory pool = updatePool(pid);\n        UserInfo storage user = userInfo[pid][msg.sender];\n\n        // Effects\n        user.rewardDebt = user.rewardDebt.sub(int256(amount.mul(pool.accGoldNuggetPerShare) / ACC_GOLN_PRECISION));\n        user.amount = user.amount.sub(amount);\n\n        // Interactions\n        IRewarder _rewarder = rewarder[pid];\n        if (address(_rewarder) != address(0)) {\n            _rewarder.onGoldNuggetReward(pid, msg.sender, to, 0, user.amount);\n        }\n\n        lpToken[pid].safeTransfer(to, amount);\n\n        emit Withdraw(msg.sender, pid, amount, to);\n    }\n\n    /// @notice Harvest proceeds for transaction sender to `to`.\n    /// @param pid The index of the pool. See `poolInfo`.\n    /// @param to Receiver of GOLN rewards.\n    function harvest(uint256 pid, address to) public {\n        PoolInfo memory pool = updatePool(pid);\n        UserInfo storage user = userInfo[pid][msg.sender];\n        int256 accumulatedGoldNugget = int256(user.amount.mul(pool.accGoldNuggetPerShare) / ACC_GOLN_PRECISION);\n        uint256 _pendingGoldNugget = accumulatedGoldNugget.sub(user.rewardDebt).toUInt256();\n\n        // Effects\n        user.rewardDebt = accumulatedGoldNugget;\n\n        // Interactions\n        if (_pendingGoldNugget != 0) {\n            GOLN.safeTransfer(to, _pendingGoldNugget);\n        }\n\n        IRewarder _rewarder = rewarder[pid];\n        if (address(_rewarder) != address(0)) {\n            _rewarder.onGoldNuggetReward( pid, msg.sender, to, _pendingGoldNugget, user.amount);\n        }\n\n        emit Harvest(msg.sender, pid, _pendingGoldNugget);\n    }\n\n    /// @notice Withdraw LP tokens from MCV2 and harvest proceeds for transaction sender to `to`.\n    /// @param pid The index of the pool. See `poolInfo`.\n    /// @param amount LP token amount to withdraw.\n    /// @param to Receiver of the LP tokens and GOLN rewards.\n    function withdrawAndHarvest(uint256 pid, uint256 amount, address to) public {\n        PoolInfo memory pool = updatePool(pid);\n        UserInfo storage user = userInfo[pid][msg.sender];\n        int256 accumulatedGoldNugget = int256(user.amount.mul(pool.accGoldNuggetPerShare) / ACC_GOLN_PRECISION);\n        uint256 _pendingGoldNugget = accumulatedGoldNugget.sub(user.rewardDebt).toUInt256();\n\n        // Effects\n        user.rewardDebt = accumulatedGoldNugget.sub(int256(amount.mul(pool.accGoldNuggetPerShare) / ACC_GOLN_PRECISION));\n        user.amount = user.amount.sub(amount);\n\n        // Interactions\n        GOLN.safeTransfer(to, _pendingGoldNugget);\n\n        IRewarder _rewarder = rewarder[pid];\n        if (address(_rewarder) != address(0)) {\n            _rewarder.onGoldNuggetReward(pid, msg.sender, to, _pendingGoldNugget, user.amount);\n        }\n\n        lpToken[pid].safeTransfer(to, amount);\n\n        emit Withdraw(msg.sender, pid, amount, to);\n        emit Harvest(msg.sender, pid, _pendingGoldNugget);\n    }\n\n    /// @notice Harvests GOLN from `GOLD_MINER` MCV1 and pool `GOLD_PID` to this MCV2 contract.\n    function harvestFromGoldMiner() public {\n        GOLD_MINER.deposit(GOLD_PID, 0);\n    }\n\n    /// @notice Withdraw without caring about rewards. EMERGENCY ONLY.\n    /// @param pid The index of the pool. See `poolInfo`.\n    /// @param to Receiver of the LP tokens.\n    function emergencyWithdraw(uint256 pid, address to) public {\n        UserInfo storage user = userInfo[pid][msg.sender];\n        uint256 amount = user.amount;\n        user.amount = 0;\n        user.rewardDebt = 0;\n\n        IRewarder _rewarder = rewarder[pid];\n        if (address(_rewarder) != address(0)) {\n            _rewarder.onGoldNuggetReward(pid, msg.sender, to, 0, 0);\n        }\n\n        // Note: transfer can fail or succeed if `amount` is zero.\n        lpToken[pid].safeTransfer(to, amount);\n        emit EmergencyWithdraw(msg.sender, pid, amount, to);\n    }\n}\n"
      },
      "@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol": {
        "content": "// SPDX-License-Identifier: MIT\r\npragma solidity 0.6.12;\r\n// a library for performing overflow-safe math, updated with awesomeness from of DappHub (https://github.com/dapphub/ds-math)\r\nlibrary BoringMath {\r\n    function add(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a + b) >= b, \"BoringMath: Add Overflow\");}\r\n    function sub(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a - b) <= a, \"BoringMath: Underflow\");}\r\n    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {require(b == 0 || (c = a * b)/b == a, \"BoringMath: Mul Overflow\");}\r\n    function to128(uint256 a) internal pure returns (uint128 c) {\r\n        require(a <= uint128(-1), \"BoringMath: uint128 Overflow\");\r\n        c = uint128(a);\r\n    }\r\n    function to64(uint256 a) internal pure returns (uint64 c) {\r\n        require(a <= uint64(-1), \"BoringMath: uint64 Overflow\");\r\n        c = uint64(a);\r\n    }\r\n    function to32(uint256 a) internal pure returns (uint32 c) {\r\n        require(a <= uint32(-1), \"BoringMath: uint32 Overflow\");\r\n        c = uint32(a);\r\n    }\r\n}\r\n\r\nlibrary BoringMath128 {\r\n    function add(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a + b) >= b, \"BoringMath: Add Overflow\");}\r\n    function sub(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a - b) <= a, \"BoringMath: Underflow\");}\r\n}\r\n\r\nlibrary BoringMath64 {\r\n    function add(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a + b) >= b, \"BoringMath: Add Overflow\");}\r\n    function sub(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a - b) <= a, \"BoringMath: Underflow\");}\r\n}\r\n\r\nlibrary BoringMath32 {\r\n    function add(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a + b) >= b, \"BoringMath: Add Overflow\");}\r\n    function sub(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a - b) <= a, \"BoringMath: Underflow\");}\r\n}"
      },
      "@boringcrypto/boring-solidity/contracts/BoringBatchable.sol": {
        "content": "// SPDX-License-Identifier: UNLICENSED\r\n// Audit on 5-Jan-2021 by Keno and BoringCrypto\r\n\r\n// P1 - P3: OK\r\npragma solidity 0.6.12;\r\npragma experimental ABIEncoderV2;\r\n// solhint-disable avoid-low-level-calls\r\n\r\nimport \"./libraries/BoringERC20.sol\";\r\n\r\n// T1 - T4: OK\r\ncontract BaseBoringBatchable {\r\n    function _getRevertMsg(bytes memory _returnData) internal pure returns (string memory) {\r\n        // If the _res length is less than 68, then the transaction failed silently (without a revert message)\r\n        if (_returnData.length < 68) return \"Transaction reverted silently\";\r\n\r\n        assembly {\r\n            // Slice the sighash.\r\n            _returnData := add(_returnData, 0x04)\r\n        }\r\n        return abi.decode(_returnData, (string)); // All that remains is the revert string\r\n    }    \r\n    \r\n    // F3 - F9: OK\r\n    // F1: External is ok here because this is the batch function, adding it to a batch makes no sense\r\n    // F2: Calls in the batch may be payable, delegatecall operates in the same context, so each call in the batch has access to msg.value\r\n    // C1 - C21: OK\r\n    // C3: The length of the loop is fully under user control, so can't be exploited\r\n    // C7: Delegatecall is only used on the same contract, so it's safe\r\n    function batch(bytes[] calldata calls, bool revertOnFail) external payable returns(bool[] memory successes, bytes[] memory results) {\r\n        // Interactions\r\n        successes = new bool[](calls.length);\r\n        results = new bytes[](calls.length);\r\n        for (uint256 i = 0; i < calls.length; i++) {\r\n            (bool success, bytes memory result) = address(this).delegatecall(calls[i]);\r\n            require(success || !revertOnFail, _getRevertMsg(result));\r\n            successes[i] = success;\r\n            results[i] = result;\r\n        }\r\n    }\r\n}\r\n\r\n// T1 - T4: OK\r\ncontract BoringBatchable is BaseBoringBatchable {\r\n    // F1 - F9: OK\r\n    // F6: Parameters can be used front-run the permit and the user's permit will fail (due to nonce or other revert)\r\n    //     if part of a batch this could be used to grief once as the second call would not need the permit\r\n    // C1 - C21: OK\r\n    function permitToken(IERC20 token, address from, address to, uint256 amount, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {\r\n        // Interactions\r\n        // X1 - X5\r\n        token.permit(from, to, amount, deadline, v, r, s);\r\n    }\r\n}"
      },
      "@boringcrypto/boring-solidity/contracts/BoringOwnable.sol": {
        "content": "// SPDX-License-Identifier: MIT\r\n// Audit on 5-Jan-2021 by Keno and BoringCrypto\r\n\r\n// P1 - P3: OK\r\npragma solidity 0.6.12;\r\n\r\n// Source: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol + Claimable.sol\r\n// Edited by BoringCrypto\r\n\r\n// T1 - T4: OK\r\ncontract BoringOwnableData {\r\n    // V1 - V5: OK\r\n    address public owner;\r\n    // V1 - V5: OK\r\n    address public pendingOwner;\r\n}\r\n\r\n// T1 - T4: OK\r\ncontract BoringOwnable is BoringOwnableData {\r\n    // E1: OK\r\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\r\n\r\n    constructor () public {\r\n        owner = msg.sender;\r\n        emit OwnershipTransferred(address(0), msg.sender);\r\n    }\r\n\r\n    // F1 - F9: OK\r\n    // C1 - C21: OK\r\n    function transferOwnership(address newOwner, bool direct, bool renounce) public onlyOwner {\r\n        if (direct) {\r\n            // Checks\r\n            require(newOwner != address(0) || renounce, \"Ownable: zero address\");\r\n\r\n            // Effects\r\n            emit OwnershipTransferred(owner, newOwner);\r\n            owner = newOwner;\r\n            pendingOwner = address(0);\r\n        } else {\r\n            // Effects\r\n            pendingOwner = newOwner;\r\n        }\r\n    }\r\n\r\n    // F1 - F9: OK\r\n    // C1 - C21: OK\r\n    function claimOwnership() public {\r\n        address _pendingOwner = pendingOwner;\r\n        \r\n        // Checks\r\n        require(msg.sender == _pendingOwner, \"Ownable: caller != pending owner\");\r\n\r\n        // Effects\r\n        emit OwnershipTransferred(owner, _pendingOwner);\r\n        owner = _pendingOwner;\r\n        pendingOwner = address(0);\r\n    }\r\n\r\n    // M1 - M5: OK\r\n    // C1 - C21: OK\r\n    modifier onlyOwner() {\r\n        require(msg.sender == owner, \"Ownable: caller is not the owner\");\r\n        _;\r\n    }\r\n}"
      },
      "contracts/libraries/SignedSafeMath.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity 0.6.12;\n\nlibrary SignedSafeMath {\n    int256 constant private _INT256_MIN = -2**255;\n\n    /**\n     * @dev Returns the multiplication of two signed integers, reverting on\n     * overflow.\n     *\n     * Counterpart to Solidity's `*` operator.\n     *\n     * Requirements:\n     *\n     * - Multiplication cannot overflow.\n     */\n    function mul(int256 a, int256 b) internal pure returns (int256) {\n        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\n        // benefit is lost if 'b' is also tested.\n        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\n        if (a == 0) {\n            return 0;\n        }\n\n        require(!(a == -1 && b == _INT256_MIN), \"SignedSafeMath: multiplication overflow\");\n\n        int256 c = a * b;\n        require(c / a == b, \"SignedSafeMath: multiplication overflow\");\n\n        return c;\n    }\n\n    /**\n     * @dev Returns the integer division of two signed integers. Reverts on\n     * division by zero. The result is rounded towards zero.\n     *\n     * Counterpart to Solidity's `/` operator. Note: this function uses a\n     * `revert` opcode (which leaves remaining gas untouched) while Solidity\n     * uses an invalid opcode to revert (consuming all remaining gas).\n     *\n     * Requirements:\n     *\n     * - The divisor cannot be zero.\n     */\n    function div(int256 a, int256 b) internal pure returns (int256) {\n        require(b != 0, \"SignedSafeMath: division by zero\");\n        require(!(b == -1 && a == _INT256_MIN), \"SignedSafeMath: division overflow\");\n\n        int256 c = a / b;\n\n        return c;\n    }\n\n    /**\n     * @dev Returns the subtraction of two signed integers, reverting on\n     * overflow.\n     *\n     * Counterpart to Solidity's `-` operator.\n     *\n     * Requirements:\n     *\n     * - Subtraction cannot overflow.\n     */\n    function sub(int256 a, int256 b) internal pure returns (int256) {\n        int256 c = a - b;\n        require((b >= 0 && c <= a) || (b < 0 && c > a), \"SignedSafeMath: subtraction overflow\");\n\n        return c;\n    }\n\n    /**\n     * @dev Returns the addition of two signed integers, reverting on\n     * overflow.\n     *\n     * Counterpart to Solidity's `+` operator.\n     *\n     * Requirements:\n     *\n     * - Addition cannot overflow.\n     */\n    function add(int256 a, int256 b) internal pure returns (int256) {\n        int256 c = a + b;\n        require((b >= 0 && c >= a) || (b < 0 && c < a), \"SignedSafeMath: addition overflow\");\n\n        return c;\n    }\n\n    function toUInt256(int256 a) internal pure returns (uint256) {\n        require(a >= 0, \"Integer < 0\");\n        return uint256(a);\n    }\n}"
      },
      "contracts/interfaces/IRewarder.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity 0.6.12;\nimport \"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\";\ninterface IRewarder {\n    using BoringERC20 for IERC20;\n    function onGoldNuggetReward(uint256 pid, address user, address recipient, uint256 goldnuggetAmount, uint256 newLpAmount) external;\n    function pendingTokens(uint256 pid, address user, uint256 goldnuggetAmount) external view returns (IERC20[] memory, uint256[] memory);\n}\n"
      },
      "contracts/interfaces/IGoldMiner.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.6.12;\npragma experimental ABIEncoderV2;\nimport \"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\";\n\ninterface IGoldMiner {\n    using BoringERC20 for IERC20;\n    struct UserInfo {\n        uint256 amount;     // How many LP tokens the user has provided.\n        uint256 rewardDebt; // Reward debt. See explanation below.\n    }\n\n    struct PoolInfo {\n        IERC20 lpToken;           // Address of LP token contract.\n        uint256 allocPoint;       // How many allocation points assigned to this pool. GOLN to distribute per block.\n        uint256 lastRewardBlock;  // Last block number that GOLN distribution occurs.\n        uint256 accGoldNuggetPerShare; // Accumulated GOLN per share, times 1e12. See below.\n    }\n\n    function poolInfo(uint256 pid) external view returns (IGoldMiner.PoolInfo memory);\n    function totalAllocPoint() external view returns (uint256);\n    function deposit(uint256 _pid, uint256 _amount) external;\n}\n"
      },
      "@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol": {
        "content": "// SPDX-License-Identifier: UNLICENSED\r\npragma solidity 0.6.12;\r\n\r\nimport \"../interfaces/IERC20.sol\";\r\n\r\nlibrary BoringERC20 {\r\n    function safeSymbol(IERC20 token) internal view returns(string memory) {\r\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x95d89b41));\r\n        return success && data.length > 0 ? abi.decode(data, (string)) : \"???\";\r\n    }\r\n\r\n    function safeName(IERC20 token) internal view returns(string memory) {\r\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x06fdde03));\r\n        return success && data.length > 0 ? abi.decode(data, (string)) : \"???\";\r\n    }\r\n\r\n    function safeDecimals(IERC20 token) internal view returns (uint8) {\r\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x313ce567));\r\n        return success && data.length == 32 ? abi.decode(data, (uint8)) : 18;\r\n    }\r\n\r\n    function safeTransfer(IERC20 token, address to, uint256 amount) internal {\r\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0xa9059cbb, to, amount));\r\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \"BoringERC20: Transfer failed\");\r\n    }\r\n\r\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 amount) internal {\r\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0x23b872dd, from, to, amount));\r\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \"BoringERC20: TransferFrom failed\");\r\n    }\r\n}"
      },
      "@boringcrypto/boring-solidity/contracts/interfaces/IERC20.sol": {
        "content": "// SPDX-License-Identifier: MIT\r\npragma solidity 0.6.12;\r\n\r\ninterface IERC20 {\r\n    function totalSupply() external view returns (uint256);\r\n    function balanceOf(address account) external view returns (uint256);\r\n    function allowance(address owner, address spender) external view returns (uint256);\r\n    function approve(address spender, uint256 amount) external returns (bool);\r\n    event Transfer(address indexed from, address indexed to, uint256 value);\r\n    event Approval(address indexed owner, address indexed spender, uint256 value);\r\n\r\n    // EIP 2612\r\n    function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;\r\n}"
      },
      "contracts/mocks/ComplexRewarderTime.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity 0.6.12;\npragma experimental ABIEncoderV2;\nimport \"../interfaces/IRewarder.sol\";\nimport \"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\";\nimport \"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\";\nimport \"@boringcrypto/boring-solidity/contracts/BoringOwnable.sol\";\nimport \"../GoldMinerV2.sol\";\n\n/// @author @0xKeno\ncontract ComplexRewarderTime is IRewarder,  BoringOwnable{\n    using BoringMath for uint256;\n    using BoringMath128 for uint128;\n    using BoringERC20 for IERC20;\n\n    IERC20 private immutable rewardToken;\n\n    /// @notice Info of each MCV2 user.\n    /// `amount` LP token amount the user has provided.\n    /// `rewardDebt` The amount of GOLN entitled to the user.\n    struct UserInfo {\n        uint256 amount;\n        uint256 rewardDebt;\n    }\n\n    /// @notice Info of each MCV2 pool.\n    /// `allocPoint` The amount of allocation points assigned to the pool.\n    /// Also known as the amount of GOLN to distribute per block.\n    struct PoolInfo {\n        uint128 accGoldNuggetPerShare;\n        uint64 lastRewardTime;\n        uint64 allocPoint;\n    }\n\n    /// @notice Info of each pool.\n    mapping (uint256 => PoolInfo) public poolInfo;\n\n    uint256[] public poolIds;\n\n    /// @notice Info of each user that stakes LP tokens.\n    mapping (uint256 => mapping (address => UserInfo)) public userInfo;\n    /// @dev Total allocation points. Must be the sum of all allocation points in all pools.\n    uint256 totalAllocPoint;\n\n    uint256 public rewardPerSecond;\n    uint256 private constant ACC_TOKEN_PRECISION = 1e12;\n\n    address private immutable GOLDMINER_V2;\n\n    event LogOnReward(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\n    event LogPoolAddition(uint256 indexed pid, uint256 allocPoint);\n    event LogSetPool(uint256 indexed pid, uint256 allocPoint);\n    event LogUpdatePool(uint256 indexed pid, uint64 lastRewardTime, uint256 lpSupply, uint256 accGoldNuggetPerShare);\n    event LogRewardPerSecond(uint256 rewardPerSecond);\n    event LogInit();\n\n    constructor (IERC20 _rewardToken, uint256 _rewardPerSecond, address _GOLDMINER_V2) public {\n        rewardToken = _rewardToken;\n        rewardPerSecond = _rewardPerSecond;\n        GOLDMINER_V2 = _GOLDMINER_V2;\n    }\n\n\n    function onGoldNuggetReward (uint256 pid, address _user, address to, uint256, uint256 lpToken) onlyMCV2 override external {\n        PoolInfo memory pool = updatePool(pid);\n        UserInfo storage user = userInfo[pid][_user];\n        uint256 pending;\n        if (user.amount > 0) {\n            pending =\n                (user.amount.mul(pool.accGoldNuggetPerShare) / ACC_TOKEN_PRECISION).sub(\n                    user.rewardDebt\n                );\n            rewardToken.safeTransfer(to, pending);\n        }\n        user.amount = lpToken;\n        user.rewardDebt = lpToken.mul(pool.accGoldNuggetPerShare) / ACC_TOKEN_PRECISION;\n        emit LogOnReward(_user, pid, pending, to);\n    }\n    \n    function pendingTokens(uint256 pid, address user, uint256) override external view returns (IERC20[] memory rewardTokens, uint256[] memory rewardAmounts) {\n        IERC20[] memory _rewardTokens = new IERC20[](1);\n        _rewardTokens[0] = (rewardToken);\n        uint256[] memory _rewardAmounts = new uint256[](1);\n        _rewardAmounts[0] = pendingToken(pid, user);\n        return (_rewardTokens, _rewardAmounts);\n    }\n\n    /// @notice Sets the goldnugget per second to be distributed. Can only be called by the owner.\n    /// @param _rewardPerSecond The amount of GoldNugget to be distributed per second.\n    function setRewardPerSecond(uint256 _rewardPerSecond) public onlyOwner {\n        rewardPerSecond = _rewardPerSecond;\n        emit LogRewardPerSecond(_rewardPerSecond);\n    }\n\n    modifier onlyMCV2 {\n        require(\n            msg.sender == GOLDMINER_V2,\n            \"Only MCV2 can call this function.\"\n        );\n        _;\n    }\n\n    /// @notice Returns the number of MCV2 pools.\n    function poolLength() public view returns (uint256 pools) {\n        pools = poolIds.length;\n    }\n\n    /// @notice Add a new LP to the pool. Can only be called by the owner.\n    /// DO NOT add the same LP token more than once. Rewards will be messed up if you do.\n    /// @param allocPoint AP of the new pool.\n    /// @param _pid Pid on MCV2\n    function add(uint256 allocPoint, uint256 _pid) public onlyOwner {\n        require(poolInfo[_pid].lastRewardTime == 0, \"Pool already exists\");\n        uint256 lastRewardTime = block.timestamp;\n        totalAllocPoint = totalAllocPoint.add(allocPoint);\n\n        poolInfo[_pid] = PoolInfo({\n            allocPoint: allocPoint.to64(),\n            lastRewardTime: lastRewardTime.to64(),\n            accGoldNuggetPerShare: 0\n        });\n        poolIds.push(_pid);\n        emit LogPoolAddition(_pid, allocPoint);\n    }\n\n    /// @notice Update the given pool's GOLN allocation point and `IRewarder` contract. Can only be called by the owner.\n    /// @param _pid The index of the pool. See `poolInfo`.\n    /// @param _allocPoint New AP of the pool.\n    function set(uint256 _pid, uint256 _allocPoint) public onlyOwner {\n        totalAllocPoint = totalAllocPoint.sub(poolInfo[_pid].allocPoint).add(_allocPoint);\n        poolInfo[_pid].allocPoint = _allocPoint.to64();\n        emit LogSetPool(_pid, _allocPoint);\n    }\n\n    /// @notice View function to see pending Token\n    /// @param _pid The index of the pool. See `poolInfo`.\n    /// @param _user Address of user.\n    /// @return pending GOLN reward for a given user.\n    function pendingToken(uint256 _pid, address _user) public view returns (uint256 pending) {\n        PoolInfo memory pool = poolInfo[_pid];\n        UserInfo storage user = userInfo[_pid][_user];\n        uint256 accGoldNuggetPerShare = pool.accGoldNuggetPerShare;\n        uint256 lpSupply = GoldMinerV2(GOLDMINER_V2).lpToken(_pid).balanceOf(GOLDMINER_V2);\n        if (block.timestamp > pool.lastRewardTime && lpSupply != 0) {\n            uint256 time = block.timestamp.sub(pool.lastRewardTime);\n            uint256 goldnuggetReward = time.mul(rewardPerSecond).mul(pool.allocPoint) / totalAllocPoint;\n            accGoldNuggetPerShare = accGoldNuggetPerShare.add(goldnuggetReward.mul(ACC_TOKEN_PRECISION) / lpSupply);\n        }\n        pending = (user.amount.mul(accGoldNuggetPerShare) / ACC_TOKEN_PRECISION).sub(user.rewardDebt);\n    }\n\n    /// @notice Update reward variables for all pools. Be careful of gas spending!\n    /// @param pids Pool IDs of all to be updated. Make sure to update all active pools.\n    function massUpdatePools(uint256[] calldata pids) external {\n        uint256 len = pids.length;\n        for (uint256 i = 0; i < len; ++i) {\n            updatePool(pids[i]);\n        }\n    }\n\n    /// @notice Update reward variables of the given pool.\n    /// @param pid The index of the pool. See `poolInfo`.\n    /// @return pool Returns the pool that was updated.\n    function updatePool(uint256 pid) public returns (PoolInfo memory pool) {\n        pool = poolInfo[pid];\n        if (block.timestamp > pool.lastRewardTime) {\n            uint256 lpSupply = GoldMinerV2(GOLDMINER_V2).lpToken(pid).balanceOf(GOLDMINER_V2);\n\n            if (lpSupply > 0) {\n                uint256 time = block.timestamp.sub(pool.lastRewardTime);\n                uint256 goldnuggetReward = time.mul(rewardPerSecond).mul(pool.allocPoint) / totalAllocPoint;\n                pool.accGoldNuggetPerShare = pool.accGoldNuggetPerShare.add((goldnuggetReward.mul(ACC_TOKEN_PRECISION) / lpSupply).to128());\n            }\n            pool.lastRewardTime = block.timestamp.to64();\n            poolInfo[pid] = pool;\n            emit LogUpdatePool(pid, pool.lastRewardTime, lpSupply, pool.accGoldNuggetPerShare);\n        }\n    }\n\n}\n"
      },
      "contracts/mocks/ComplexRewarder.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity 0.6.12;\npragma experimental ABIEncoderV2;\nimport \"../interfaces/IRewarder.sol\";\nimport \"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\";\nimport \"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\";\nimport \"@boringcrypto/boring-solidity/contracts/BoringOwnable.sol\";\nimport \"../GoldMinerV2.sol\";\n\n/// @author @0xKeno\ncontract ComplexRewarder is IRewarder,  BoringOwnable{\n    using BoringMath for uint256;\n    using BoringMath128 for uint128;\n    using BoringERC20 for IERC20;\n\n    IERC20 private immutable rewardToken;\n\n    /// @notice Info of each MCV2 user.\n    /// `amount` LP token amount the user has provided.\n    /// `rewardDebt` The amount of GOLN entitled to the user.\n    struct UserInfo {\n        uint256 amount;\n        uint256 rewardDebt;\n    }\n\n    /// @notice Info of each MCV2 pool.\n    /// `allocPoint` The amount of allocation points assigned to the pool.\n    /// Also known as the amount of GOLN to distribute per block.\n    struct PoolInfo {\n        uint128 accGoldNuggetPerShare;\n        uint64 lastRewardBlock;\n        uint64 allocPoint;\n    }\n\n    /// @notice Info of each pool.\n    mapping (uint256 => PoolInfo) public poolInfo;\n\n    uint256[] public poolIds;\n\n    /// @notice Info of each user that stakes LP tokens.\n    mapping (uint256 => mapping (address => UserInfo)) public userInfo;\n    /// @dev Total allocation points. Must be the sum of all allocation points in all pools.\n    uint256 totalAllocPoint;\n\n    uint256 public tokenPerBlock;\n    uint256 private constant ACC_TOKEN_PRECISION = 1e12;\n\n    address private immutable GOLDMINER_V2;\n\n    event LogOnReward(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\n    event LogPoolAddition(uint256 indexed pid, uint256 allocPoint);\n    event LogSetPool(uint256 indexed pid, uint256 allocPoint);\n    event LogUpdatePool(uint256 indexed pid, uint64 lastRewardBlock, uint256 lpSupply, uint256 accGoldNuggetPerShare);\n    event LogInit();\n\n    constructor (IERC20 _rewardToken, uint256 _tokenPerBlock, address _GOLDMINER_V2) public {\n        rewardToken = _rewardToken;\n        tokenPerBlock = _tokenPerBlock;\n        GOLDMINER_V2 = _GOLDMINER_V2;\n    }\n\n\n    function onGoldNuggetReward (uint256 pid, address _user, address to, uint256, uint256 lpToken) onlyMCV2 override external {\n        PoolInfo memory pool = updatePool(pid);\n        UserInfo storage user = userInfo[pid][_user];\n        uint256 pending;\n        if (user.amount > 0) {\n            pending =\n                (user.amount.mul(pool.accGoldNuggetPerShare) / ACC_TOKEN_PRECISION).sub(\n                    user.rewardDebt\n                );\n            rewardToken.safeTransfer(to, pending);\n        }\n        user.amount = lpToken;\n        user.rewardDebt = lpToken.mul(pool.accGoldNuggetPerShare) / ACC_TOKEN_PRECISION;\n        emit LogOnReward(_user, pid, pending, to);\n    }\n    \n    function pendingTokens(uint256 pid, address user, uint256) override external view returns (IERC20[] memory rewardTokens, uint256[] memory rewardAmounts) {\n        IERC20[] memory _rewardTokens = new IERC20[](1);\n        _rewardTokens[0] = (rewardToken);\n        uint256[] memory _rewardAmounts = new uint256[](1);\n        _rewardAmounts[0] = pendingToken(pid, user);\n        return (_rewardTokens, _rewardAmounts);\n    }\n\n    modifier onlyMCV2 {\n        require(\n            msg.sender == GOLDMINER_V2,\n            \"Only MCV2 can call this function.\"\n        );\n        _;\n    }\n\n    /// @notice Returns the number of MCV2 pools.\n    function poolLength() public view returns (uint256 pools) {\n        pools = poolIds.length;\n    }\n\n    /// @notice Add a new LP to the pool.  Can only be called by the owner.\n    /// DO NOT add the same LP token more than once. Rewards will be messed up if you do.\n    /// @param allocPoint AP of the new pool.\n    /// @param _pid Pid on MCV2\n    function add(uint256 allocPoint, uint256 _pid) public onlyOwner {\n        require(poolInfo[_pid].lastRewardBlock == 0, \"Pool already exists\");\n        uint256 lastRewardBlock = block.number;\n        totalAllocPoint = totalAllocPoint.add(allocPoint);\n\n        poolInfo[_pid] = PoolInfo({\n            allocPoint: allocPoint.to64(),\n            lastRewardBlock: lastRewardBlock.to64(),\n            accGoldNuggetPerShare: 0\n        });\n        poolIds.push(_pid);\n        emit LogPoolAddition(_pid, allocPoint);\n    }\n\n    /// @notice Update the given pool's GOLN allocation point and `IRewarder` contract. Can only be called by the owner.\n    /// @param _pid The index of the pool. See `poolInfo`.\n    /// @param _allocPoint New AP of the pool.\n    function set(uint256 _pid, uint256 _allocPoint) public onlyOwner {\n        totalAllocPoint = totalAllocPoint.sub(poolInfo[_pid].allocPoint).add(_allocPoint);\n        poolInfo[_pid].allocPoint = _allocPoint.to64();\n        emit LogSetPool(_pid, _allocPoint);\n    }\n\n    /// @notice View function to see pending Token\n    /// @param _pid The index of the pool. See `poolInfo`.\n    /// @param _user Address of user.\n    /// @return pending GOLN reward for a given user.\n    function pendingToken(uint256 _pid, address _user) public view returns (uint256 pending) {\n        PoolInfo memory pool = poolInfo[_pid];\n        UserInfo storage user = userInfo[_pid][_user];\n        uint256 accGoldNuggetPerShare = pool.accGoldNuggetPerShare;\n        uint256 lpSupply = GoldMinerV2(GOLDMINER_V2).lpToken(_pid).balanceOf(GOLDMINER_V2);\n        if (block.number > pool.lastRewardBlock && lpSupply != 0) {\n            uint256 blocks = block.number.sub(pool.lastRewardBlock);\n            uint256 goldnuggetReward = blocks.mul(tokenPerBlock).mul(pool.allocPoint) / totalAllocPoint;\n            accGoldNuggetPerShare = accGoldNuggetPerShare.add(goldnuggetReward.mul(ACC_TOKEN_PRECISION) / lpSupply);\n        }\n        pending = (user.amount.mul(accGoldNuggetPerShare) / ACC_TOKEN_PRECISION).sub(user.rewardDebt);\n    }\n\n    /// @notice Update reward variables for all pools. Be careful of gas spending!\n    /// @param pids Pool IDs of all to be updated. Make sure to update all active pools.\n    function massUpdatePools(uint256[] calldata pids) external {\n        uint256 len = pids.length;\n        for (uint256 i = 0; i < len; ++i) {\n            updatePool(pids[i]);\n        }\n    }\n\n    /// @notice Update reward variables of the given pool.\n    /// @param pid The index of the pool. See `poolInfo`.\n    /// @return pool Returns the pool that was updated.\n    function updatePool(uint256 pid) public returns (PoolInfo memory pool) {\n        pool = poolInfo[pid];\n        require(pool.lastRewardBlock != 0, \"Pool does not exist\");\n        if (block.number > pool.lastRewardBlock) {\n            uint256 lpSupply = GoldMinerV2(GOLDMINER_V2).lpToken(pid).balanceOf(GOLDMINER_V2);\n\n            if (lpSupply > 0) {\n                uint256 blocks = block.number.sub(pool.lastRewardBlock);\n                uint256 goldnuggetReward = blocks.mul(tokenPerBlock).mul(pool.allocPoint) / totalAllocPoint;\n                pool.accGoldNuggetPerShare = pool.accGoldNuggetPerShare.add((goldnuggetReward.mul(ACC_TOKEN_PRECISION) / lpSupply).to128());\n            }\n            pool.lastRewardBlock = block.number.to64();\n            poolInfo[pid] = pool;\n            emit LogUpdatePool(pid, pool.lastRewardBlock, lpSupply, pool.accGoldNuggetPerShare);\n        }\n    }\n\n}\n"
      },
      "contracts/mocks/RewarderMock.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity 0.6.12;\nimport \"../interfaces/IRewarder.sol\";\nimport \"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\";\nimport \"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\";\n\n\ncontract RewarderMock is IRewarder {\n    using BoringMath for uint256;\n    using BoringERC20 for IERC20;\n    uint256 private immutable rewardMultiplier;\n    IERC20 private immutable rewardToken;\n    uint256 private constant REWARD_TOKEN_DIVISOR = 1e18;\n    address private immutable GOLDMINER_V2;\n\n    constructor (uint256 _rewardMultiplier, IERC20 _rewardToken, address _GOLDMINER_V2) public {\n        rewardMultiplier = _rewardMultiplier;\n        rewardToken = _rewardToken;\n        GOLDMINER_V2 = _GOLDMINER_V2;\n    }\n\n    function onGoldNuggetReward (uint256, address user, address to, uint256 goldnuggetAmount, uint256) onlyMCV2 override external {\n        uint256 pendingReward = goldnuggetAmount.mul(rewardMultiplier) / REWARD_TOKEN_DIVISOR;\n        uint256 rewardBal = rewardToken.balanceOf(address(this));\n        if (pendingReward > rewardBal) {\n            rewardToken.safeTransfer(to, rewardBal);\n        } else {\n            rewardToken.safeTransfer(to, pendingReward);\n        }\n    }\n    \n    function pendingTokens(uint256 pid, address user, uint256 goldnuggetAmount) override external view returns (IERC20[] memory rewardTokens, uint256[] memory rewardAmounts) {\n        IERC20[] memory _rewardTokens = new IERC20[](1);\n        _rewardTokens[0] = (rewardToken);\n        uint256[] memory _rewardAmounts = new uint256[](1);\n        _rewardAmounts[0] = goldnuggetAmount.mul(rewardMultiplier) / REWARD_TOKEN_DIVISOR;\n        return (_rewardTokens, _rewardAmounts);\n    }\n\n    modifier onlyMCV2 {\n        require(\n            msg.sender == GOLDMINER_V2,\n            \"Only MCV2 can call this function.\"\n        );\n        _;\n    }\n  \n}\n"
      },
      "contracts/MiniMinerV2.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity 0.6.12;\npragma experimental ABIEncoderV2;\n\nimport \"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\";\nimport \"@boringcrypto/boring-solidity/contracts/BoringBatchable.sol\";\nimport \"@boringcrypto/boring-solidity/contracts/BoringOwnable.sol\";\nimport \"./libraries/SignedSafeMath.sol\";\nimport \"./interfaces/IRewarder.sol\";\nimport \"./interfaces/IGoldMiner.sol\";\n\ninterface IMigratorMiner {\n    // Take the current LP token address and return the new LP token address.\n    // Migrator should have full access to the caller's LP token.\n    function migrate(IERC20 token) external returns (IERC20);\n}\n\n/// @notice The (older) GoldMiner contract gives out a constant number of GOLN tokens per block.\n/// It is the only address with minting rights for GOLN.\n/// The idea for this GoldMiner V2 (MCV2) contract is therefore to be the owner of a dummy token\n/// that is deposited into the GoldMiner V1 (MCV1) contract.\n/// The allocation point for this pool on MCV1 is the total allocation point for all pools that receive double incentives.\ncontract MiniMinerV2 is BoringOwnable, BoringBatchable {\n    using BoringMath for uint256;\n    using BoringMath128 for uint128;\n    using BoringERC20 for IERC20;\n    using SignedSafeMath for int256;\n\n    /// @notice Info of each MCV2 user.\n    /// `amount` LP token amount the user has provided.\n    /// `rewardDebt` The amount of GOLN entitled to the user.\n    struct UserInfo {\n        uint256 amount;\n        int256 rewardDebt;\n    }\n\n    /// @notice Info of each MCV2 pool.\n    /// `allocPoint` The amount of allocation points assigned to the pool.\n    /// Also known as the amount of GOLN to distribute per block.\n    struct PoolInfo {\n        uint128 accGoldNuggetPerShare;\n        uint64 lastRewardTime;\n        uint64 allocPoint;\n    }\n\n    /// @notice Address of GOLN contract.\n    IERC20 public immutable GOLN;\n    // @notice The migrator contract. It has a lot of power. Can only be set through governance (owner).\n    IMigratorMiner public migrator;\n\n    /// @notice Info of each MCV2 pool.\n    PoolInfo[] public poolInfo;\n    /// @notice Address of the LP token for each MCV2 pool.\n    IERC20[] public lpToken;\n    /// @notice Address of each `IRewarder` contract in MCV2.\n    IRewarder[] public rewarder;\n\n    /// @notice Info of each user that stakes LP tokens.\n    mapping (uint256 => mapping (address => UserInfo)) public userInfo;\n    /// @dev Total allocation points. Must be the sum of all allocation points in all pools.\n    uint256 public totalAllocPoint;\n\n    uint256 public goldnuggetPerSecond;\n    uint256 private constant ACC_GOLN_PRECISION = 1e12;\n\n    event Deposit(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\n    event Withdraw(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\n    event EmergencyWithdraw(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\n    event Harvest(address indexed user, uint256 indexed pid, uint256 amount);\n    event LogPoolAddition(uint256 indexed pid, uint256 allocPoint, IERC20 indexed lpToken, IRewarder indexed rewarder);\n    event LogSetPool(uint256 indexed pid, uint256 allocPoint, IRewarder indexed rewarder, bool overwrite);\n    event LogUpdatePool(uint256 indexed pid, uint64 lastRewardTime, uint256 lpSupply, uint256 accGoldNuggetPerShare);\n    event LogGoldNuggetPerSecond(uint256 goldnuggetPerSecond);\n\n    /// @param _goldnugget The GOLN token contract address.\n    constructor(IERC20 _goldnugget) public {\n        GOLN = _goldnugget;\n    }\n\n    /// @notice Returns the number of MCV2 pools.\n    function poolLength() public view returns (uint256 pools) {\n        pools = poolInfo.length;\n    }\n\n    /// @notice Add a new LP to the pool. Can only be called by the owner.\n    /// DO NOT add the same LP token more than once. Rewards will be messed up if you do.\n    /// @param allocPoint AP of the new pool.\n    /// @param _lpToken Address of the LP ERC-20 token.\n    /// @param _rewarder Address of the rewarder delegate.\n    function add(uint256 allocPoint, IERC20 _lpToken, IRewarder _rewarder) public onlyOwner {\n        totalAllocPoint = totalAllocPoint.add(allocPoint);\n        lpToken.push(_lpToken);\n        rewarder.push(_rewarder);\n\n        poolInfo.push(PoolInfo({\n            allocPoint: allocPoint.to64(),\n            lastRewardTime: block.timestamp.to64(),\n            accGoldNuggetPerShare: 0\n        }));\n        emit LogPoolAddition(lpToken.length.sub(1), allocPoint, _lpToken, _rewarder);\n    }\n\n    /// @notice Update the given pool's GOLN allocation point and `IRewarder` contract. Can only be called by the owner.\n    /// @param _pid The index of the pool. See `poolInfo`.\n    /// @param _allocPoint New AP of the pool.\n    /// @param _rewarder Address of the rewarder delegate.\n    /// @param overwrite True if _rewarder should be `set`. Otherwise `_rewarder` is ignored.\n    function set(uint256 _pid, uint256 _allocPoint, IRewarder _rewarder, bool overwrite) public onlyOwner {\n        totalAllocPoint = totalAllocPoint.sub(poolInfo[_pid].allocPoint).add(_allocPoint);\n        poolInfo[_pid].allocPoint = _allocPoint.to64();\n        if (overwrite) { rewarder[_pid] = _rewarder; }\n        emit LogSetPool(_pid, _allocPoint, overwrite ? _rewarder : rewarder[_pid], overwrite);\n    }\n\n    /// @notice Sets the goldnugget per second to be distributed. Can only be called by the owner.\n    /// @param _goldnuggetPerSecond The amount of GoldNugget to be distributed per second.\n    function setGoldNuggetPerSecond(uint256 _goldnuggetPerSecond) public onlyOwner {\n        goldnuggetPerSecond = _goldnuggetPerSecond;\n        emit LogGoldNuggetPerSecond(_goldnuggetPerSecond);\n    }\n\n    /// @notice Set the `migrator` contract. Can only be called by the owner.\n    /// @param _migrator The contract address to set.\n    function setMigrator(IMigratorMiner _migrator) public onlyOwner {\n        migrator = _migrator;\n    }\n\n    /// @notice Migrate LP token to another LP contract through the `migrator` contract.\n    /// @param _pid The index of the pool. See `poolInfo`.\n    function migrate(uint256 _pid) public {\n        require(address(migrator) != address(0), \"GoldMinerV2: no migrator set\");\n        IERC20 _lpToken = lpToken[_pid];\n        uint256 bal = _lpToken.balanceOf(address(this));\n        _lpToken.approve(address(migrator), bal);\n        IERC20 newLpToken = migrator.migrate(_lpToken);\n        require(bal == newLpToken.balanceOf(address(this)), \"GoldMinerV2: migrated balance must match\");\n        lpToken[_pid] = newLpToken;\n    }\n\n    /// @notice View function to see pending GOLN on frontend.\n    /// @param _pid The index of the pool. See `poolInfo`.\n    /// @param _user Address of user.\n    /// @return pending GOLN reward for a given user.\n    function pendingGoldNugget(uint256 _pid, address _user) external view returns (uint256 pending) {\n        PoolInfo memory pool = poolInfo[_pid];\n        UserInfo storage user = userInfo[_pid][_user];\n        uint256 accGoldNuggetPerShare = pool.accGoldNuggetPerShare;\n        uint256 lpSupply = lpToken[_pid].balanceOf(address(this));\n        if (block.timestamp > pool.lastRewardTime && lpSupply != 0) {\n            uint256 time = block.timestamp.sub(pool.lastRewardTime);\n            uint256 goldnuggetReward = time.mul(goldnuggetPerSecond).mul(pool.allocPoint) / totalAllocPoint;\n            accGoldNuggetPerShare = accGoldNuggetPerShare.add(goldnuggetReward.mul(ACC_GOLN_PRECISION) / lpSupply);\n        }\n        pending = int256(user.amount.mul(accGoldNuggetPerShare) / ACC_GOLN_PRECISION).sub(user.rewardDebt).toUInt256();\n    }\n\n    /// @notice Update reward variables for all pools. Be careful of gas spending!\n    /// @param pids Pool IDs of all to be updated. Make sure to update all active pools.\n    function massUpdatePools(uint256[] calldata pids) external {\n        uint256 len = pids.length;\n        for (uint256 i = 0; i < len; ++i) {\n            updatePool(pids[i]);\n        }\n    }\n\n    /// @notice Update reward variables of the given pool.\n    /// @param pid The index of the pool. See `poolInfo`.\n    /// @return pool Returns the pool that was updated.\n    function updatePool(uint256 pid) public returns (PoolInfo memory pool) {\n        pool = poolInfo[pid];\n        if (block.timestamp > pool.lastRewardTime) {\n            uint256 lpSupply = lpToken[pid].balanceOf(address(this));\n            if (lpSupply > 0) {\n                uint256 time = block.timestamp.sub(pool.lastRewardTime);\n                uint256 goldnuggetReward = time.mul(goldnuggetPerSecond).mul(pool.allocPoint) / totalAllocPoint;\n                pool.accGoldNuggetPerShare = pool.accGoldNuggetPerShare.add((goldnuggetReward.mul(ACC_GOLN_PRECISION) / lpSupply).to128());\n            }\n            pool.lastRewardTime = block.timestamp.to64();\n            poolInfo[pid] = pool;\n            emit LogUpdatePool(pid, pool.lastRewardTime, lpSupply, pool.accGoldNuggetPerShare);\n        }\n    }\n\n    /// @notice Deposit LP tokens to MCV2 for GOLN allocation.\n    /// @param pid The index of the pool. See `poolInfo`.\n    /// @param amount LP token amount to deposit.\n    /// @param to The receiver of `amount` deposit benefit.\n    function deposit(uint256 pid, uint256 amount, address to) public {\n        PoolInfo memory pool = updatePool(pid);\n        UserInfo storage user = userInfo[pid][to];\n\n        // Effects\n        user.amount = user.amount.add(amount);\n        user.rewardDebt = user.rewardDebt.add(int256(amount.mul(pool.accGoldNuggetPerShare) / ACC_GOLN_PRECISION));\n\n        // Interactions\n        IRewarder _rewarder = rewarder[pid];\n        if (address(_rewarder) != address(0)) {\n            _rewarder.onGoldNuggetReward(pid, to, to, 0, user.amount);\n        }\n\n        lpToken[pid].safeTransferFrom(msg.sender, address(this), amount);\n\n        emit Deposit(msg.sender, pid, amount, to);\n    }\n\n    /// @notice Withdraw LP tokens from MCV2.\n    /// @param pid The index of the pool. See `poolInfo`.\n    /// @param amount LP token amount to withdraw.\n    /// @param to Receiver of the LP tokens.\n    function withdraw(uint256 pid, uint256 amount, address to) public {\n        PoolInfo memory pool = updatePool(pid);\n        UserInfo storage user = userInfo[pid][msg.sender];\n\n        // Effects\n        user.rewardDebt = user.rewardDebt.sub(int256(amount.mul(pool.accGoldNuggetPerShare) / ACC_GOLN_PRECISION));\n        user.amount = user.amount.sub(amount);\n\n        // Interactions\n        IRewarder _rewarder = rewarder[pid];\n        if (address(_rewarder) != address(0)) {\n            _rewarder.onGoldNuggetReward(pid, msg.sender, to, 0, user.amount);\n        }\n        \n        lpToken[pid].safeTransfer(to, amount);\n\n        emit Withdraw(msg.sender, pid, amount, to);\n    }\n\n    /// @notice Harvest proceeds for transaction sender to `to`.\n    /// @param pid The index of the pool. See `poolInfo`.\n    /// @param to Receiver of GOLN rewards.\n    function harvest(uint256 pid, address to) public {\n        PoolInfo memory pool = updatePool(pid);\n        UserInfo storage user = userInfo[pid][msg.sender];\n        int256 accumulatedGoldNugget = int256(user.amount.mul(pool.accGoldNuggetPerShare) / ACC_GOLN_PRECISION);\n        uint256 _pendingGoldNugget = accumulatedGoldNugget.sub(user.rewardDebt).toUInt256();\n\n        // Effects\n        user.rewardDebt = accumulatedGoldNugget;\n\n        // Interactions\n        if (_pendingGoldNugget != 0) {\n            GOLN.safeTransfer(to, _pendingGoldNugget);\n        }\n        \n        IRewarder _rewarder = rewarder[pid];\n        if (address(_rewarder) != address(0)) {\n            _rewarder.onGoldNuggetReward( pid, msg.sender, to, _pendingGoldNugget, user.amount);\n        }\n\n        emit Harvest(msg.sender, pid, _pendingGoldNugget);\n    }\n    \n    /// @notice Withdraw LP tokens from MCV2 and harvest proceeds for transaction sender to `to`.\n    /// @param pid The index of the pool. See `poolInfo`.\n    /// @param amount LP token amount to withdraw.\n    /// @param to Receiver of the LP tokens and GOLN rewards.\n    function withdrawAndHarvest(uint256 pid, uint256 amount, address to) public {\n        PoolInfo memory pool = updatePool(pid);\n        UserInfo storage user = userInfo[pid][msg.sender];\n        int256 accumulatedGoldNugget = int256(user.amount.mul(pool.accGoldNuggetPerShare) / ACC_GOLN_PRECISION);\n        uint256 _pendingGoldNugget = accumulatedGoldNugget.sub(user.rewardDebt).toUInt256();\n\n        // Effects\n        user.rewardDebt = accumulatedGoldNugget.sub(int256(amount.mul(pool.accGoldNuggetPerShare) / ACC_GOLN_PRECISION));\n        user.amount = user.amount.sub(amount);\n        \n        // Interactions\n        GOLN.safeTransfer(to, _pendingGoldNugget);\n\n        IRewarder _rewarder = rewarder[pid];\n        if (address(_rewarder) != address(0)) {\n            _rewarder.onGoldNuggetReward(pid, msg.sender, to, _pendingGoldNugget, user.amount);\n        }\n\n        lpToken[pid].safeTransfer(to, amount);\n\n        emit Withdraw(msg.sender, pid, amount, to);\n        emit Harvest(msg.sender, pid, _pendingGoldNugget);\n    }\n\n    /// @notice Withdraw without caring about rewards. EMERGENCY ONLY.\n    /// @param pid The index of the pool. See `poolInfo`.\n    /// @param to Receiver of the LP tokens.\n    function emergencyWithdraw(uint256 pid, address to) public {\n        UserInfo storage user = userInfo[pid][msg.sender];\n        uint256 amount = user.amount;\n        user.amount = 0;\n        user.rewardDebt = 0;\n\n        IRewarder _rewarder = rewarder[pid];\n        if (address(_rewarder) != address(0)) {\n            _rewarder.onGoldNuggetReward(pid, msg.sender, to, 0, 0);\n        }\n\n        // Note: transfer can fail or succeed if `amount` is zero.\n        lpToken[pid].safeTransfer(to, amount);\n        emit EmergencyWithdraw(msg.sender, pid, amount, to);\n    }\n}\n"
      },
      "contracts/mocks/RewarderBrokenMock.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity 0.6.12;\nimport \"../interfaces/IRewarder.sol\";\n\n\ncontract RewarderBrokenMock is IRewarder {\n\n    function onGoldNuggetReward (uint256, address, address, uint256, uint256) override external {\n        revert();\n    }\n\n    function pendingTokens(uint256 pid, address user, uint256 goldnuggetAmount) override external view returns (IERC20[] memory rewardTokens, uint256[] memory rewardAmounts){\n        revert();\n    }\n  \n}\n"
      }
    },
    "settings": {
      "optimizer": {
        "enabled": true,
        "runs": 200
      },
      "outputSelection": {
        "*": {
          "*": [
            "abi",
            "evm.bytecode",
            "evm.deployedBytecode",
            "evm.methodIdentifiers",
            "metadata",
            "devdoc",
            "userdoc",
            "storageLayout",
            "evm.gasEstimates"
          ],
          "": [
            "ast"
          ]
        }
      },
      "metadata": {
        "useLiteralContent": true
      }
    }
  },
  "output": {
    "contracts": {
      "@boringcrypto/boring-solidity/contracts/BoringBatchable.sol": {
        "BaseBoringBatchable": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes[]",
                  "name": "calls",
                  "type": "bytes[]"
                },
                {
                  "internalType": "bool",
                  "name": "revertOnFail",
                  "type": "bool"
                }
              ],
              "name": "batch",
              "outputs": [
                {
                  "internalType": "bool[]",
                  "name": "successes",
                  "type": "bool[]"
                },
                {
                  "internalType": "bytes[]",
                  "name": "results",
                  "type": "bytes[]"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b5061051a806100206000396000f3fe60806040526004361061001e5760003560e01c8063d2423b5114610023575b600080fd5b610036610031366004610250565b61004d565b6040516100449291906103ab565b60405180910390f35b6060808367ffffffffffffffff8111801561006757600080fd5b50604051908082528060200260200182016040528015610091578160200160208202803683370190505b5091508367ffffffffffffffff811180156100ab57600080fd5b506040519080825280602002602001820160405280156100df57816020015b60608152602001906001900390816100ca5790505b50905060005b848110156101df5760006060308888858181106100fe57fe5b9050602002810190610110919061045f565b60405161011e92919061039b565b600060405180830381855af49150503d8060008114610159576040519150601f19603f3d011682016040523d82523d6000602084013e61015e565b606091505b5091509150818061016d575085155b610176826101e8565b9061019d5760405162461bcd60e51b81526004016101949190610445565b60405180910390fd5b50818584815181106101ab57fe5b602002602001019015159081151581525050808484815181106101ca57fe5b602090810291909101015250506001016100e5565b50935093915050565b606060448251101561022e575060408051808201909152601d81527f5472616e73616374696f6e2072657665727465642073696c656e746c79000000602082015261024b565b6004820191508180602001905181019061024891906102d4565b90505b919050565b600080600060408486031215610264578283fd5b833567ffffffffffffffff8082111561027b578485fd5b818601915086601f83011261028e578485fd5b81358181111561029c578586fd5b87602080830285010111156102af578586fd5b6020928301955093505084013580151581146102c9578182fd5b809150509250925092565b6000602082840312156102e5578081fd5b815167ffffffffffffffff808211156102fc578283fd5b818401915084601f83011261030f578283fd5b81518181111561031d578384fd5b604051601f8201601f19168101602001838111828210171561033d578586fd5b604052818152838201602001871015610354578485fd5b6103658260208301602087016104b4565b9695505050505050565b600081518084526103878160208601602086016104b4565b601f01601f19169290920160200192915050565b6000828483379101908152919050565b604080825283519082018190526000906020906060840190828701845b828110156103e65781511515845292840192908401906001016103c8565b505050838103828501528085516103fd81846104ab565b91508192508381028201848801865b8381101561043657858303855261042483835161036f565b9487019492509086019060010161040c565b50909998505050505050505050565b600060208252610458602083018461036f565b9392505050565b6000808335601e19843603018112610475578283fd5b83018035915067ffffffffffffffff82111561048f578283fd5b6020019150368190038213156104a457600080fd5b9250929050565b90815260200190565b60005b838110156104cf5781810151838201526020016104b7565b838111156104de576000848401525b5050505056fea264697066735822122023081921a5d4fa6effbd91cd9e7750a1981eece7fc9de410a0e70d694392648564736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x51A DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xD2423B51 EQ PUSH2 0x23 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x36 PUSH2 0x31 CALLDATASIZE PUSH1 0x4 PUSH2 0x250 JUMP JUMPDEST PUSH2 0x4D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x44 SWAP3 SWAP2 SWAP1 PUSH2 0x3AB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 DUP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x91 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP2 POP DUP4 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xDF JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xCA JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x1DF JUMPI PUSH1 0x0 PUSH1 0x60 ADDRESS DUP9 DUP9 DUP6 DUP2 DUP2 LT PUSH2 0xFE JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x110 SWAP2 SWAP1 PUSH2 0x45F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11E SWAP3 SWAP2 SWAP1 PUSH2 0x39B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x159 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x15E JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 PUSH2 0x16D JUMPI POP DUP6 ISZERO JUMPDEST PUSH2 0x176 DUP3 PUSH2 0x1E8 JUMP JUMPDEST SWAP1 PUSH2 0x19D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x194 SWAP2 SWAP1 PUSH2 0x445 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP2 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1AB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 ISZERO ISZERO SWAP1 DUP2 ISZERO ISZERO DUP2 MSTORE POP POP DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1CA JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0xE5 JUMP JUMPDEST POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x44 DUP3 MLOAD LT ISZERO PUSH2 0x22E JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1D DUP2 MSTORE PUSH32 0x5472616E73616374696F6E2072657665727465642073696C656E746C79000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x24B JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SWAP2 POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x248 SWAP2 SWAP1 PUSH2 0x2D4 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x264 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x27B JUMPI DUP5 DUP6 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x28E JUMPI DUP5 DUP6 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x29C JUMPI DUP6 DUP7 REVERT JUMPDEST DUP8 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x2AF JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH1 0x20 SWAP3 DUP4 ADD SWAP6 POP SWAP4 POP POP DUP5 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x2C9 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E5 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2FC JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x30F JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x31D JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x20 ADD DUP4 DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x33D JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD PUSH1 0x20 ADD DUP8 LT ISZERO PUSH2 0x354 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x365 DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x4B4 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x387 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x4B4 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 DUP4 CALLDATACOPY SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP4 MLOAD SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x20 SWAP1 PUSH1 0x60 DUP5 ADD SWAP1 DUP3 DUP8 ADD DUP5 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x3E6 JUMPI DUP2 MLOAD ISZERO ISZERO DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3C8 JUMP JUMPDEST POP POP POP DUP4 DUP2 SUB DUP3 DUP6 ADD MSTORE DUP1 DUP6 MLOAD PUSH2 0x3FD DUP2 DUP5 PUSH2 0x4AB JUMP JUMPDEST SWAP2 POP DUP2 SWAP3 POP DUP4 DUP2 MUL DUP3 ADD DUP5 DUP9 ADD DUP7 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x436 JUMPI DUP6 DUP4 SUB DUP6 MSTORE PUSH2 0x424 DUP4 DUP4 MLOAD PUSH2 0x36F JUMP JUMPDEST SWAP5 DUP8 ADD SWAP5 SWAP3 POP SWAP1 DUP7 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x40C JUMP JUMPDEST POP SWAP1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x458 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x36F JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x475 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x48F JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x4A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4CF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4B7 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x4DE JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x23 ADDMOD NOT 0x21 0xA5 0xD4 STATICCALL PUSH15 0xFFBD91CD9E7750A1981EECE7FC9DE4 LT LOG0 0xE7 0xD PUSH10 0x4392648564736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "268:1549:0:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "60806040526004361061001e5760003560e01c8063d2423b5114610023575b600080fd5b610036610031366004610250565b61004d565b6040516100449291906103ab565b60405180910390f35b6060808367ffffffffffffffff8111801561006757600080fd5b50604051908082528060200260200182016040528015610091578160200160208202803683370190505b5091508367ffffffffffffffff811180156100ab57600080fd5b506040519080825280602002602001820160405280156100df57816020015b60608152602001906001900390816100ca5790505b50905060005b848110156101df5760006060308888858181106100fe57fe5b9050602002810190610110919061045f565b60405161011e92919061039b565b600060405180830381855af49150503d8060008114610159576040519150601f19603f3d011682016040523d82523d6000602084013e61015e565b606091505b5091509150818061016d575085155b610176826101e8565b9061019d5760405162461bcd60e51b81526004016101949190610445565b60405180910390fd5b50818584815181106101ab57fe5b602002602001019015159081151581525050808484815181106101ca57fe5b602090810291909101015250506001016100e5565b50935093915050565b606060448251101561022e575060408051808201909152601d81527f5472616e73616374696f6e2072657665727465642073696c656e746c79000000602082015261024b565b6004820191508180602001905181019061024891906102d4565b90505b919050565b600080600060408486031215610264578283fd5b833567ffffffffffffffff8082111561027b578485fd5b818601915086601f83011261028e578485fd5b81358181111561029c578586fd5b87602080830285010111156102af578586fd5b6020928301955093505084013580151581146102c9578182fd5b809150509250925092565b6000602082840312156102e5578081fd5b815167ffffffffffffffff808211156102fc578283fd5b818401915084601f83011261030f578283fd5b81518181111561031d578384fd5b604051601f8201601f19168101602001838111828210171561033d578586fd5b604052818152838201602001871015610354578485fd5b6103658260208301602087016104b4565b9695505050505050565b600081518084526103878160208601602086016104b4565b601f01601f19169290920160200192915050565b6000828483379101908152919050565b604080825283519082018190526000906020906060840190828701845b828110156103e65781511515845292840192908401906001016103c8565b505050838103828501528085516103fd81846104ab565b91508192508381028201848801865b8381101561043657858303855261042483835161036f565b9487019492509086019060010161040c565b50909998505050505050505050565b600060208252610458602083018461036f565b9392505050565b6000808335601e19843603018112610475578283fd5b83018035915067ffffffffffffffff82111561048f578283fd5b6020019150368190038213156104a457600080fd5b9250929050565b90815260200190565b60005b838110156104cf5781810151838201526020016104b7565b838111156104de576000848401525b5050505056fea264697066735822122023081921a5d4fa6effbd91cd9e7750a1981eece7fc9de410a0e70d694392648564736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xD2423B51 EQ PUSH2 0x23 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x36 PUSH2 0x31 CALLDATASIZE PUSH1 0x4 PUSH2 0x250 JUMP JUMPDEST PUSH2 0x4D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x44 SWAP3 SWAP2 SWAP1 PUSH2 0x3AB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 DUP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x91 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP2 POP DUP4 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xDF JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xCA JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x1DF JUMPI PUSH1 0x0 PUSH1 0x60 ADDRESS DUP9 DUP9 DUP6 DUP2 DUP2 LT PUSH2 0xFE JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x110 SWAP2 SWAP1 PUSH2 0x45F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11E SWAP3 SWAP2 SWAP1 PUSH2 0x39B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x159 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x15E JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 PUSH2 0x16D JUMPI POP DUP6 ISZERO JUMPDEST PUSH2 0x176 DUP3 PUSH2 0x1E8 JUMP JUMPDEST SWAP1 PUSH2 0x19D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x194 SWAP2 SWAP1 PUSH2 0x445 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP2 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1AB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 ISZERO ISZERO SWAP1 DUP2 ISZERO ISZERO DUP2 MSTORE POP POP DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1CA JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0xE5 JUMP JUMPDEST POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x44 DUP3 MLOAD LT ISZERO PUSH2 0x22E JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1D DUP2 MSTORE PUSH32 0x5472616E73616374696F6E2072657665727465642073696C656E746C79000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x24B JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SWAP2 POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x248 SWAP2 SWAP1 PUSH2 0x2D4 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x264 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x27B JUMPI DUP5 DUP6 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x28E JUMPI DUP5 DUP6 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x29C JUMPI DUP6 DUP7 REVERT JUMPDEST DUP8 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x2AF JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH1 0x20 SWAP3 DUP4 ADD SWAP6 POP SWAP4 POP POP DUP5 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x2C9 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E5 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2FC JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x30F JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x31D JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x20 ADD DUP4 DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x33D JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD PUSH1 0x20 ADD DUP8 LT ISZERO PUSH2 0x354 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x365 DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x4B4 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x387 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x4B4 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 DUP4 CALLDATACOPY SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP4 MLOAD SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x20 SWAP1 PUSH1 0x60 DUP5 ADD SWAP1 DUP3 DUP8 ADD DUP5 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x3E6 JUMPI DUP2 MLOAD ISZERO ISZERO DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3C8 JUMP JUMPDEST POP POP POP DUP4 DUP2 SUB DUP3 DUP6 ADD MSTORE DUP1 DUP6 MLOAD PUSH2 0x3FD DUP2 DUP5 PUSH2 0x4AB JUMP JUMPDEST SWAP2 POP DUP2 SWAP3 POP DUP4 DUP2 MUL DUP3 ADD DUP5 DUP9 ADD DUP7 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x436 JUMPI DUP6 DUP4 SUB DUP6 MSTORE PUSH2 0x424 DUP4 DUP4 MLOAD PUSH2 0x36F JUMP JUMPDEST SWAP5 DUP8 ADD SWAP5 SWAP3 POP SWAP1 DUP7 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x40C JUMP JUMPDEST POP SWAP1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x458 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x36F JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x475 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x48F JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x4A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4CF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4B7 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x4DE JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x23 ADDMOD NOT 0x21 0xA5 0xD4 STATICCALL PUSH15 0xFFBD91CD9E7750A1981EECE7FC9DE4 LT LOG0 0xE7 0xD PUSH10 0x4392648564736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "268:1549:0:-:0;;;;;;;;;;;;;;;;;;;;;1260:554;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;1343:23;;1451:5;1440:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1440:24:0;-1:-1:-1;1428:36:0;-1:-1:-1;1497:5:0;1485:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1475:35;;1526:9;1521:286;1541:16;;;1521:286;;;1580:12;1594:19;1625:4;1644:5;;1650:1;1644:8;;;;;;;;;;;;;;;;;;:::i;:::-;1617:36;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1579:74;;;;1676:7;:24;;;;1688:12;1687:13;1676:24;1702:21;1716:6;1702:13;:21::i;:::-;1668:56;;;;;-1:-1:-1;;;1668:56:0;;;;;;;;:::i;:::-;;;;;;;;;;1754:7;1739:9;1749:1;1739:12;;;;;;;;;;;;;:22;;;;;;;;;;;1789:6;1776:7;1784:1;1776:10;;;;;;;;;;;;;;;;;:19;-1:-1:-1;;1559:3:0;;1521:286;;;;1260:554;;;;;;:::o;304:496::-;376:13;539:2;518:11;:18;:23;514:67;;;-1:-1:-1;543:38:0;;;;;;;;;;;;;;;;;;;514:67;685:4;672:11;668:22;653:37;;729:11;718:33;;;;;;;;;;;;:::i;:::-;711:40;;304:496;;;;:::o;976:538:-1:-;;;;1140:2;1128:9;1119:7;1115:23;1111:32;1108:2;;;-1:-1;;1146:12;1108:2;1204:17;1191:31;1242:18;;1234:6;1231:30;1228:2;;;-1:-1;;1264:12;1228:2;1376:6;1365:9;1361:22;;;162:3;155:4;147:6;143:17;139:27;129:2;;-1:-1;;170:12;129:2;213:6;200:20;1242:18;232:6;229:30;226:2;;;-1:-1;;262:12;226:2;357:3;306:4;;341:6;337:17;298:6;323:32;;320:41;317:2;;;-1:-1;;364:12;317:2;306:4;294:17;;;;-1:-1;1284:109;-1:-1;;1466:22;;456:20;9459:13;;9452:21;10077:32;;10067:2;;-1:-1;;10113:12;10067:2;1438:60;;;;1102:412;;;;;:::o;1521:362::-;;1646:2;1634:9;1625:7;1621:23;1617:32;1614:2;;;-1:-1;;1652:12;1614:2;1703:17;1697:24;1741:18;;1733:6;1730:30;1727:2;;;-1:-1;;1763:12;1727:2;1850:6;1839:9;1835:22;;;637:3;630:4;622:6;618:17;614:27;604:2;;-1:-1;;645:12;604:2;685:6;679:13;1741:18;7225:6;7222:30;7219:2;;;-1:-1;;7255:12;7219:2;6888;6882:9;7328;7309:17;;-1:-1;;7305:33;6914:17;;1646:2;6914:17;6974:34;;;7010:22;;;6971:62;6968:2;;;-1:-1;;7036:12;6968:2;6888;7055:22;778:21;;;878:16;;;1646:2;878:16;875:25;-1:-1;872:2;;;-1:-1;;903:12;872:2;923:39;955:6;1646:2;854:5;850:16;1646:2;820:6;816:17;923:39;:::i;:::-;1783:84;1608:275;-1:-1;;;;;;1608:275::o;4354:323::-;;4486:5;7840:12;8655:6;8650:3;8643:19;4569:52;4614:6;8692:4;8687:3;8683:14;8692:4;4595:5;4591:16;4569:52;:::i;:::-;7328:9;9984:14;-1:-1;;9980:28;4633:39;;;;8692:4;4633:39;;4434:243;-1:-1;;4434:243::o;5038:291::-;;9567:6;9562:3;9557;9544:30;9605:16;;9598:27;;;9605:16;5182:147;-1:-1;5182:147::o;5336:653::-;5603:2;5617:47;;;7840:12;;5588:18;;;8643:19;;;5336:653;;8692:4;;8683:14;;;;7530;;;5336:653;2676:251;2701:6;2698:1;2695:13;2676:251;;;2762:13;;9459;9452:21;3967:34;;2032:14;;;;8377;;;;2723:1;2716:9;2676:251;;;2680:14;;;5828:9;5822:4;5818:20;8692:4;5802:9;5798:18;5791:48;5853:126;3204:5;7840:12;3223:95;3311:6;3306:3;3223:95;:::i;:::-;3216:102;;;;;8692:4;3375:6;3371:17;3366:3;3362:27;8692:4;3469:5;7530:14;-1:-1;3508:357;3533:6;3530:1;3527:13;3508:357;;;3595:9;3589:4;3585:20;3580:3;3573:33;2180:64;2240:3;3640:6;3634:13;2180:64;:::i;:::-;3844:14;;;;3654:90;-1:-1;8377:14;;;;2723:1;3548:9;3508:357;;;-1:-1;5845:134;;5574:415;-1:-1;;;;;;;;;5574:415::o;5996:310::-;;6143:2;6164:17;6157:47;6218:78;6143:2;6132:9;6128:18;6282:6;6218:78;:::i;:::-;6210:86;6114:192;-1:-1;;;6114:192::o;6313:506::-;;;6448:11;6435:25;6499:48;;6523:8;6507:14;6503:29;6499:48;6479:18;6475:73;6465:2;;-1:-1;;6552:12;6465:2;6579:33;;6633:18;;;-1:-1;6671:18;6660:30;;6657:2;;;-1:-1;;6693:12;6657:2;6538:4;6721:13;;-1:-1;6507:14;6753:38;;;6743:49;;6740:2;;;6805:1;;6795:12;6740:2;6403:416;;;;;:::o;8528:175::-;8643:19;;;8692:4;8683:14;;8636:67::o;9640:268::-;9705:1;9712:101;9726:6;9723:1;9720:13;9712:101;;;9793:11;;;9787:18;9774:11;;;9767:39;9748:2;9741:10;9712:101;;;9828:6;9825:1;9822:13;9819:2;;;9705:1;9884:6;9879:3;9875:16;9868:27;9819:2;;9689:219;;;:::o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "261200",
                "executionCost": "300",
                "totalCost": "261500"
              },
              "external": {
                "batch(bytes[],bool)": "infinite"
              },
              "internal": {
                "_getRevertMsg(bytes memory)": "infinite"
              }
            },
            "methodIdentifiers": {
              "batch(bytes[],bool)": "d2423b51"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"calls\",\"type\":\"bytes[]\"},{\"internalType\":\"bool\",\"name\":\"revertOnFail\",\"type\":\"bool\"}],\"name\":\"batch\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"successes\",\"type\":\"bool[]\"},{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@boringcrypto/boring-solidity/contracts/BoringBatchable.sol\":\"BaseBoringBatchable\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@boringcrypto/boring-solidity/contracts/BoringBatchable.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\r\\n// Audit on 5-Jan-2021 by Keno and BoringCrypto\\r\\n\\r\\n// P1 - P3: OK\\r\\npragma solidity 0.6.12;\\r\\npragma experimental ABIEncoderV2;\\r\\n// solhint-disable avoid-low-level-calls\\r\\n\\r\\nimport \\\"./libraries/BoringERC20.sol\\\";\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BaseBoringBatchable {\\r\\n    function _getRevertMsg(bytes memory _returnData) internal pure returns (string memory) {\\r\\n        // If the _res length is less than 68, then the transaction failed silently (without a revert message)\\r\\n        if (_returnData.length < 68) return \\\"Transaction reverted silently\\\";\\r\\n\\r\\n        assembly {\\r\\n            // Slice the sighash.\\r\\n            _returnData := add(_returnData, 0x04)\\r\\n        }\\r\\n        return abi.decode(_returnData, (string)); // All that remains is the revert string\\r\\n    }    \\r\\n    \\r\\n    // F3 - F9: OK\\r\\n    // F1: External is ok here because this is the batch function, adding it to a batch makes no sense\\r\\n    // F2: Calls in the batch may be payable, delegatecall operates in the same context, so each call in the batch has access to msg.value\\r\\n    // C1 - C21: OK\\r\\n    // C3: The length of the loop is fully under user control, so can't be exploited\\r\\n    // C7: Delegatecall is only used on the same contract, so it's safe\\r\\n    function batch(bytes[] calldata calls, bool revertOnFail) external payable returns(bool[] memory successes, bytes[] memory results) {\\r\\n        // Interactions\\r\\n        successes = new bool[](calls.length);\\r\\n        results = new bytes[](calls.length);\\r\\n        for (uint256 i = 0; i < calls.length; i++) {\\r\\n            (bool success, bytes memory result) = address(this).delegatecall(calls[i]);\\r\\n            require(success || !revertOnFail, _getRevertMsg(result));\\r\\n            successes[i] = success;\\r\\n            results[i] = result;\\r\\n        }\\r\\n    }\\r\\n}\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BoringBatchable is BaseBoringBatchable {\\r\\n    // F1 - F9: OK\\r\\n    // F6: Parameters can be used front-run the permit and the user's permit will fail (due to nonce or other revert)\\r\\n    //     if part of a batch this could be used to grief once as the second call would not need the permit\\r\\n    // C1 - C21: OK\\r\\n    function permitToken(IERC20 token, address from, address to, uint256 amount, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {\\r\\n        // Interactions\\r\\n        // X1 - X5\\r\\n        token.permit(from, to, amount, deadline, v, r, s);\\r\\n    }\\r\\n}\",\"keccak256\":\"0xe0b0316b015447ee28c6b7d96c4347b410a66e5d26e922ef3bcccc22f3b4d590\",\"license\":\"UNLICENSED\"},\"@boringcrypto/boring-solidity/contracts/interfaces/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity 0.6.12;\\r\\n\\r\\ninterface IERC20 {\\r\\n    function totalSupply() external view returns (uint256);\\r\\n    function balanceOf(address account) external view returns (uint256);\\r\\n    function allowance(address owner, address spender) external view returns (uint256);\\r\\n    function approve(address spender, uint256 amount) external returns (bool);\\r\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\r\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\r\\n\\r\\n    // EIP 2612\\r\\n    function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;\\r\\n}\",\"keccak256\":\"0x8004f86e4536cca55b8eeb2621fe18e1ee57d779396ddef50bce5bf70fb59867\",\"license\":\"MIT\"},\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\r\\npragma solidity 0.6.12;\\r\\n\\r\\nimport \\\"../interfaces/IERC20.sol\\\";\\r\\n\\r\\nlibrary BoringERC20 {\\r\\n    function safeSymbol(IERC20 token) internal view returns(string memory) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x95d89b41));\\r\\n        return success && data.length > 0 ? abi.decode(data, (string)) : \\\"???\\\";\\r\\n    }\\r\\n\\r\\n    function safeName(IERC20 token) internal view returns(string memory) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x06fdde03));\\r\\n        return success && data.length > 0 ? abi.decode(data, (string)) : \\\"???\\\";\\r\\n    }\\r\\n\\r\\n    function safeDecimals(IERC20 token) internal view returns (uint8) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x313ce567));\\r\\n        return success && data.length == 32 ? abi.decode(data, (uint8)) : 18;\\r\\n    }\\r\\n\\r\\n    function safeTransfer(IERC20 token, address to, uint256 amount) internal {\\r\\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0xa9059cbb, to, amount));\\r\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"BoringERC20: Transfer failed\\\");\\r\\n    }\\r\\n\\r\\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 amount) internal {\\r\\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0x23b872dd, from, to, amount));\\r\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"BoringERC20: TransferFrom failed\\\");\\r\\n    }\\r\\n}\",\"keccak256\":\"0x69f1ccf716991e5d6d64dc0e3bc3828fd1990bc18400d680b1aa1960675daaaa\",\"license\":\"UNLICENSED\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        },
        "BoringBatchable": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes[]",
                  "name": "calls",
                  "type": "bytes[]"
                },
                {
                  "internalType": "bool",
                  "name": "revertOnFail",
                  "type": "bool"
                }
              ],
              "name": "batch",
              "outputs": [
                {
                  "internalType": "bool[]",
                  "name": "successes",
                  "type": "bool[]"
                },
                {
                  "internalType": "bytes[]",
                  "name": "results",
                  "type": "bytes[]"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "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": "permitToken",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b5061069b806100206000396000f3fe6080604052600436106100295760003560e01c80637c516e941461002e578063d2423b5114610050575b600080fd5b34801561003a57600080fd5b5061004e610049366004610375565b61007a565b005b61006361005e3660046102f1565b6100ee565b604051610071929190610514565b60405180910390f35b60405163d505accf60e01b81526001600160a01b0389169063d505accf906100b2908a908a908a908a908a908a908a906004016104d3565b600060405180830381600087803b1580156100cc57600080fd5b505af11580156100e0573d6000803e3d6000fd5b505050505050505050505050565b6060808367ffffffffffffffff8111801561010857600080fd5b50604051908082528060200260200182016040528015610132578160200160208202803683370190505b5091508367ffffffffffffffff8111801561014c57600080fd5b5060405190808252806020026020018201604052801561018057816020015b606081526020019060019003908161016b5790505b50905060005b8481101561028057600060603088888581811061019f57fe5b90506020028101906101b191906105c8565b6040516101bf9291906104c3565b600060405180830381855af49150503d80600081146101fa576040519150601f19603f3d011682016040523d82523d6000602084013e6101ff565b606091505b5091509150818061020e575085155b61021782610289565b9061023e5760405162461bcd60e51b815260040161023591906105ae565b60405180910390fd5b508185848151811061024c57fe5b6020026020010190151590811515815250508084848151811061026b57fe5b60209081029190910101525050600101610186565b50935093915050565b60606044825110156102cf575060408051808201909152601d81527f5472616e73616374696f6e2072657665727465642073696c656e746c7900000060208201526102ec565b600482019150818060200190518101906102e991906103fc565b90505b919050565b600080600060408486031215610305578283fd5b833567ffffffffffffffff8082111561031c578485fd5b818601915086601f83011261032f578485fd5b81358181111561033d578586fd5b8760208083028501011115610350578586fd5b60209283019550935050840135801515811461036a578182fd5b809150509250925092565b600080600080600080600080610100898b031215610391578384fd5b883561039c8161064d565b975060208901356103ac8161064d565b965060408901356103bc8161064d565b9550606089013594506080890135935060a089013560ff811681146103df578384fd5b979a969950949793969295929450505060c08201359160e0013590565b60006020828403121561040d578081fd5b815167ffffffffffffffff80821115610424578283fd5b818401915084601f830112610437578283fd5b815181811115610445578384fd5b604051601f8201601f191681016020018381118282101715610465578586fd5b60405281815283820160200187101561047c578485fd5b61048d82602083016020870161061d565b9695505050505050565b600081518084526104af81602086016020860161061d565b601f01601f19169290920160200192915050565b6000828483379101908152919050565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b604080825283519082018190526000906020906060840190828701845b8281101561054f578151151584529284019290840190600101610531565b505050838103828501528085516105668184610614565b91508192508381028201848801865b8381101561059f57858303855261058d838351610497565b94870194925090860190600101610575565b50909998505050505050505050565b6000602082526105c16020830184610497565b9392505050565b6000808335601e198436030181126105de578283fd5b83018035915067ffffffffffffffff8211156105f8578283fd5b60200191503681900382131561060d57600080fd5b9250929050565b90815260200190565b60005b83811015610638578181015183820152602001610620565b83811115610647576000848401525b50505050565b6001600160a01b038116811461066257600080fd5b5056fea26469706673582212209a405d8730c2200d16cffbad576d07e20ce5a547fe71bf6765473c3eb8d8fbdd64736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x69B DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x29 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7C516E94 EQ PUSH2 0x2E JUMPI DUP1 PUSH4 0xD2423B51 EQ PUSH2 0x50 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4E PUSH2 0x49 CALLDATASIZE PUSH1 0x4 PUSH2 0x375 JUMP JUMPDEST PUSH2 0x7A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x63 PUSH2 0x5E CALLDATASIZE PUSH1 0x4 PUSH2 0x2F1 JUMP JUMPDEST PUSH2 0xEE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x71 SWAP3 SWAP2 SWAP1 PUSH2 0x514 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD505ACCF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP1 PUSH4 0xD505ACCF SWAP1 PUSH2 0xB2 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x4D3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x108 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x132 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP2 POP DUP4 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x14C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x180 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x16B JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x280 JUMPI PUSH1 0x0 PUSH1 0x60 ADDRESS DUP9 DUP9 DUP6 DUP2 DUP2 LT PUSH2 0x19F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1B1 SWAP2 SWAP1 PUSH2 0x5C8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1BF SWAP3 SWAP2 SWAP1 PUSH2 0x4C3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1FA JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1FF JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 PUSH2 0x20E JUMPI POP DUP6 ISZERO JUMPDEST PUSH2 0x217 DUP3 PUSH2 0x289 JUMP JUMPDEST SWAP1 PUSH2 0x23E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x235 SWAP2 SWAP1 PUSH2 0x5AE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP2 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x24C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 ISZERO ISZERO SWAP1 DUP2 ISZERO ISZERO DUP2 MSTORE POP POP DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x26B JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0x186 JUMP JUMPDEST POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x44 DUP3 MLOAD LT ISZERO PUSH2 0x2CF JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1D DUP2 MSTORE PUSH32 0x5472616E73616374696F6E2072657665727465642073696C656E746C79000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x2EC JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SWAP2 POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2E9 SWAP2 SWAP1 PUSH2 0x3FC JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x305 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x31C JUMPI DUP5 DUP6 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x32F JUMPI DUP5 DUP6 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x33D JUMPI DUP6 DUP7 REVERT JUMPDEST DUP8 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x350 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH1 0x20 SWAP3 DUP4 ADD SWAP6 POP SWAP4 POP POP DUP5 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x36A JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x391 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x39C DUP2 PUSH2 0x64D JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH2 0x3AC DUP2 PUSH2 0x64D JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH2 0x3BC DUP2 PUSH2 0x64D JUMP JUMPDEST SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD SWAP4 POP PUSH1 0xA0 DUP10 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x3DF JUMPI DUP4 DUP5 REVERT JUMPDEST SWAP8 SWAP11 SWAP7 SWAP10 POP SWAP5 SWAP8 SWAP4 SWAP7 SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0xC0 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xE0 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x40D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x424 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x437 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x445 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x20 ADD DUP4 DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x465 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD PUSH1 0x20 ADD DUP8 LT ISZERO PUSH2 0x47C JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x48D DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x61D JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x4AF DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x61D JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 DUP4 CALLDATACOPY SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND DUP2 MSTORE SWAP6 SWAP1 SWAP7 AND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP4 MLOAD SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x20 SWAP1 PUSH1 0x60 DUP5 ADD SWAP1 DUP3 DUP8 ADD DUP5 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x54F JUMPI DUP2 MLOAD ISZERO ISZERO DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x531 JUMP JUMPDEST POP POP POP DUP4 DUP2 SUB DUP3 DUP6 ADD MSTORE DUP1 DUP6 MLOAD PUSH2 0x566 DUP2 DUP5 PUSH2 0x614 JUMP JUMPDEST SWAP2 POP DUP2 SWAP3 POP DUP4 DUP2 MUL DUP3 ADD DUP5 DUP9 ADD DUP7 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x59F JUMPI DUP6 DUP4 SUB DUP6 MSTORE PUSH2 0x58D DUP4 DUP4 MLOAD PUSH2 0x497 JUMP JUMPDEST SWAP5 DUP8 ADD SWAP5 SWAP3 POP SWAP1 DUP7 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x575 JUMP JUMPDEST POP SWAP1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x5C1 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x497 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x5DE JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x5F8 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x60D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x638 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x620 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x647 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x662 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP11 BLOCKHASH 0x5D DUP8 ADDRESS 0xC2 KECCAK256 0xD AND 0xCF 0xFB 0xAD JUMPI PUSH14 0x7E20CE5A547FE71BF6765473C3E 0xB8 0xD8 0xFB 0xDD PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "1837:573:0:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "6080604052600436106100295760003560e01c80637c516e941461002e578063d2423b5114610050575b600080fd5b34801561003a57600080fd5b5061004e610049366004610375565b61007a565b005b61006361005e3660046102f1565b6100ee565b604051610071929190610514565b60405180910390f35b60405163d505accf60e01b81526001600160a01b0389169063d505accf906100b2908a908a908a908a908a908a908a906004016104d3565b600060405180830381600087803b1580156100cc57600080fd5b505af11580156100e0573d6000803e3d6000fd5b505050505050505050505050565b6060808367ffffffffffffffff8111801561010857600080fd5b50604051908082528060200260200182016040528015610132578160200160208202803683370190505b5091508367ffffffffffffffff8111801561014c57600080fd5b5060405190808252806020026020018201604052801561018057816020015b606081526020019060019003908161016b5790505b50905060005b8481101561028057600060603088888581811061019f57fe5b90506020028101906101b191906105c8565b6040516101bf9291906104c3565b600060405180830381855af49150503d80600081146101fa576040519150601f19603f3d011682016040523d82523d6000602084013e6101ff565b606091505b5091509150818061020e575085155b61021782610289565b9061023e5760405162461bcd60e51b815260040161023591906105ae565b60405180910390fd5b508185848151811061024c57fe5b6020026020010190151590811515815250508084848151811061026b57fe5b60209081029190910101525050600101610186565b50935093915050565b60606044825110156102cf575060408051808201909152601d81527f5472616e73616374696f6e2072657665727465642073696c656e746c7900000060208201526102ec565b600482019150818060200190518101906102e991906103fc565b90505b919050565b600080600060408486031215610305578283fd5b833567ffffffffffffffff8082111561031c578485fd5b818601915086601f83011261032f578485fd5b81358181111561033d578586fd5b8760208083028501011115610350578586fd5b60209283019550935050840135801515811461036a578182fd5b809150509250925092565b600080600080600080600080610100898b031215610391578384fd5b883561039c8161064d565b975060208901356103ac8161064d565b965060408901356103bc8161064d565b9550606089013594506080890135935060a089013560ff811681146103df578384fd5b979a969950949793969295929450505060c08201359160e0013590565b60006020828403121561040d578081fd5b815167ffffffffffffffff80821115610424578283fd5b818401915084601f830112610437578283fd5b815181811115610445578384fd5b604051601f8201601f191681016020018381118282101715610465578586fd5b60405281815283820160200187101561047c578485fd5b61048d82602083016020870161061d565b9695505050505050565b600081518084526104af81602086016020860161061d565b601f01601f19169290920160200192915050565b6000828483379101908152919050565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b604080825283519082018190526000906020906060840190828701845b8281101561054f578151151584529284019290840190600101610531565b505050838103828501528085516105668184610614565b91508192508381028201848801865b8381101561059f57858303855261058d838351610497565b94870194925090860190600101610575565b50909998505050505050505050565b6000602082526105c16020830184610497565b9392505050565b6000808335601e198436030181126105de578283fd5b83018035915067ffffffffffffffff8211156105f8578283fd5b60200191503681900382131561060d57600080fd5b9250929050565b90815260200190565b60005b83811015610638578181015183820152602001610620565b83811115610647576000848401525b50505050565b6001600160a01b038116811461066257600080fd5b5056fea26469706673582212209a405d8730c2200d16cffbad576d07e20ce5a547fe71bf6765473c3eb8d8fbdd64736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x29 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7C516E94 EQ PUSH2 0x2E JUMPI DUP1 PUSH4 0xD2423B51 EQ PUSH2 0x50 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4E PUSH2 0x49 CALLDATASIZE PUSH1 0x4 PUSH2 0x375 JUMP JUMPDEST PUSH2 0x7A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x63 PUSH2 0x5E CALLDATASIZE PUSH1 0x4 PUSH2 0x2F1 JUMP JUMPDEST PUSH2 0xEE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x71 SWAP3 SWAP2 SWAP1 PUSH2 0x514 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD505ACCF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP1 PUSH4 0xD505ACCF SWAP1 PUSH2 0xB2 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x4D3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x108 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x132 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP2 POP DUP4 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x14C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x180 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x16B JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x280 JUMPI PUSH1 0x0 PUSH1 0x60 ADDRESS DUP9 DUP9 DUP6 DUP2 DUP2 LT PUSH2 0x19F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1B1 SWAP2 SWAP1 PUSH2 0x5C8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1BF SWAP3 SWAP2 SWAP1 PUSH2 0x4C3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1FA JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1FF JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 PUSH2 0x20E JUMPI POP DUP6 ISZERO JUMPDEST PUSH2 0x217 DUP3 PUSH2 0x289 JUMP JUMPDEST SWAP1 PUSH2 0x23E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x235 SWAP2 SWAP1 PUSH2 0x5AE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP2 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x24C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 ISZERO ISZERO SWAP1 DUP2 ISZERO ISZERO DUP2 MSTORE POP POP DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x26B JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0x186 JUMP JUMPDEST POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x44 DUP3 MLOAD LT ISZERO PUSH2 0x2CF JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1D DUP2 MSTORE PUSH32 0x5472616E73616374696F6E2072657665727465642073696C656E746C79000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x2EC JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SWAP2 POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2E9 SWAP2 SWAP1 PUSH2 0x3FC JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x305 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x31C JUMPI DUP5 DUP6 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x32F JUMPI DUP5 DUP6 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x33D JUMPI DUP6 DUP7 REVERT JUMPDEST DUP8 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x350 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH1 0x20 SWAP3 DUP4 ADD SWAP6 POP SWAP4 POP POP DUP5 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x36A JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x391 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x39C DUP2 PUSH2 0x64D JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH2 0x3AC DUP2 PUSH2 0x64D JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH2 0x3BC DUP2 PUSH2 0x64D JUMP JUMPDEST SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD SWAP4 POP PUSH1 0xA0 DUP10 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x3DF JUMPI DUP4 DUP5 REVERT JUMPDEST SWAP8 SWAP11 SWAP7 SWAP10 POP SWAP5 SWAP8 SWAP4 SWAP7 SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0xC0 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xE0 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x40D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x424 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x437 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x445 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x20 ADD DUP4 DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x465 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD PUSH1 0x20 ADD DUP8 LT ISZERO PUSH2 0x47C JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x48D DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x61D JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x4AF DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x61D JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 DUP4 CALLDATACOPY SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND DUP2 MSTORE SWAP6 SWAP1 SWAP7 AND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP4 MLOAD SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x20 SWAP1 PUSH1 0x60 DUP5 ADD SWAP1 DUP3 DUP8 ADD DUP5 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x54F JUMPI DUP2 MLOAD ISZERO ISZERO DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x531 JUMP JUMPDEST POP POP POP DUP4 DUP2 SUB DUP3 DUP6 ADD MSTORE DUP1 DUP6 MLOAD PUSH2 0x566 DUP2 DUP5 PUSH2 0x614 JUMP JUMPDEST SWAP2 POP DUP2 SWAP3 POP DUP4 DUP2 MUL DUP3 ADD DUP5 DUP9 ADD DUP7 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x59F JUMPI DUP6 DUP4 SUB DUP6 MSTORE PUSH2 0x58D DUP4 DUP4 MLOAD PUSH2 0x497 JUMP JUMPDEST SWAP5 DUP8 ADD SWAP5 SWAP3 POP SWAP1 DUP7 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x575 JUMP JUMPDEST POP SWAP1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x5C1 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x497 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x5DE JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x5F8 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x60D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x638 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x620 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x647 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x662 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP11 BLOCKHASH 0x5D DUP8 ADDRESS 0xC2 KECCAK256 0xD AND 0xCF 0xFB 0xAD JUMPI PUSH14 0x7E20CE5A547FE71BF6765473C3E 0xB8 0xD8 0xFB 0xDD PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "1837:573:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;2161:246;;;;;;;;;;-1:-1:-1;2161:246:0;;;;;:::i;:::-;;:::i;:::-;;1260:554;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;2161:246;2350:49;;-1:-1:-1;;;2350:49:0;;-1:-1:-1;;;;;2350:12:0;;;;;:49;;2363:4;;2369:2;;2373:6;;2381:8;;2391:1;;2394;;2397;;2350:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2161:246;;;;;;;;:::o;1260:554::-;1343:23;;1451:5;1440:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1440:24:0;-1:-1:-1;1428:36:0;-1:-1:-1;1497:5:0;1485:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1475:35;;1526:9;1521:286;1541:16;;;1521:286;;;1580:12;1594:19;1625:4;1644:5;;1650:1;1644:8;;;;;;;;;;;;;;;;;;:::i;:::-;1617:36;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1579:74;;;;1676:7;:24;;;;1688:12;1687:13;1676:24;1702:21;1716:6;1702:13;:21::i;:::-;1668:56;;;;;-1:-1:-1;;;1668:56:0;;;;;;;;:::i;:::-;;;;;;;;;;1754:7;1739:9;1749:1;1739:12;;;;;;;;;;;;;:22;;;;;;;;;;;1789:6;1776:7;1784:1;1776:10;;;;;;;;;;;;;;;;;:19;-1:-1:-1;;1559:3:0;;1521:286;;;;1260:554;;;;;;:::o;304:496::-;376:13;539:2;518:11;:18;:23;514:67;;;-1:-1:-1;543:38:0;;;;;;;;;;;;;;;;;;;514:67;685:4;672:11;668:22;653:37;;729:11;718:33;;;;;;;;;;;;:::i;:::-;711:40;;304:496;;;;:::o;1685:538:-1:-;;;;1849:2;1837:9;1828:7;1824:23;1820:32;1817:2;;;-1:-1;;1855:12;1817:2;1913:17;1900:31;1951:18;;1943:6;1940:30;1937:2;;;-1:-1;;1973:12;1937:2;2085:6;2074:9;2070:22;;;299:3;292:4;284:6;280:17;276:27;266:2;;-1:-1;;307:12;266:2;350:6;337:20;1951:18;369:6;366:30;363:2;;;-1:-1;;399:12;363:2;494:3;443:4;;478:6;474:17;435:6;460:32;;457:41;454:2;;;-1:-1;;501:12;454:2;443:4;431:17;;;;-1:-1;1993:109;-1:-1;;2175:22;;593:20;12783:13;;12776:21;14011:32;;14001:2;;-1:-1;;14047:12;14001:2;2147:60;;;;1811:412;;;;;:::o;2230:1145::-;;;;;;;;;2465:3;2453:9;2444:7;2440:23;2436:33;2433:2;;;-1:-1;;2472:12;2433:2;891:6;878:20;903:47;944:5;903:47;:::i;:::-;2524:77;-1:-1;2638:2;2677:22;;72:20;97:33;72:20;97:33;:::i;:::-;2646:63;-1:-1;2746:2;2785:22;;72:20;97:33;72:20;97:33;:::i;:::-;2754:63;-1:-1;2854:2;2893:22;;1482:20;;-1:-1;2962:3;3002:22;;1482:20;;-1:-1;3071:3;3109:22;;1617:20;13278:4;13267:16;;14530:33;;14520:2;;-1:-1;;14567:12;14520:2;2427:948;;;;-1:-1;2427:948;;;;;;3080:61;;-1:-1;;;3178:3;3218:22;;727:20;;3287:3;3327:22;727:20;;2427:948::o;3382:362::-;;3507:2;3495:9;3486:7;3482:23;3478:32;3475:2;;;-1:-1;;3513:12;3475:2;3564:17;3558:24;3602:18;;3594:6;3591:30;3588:2;;;-1:-1;;3624:12;3588:2;3711:6;3700:9;3696:22;;;1076:3;1069:4;1061:6;1057:17;1053:27;1043:2;;-1:-1;;1084:12;1043:2;1124:6;1118:13;3602:18;10451:6;10448:30;10445:2;;;-1:-1;;10481:12;10445:2;10114;10108:9;10554;10535:17;;-1:-1;;10531:33;10140:17;;3507:2;10140:17;10200:34;;;10236:22;;;10197:62;10194:2;;;-1:-1;;10262:12;10194:2;10114;10281:22;1217:21;;;1317:16;;;3507:2;1317:16;1314:25;-1:-1;1311:2;;;-1:-1;;1342:12;1311:2;1362:39;1394:6;3507:2;1293:5;1289:16;3507:2;1259:6;1255:17;1362:39;:::i;:::-;3644:84;3469:275;-1:-1;;;;;;3469:275::o;6455:323::-;;6587:5;11066:12;11881:6;11876:3;11869:19;6670:52;6715:6;11918:4;11913:3;11909:14;11918:4;6696:5;6692:16;6670:52;:::i;:::-;10554:9;13794:14;-1:-1;;13790:28;6734:39;;;;11918:4;6734:39;;6535:243;-1:-1;;6535:243::o;7373:291::-;;13377:6;13372:3;13367;13354:30;13415:16;;13408:27;;;13415:16;7517:147;-1:-1;7517:147::o;7671:884::-;-1:-1;;;;;13062:54;;;4190:37;;13062:54;;;;8127:2;8112:18;;4190:37;8210:2;8195:18;;6065:37;;;;8293:2;8278:18;;6065:37;;;;13278:4;13267:16;8372:3;8357:19;;7326:35;13073:42;8441:19;;6065:37;8540:3;8525:19;;6065:37;;;;7962:3;7947:19;;7933:622::o;8562:653::-;8829:2;8843:47;;;11066:12;;8814:18;;;11869:19;;;8562:653;;11918:4;;11909:14;;;;10756;;;8562:653;4657:251;4682:6;4679:1;4676:13;4657:251;;;4743:13;;12783;12776:21;5948:34;;3893:14;;;;11603;;;;4704:1;4697:9;4657:251;;;4661:14;;;9054:9;9048:4;9044:20;11918:4;9028:9;9024:18;9017:48;9079:126;5185:5;11066:12;5204:95;5292:6;5287:3;5204:95;:::i;:::-;5197:102;;;;;11918:4;5356:6;5352:17;5347:3;5343:27;11918:4;5450:5;10756:14;-1:-1;5489:357;5514:6;5511:1;5508:13;5489:357;;;5576:9;5570:4;5566:20;5561:3;5554:33;4041:64;4101:3;5621:6;5615:13;4041:64;:::i;:::-;5825:14;;;;5635:90;-1:-1;11603:14;;;;4704:1;5529:9;5489:357;;;-1:-1;9071:134;;8800:415;-1:-1;;;;;;;;;8800:415::o;9222:310::-;;9369:2;9390:17;9383:47;9444:78;9369:2;9358:9;9354:18;9508:6;9444:78;:::i;:::-;9436:86;9340:192;-1:-1;;;9340:192::o;9539:506::-;;;9674:11;9661:25;9725:48;;9749:8;9733:14;9729:29;9725:48;9705:18;9701:73;9691:2;;-1:-1;;9778:12;9691:2;9805:33;;9859:18;;;-1:-1;9897:18;9886:30;;9883:2;;;-1:-1;;9919:12;9883:2;9764:4;9947:13;;-1:-1;9733:14;9979:38;;;9969:49;;9966:2;;;10031:1;;10021:12;9966:2;9629:416;;;;;:::o;11754:175::-;11869:19;;;11918:4;11909:14;;11862:67::o;13450:268::-;13515:1;13522:101;13536:6;13533:1;13530:13;13522:101;;;13603:11;;;13597:18;13584:11;;;13577:39;13558:2;13551:10;13522:101;;;13638:6;13635:1;13632:13;13629:2;;;13515:1;13694:6;13689:3;13685:16;13678:27;13629:2;;13499:219;;;:::o;13831:117::-;-1:-1;;;;;13062:54;;13890:35;;13880:2;;13939:1;;13929:12;13880:2;13874:74;:::o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "338200",
                "executionCost": "374",
                "totalCost": "338574"
              },
              "external": {
                "batch(bytes[],bool)": "infinite",
                "permitToken(address,address,address,uint256,uint256,uint8,bytes32,bytes32)": "infinite"
              }
            },
            "methodIdentifiers": {
              "batch(bytes[],bool)": "d2423b51",
              "permitToken(address,address,address,uint256,uint256,uint8,bytes32,bytes32)": "7c516e94"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"calls\",\"type\":\"bytes[]\"},{\"internalType\":\"bool\",\"name\":\"revertOnFail\",\"type\":\"bool\"}],\"name\":\"batch\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"successes\",\"type\":\"bool[]\"},{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"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\":\"permitToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@boringcrypto/boring-solidity/contracts/BoringBatchable.sol\":\"BoringBatchable\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@boringcrypto/boring-solidity/contracts/BoringBatchable.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\r\\n// Audit on 5-Jan-2021 by Keno and BoringCrypto\\r\\n\\r\\n// P1 - P3: OK\\r\\npragma solidity 0.6.12;\\r\\npragma experimental ABIEncoderV2;\\r\\n// solhint-disable avoid-low-level-calls\\r\\n\\r\\nimport \\\"./libraries/BoringERC20.sol\\\";\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BaseBoringBatchable {\\r\\n    function _getRevertMsg(bytes memory _returnData) internal pure returns (string memory) {\\r\\n        // If the _res length is less than 68, then the transaction failed silently (without a revert message)\\r\\n        if (_returnData.length < 68) return \\\"Transaction reverted silently\\\";\\r\\n\\r\\n        assembly {\\r\\n            // Slice the sighash.\\r\\n            _returnData := add(_returnData, 0x04)\\r\\n        }\\r\\n        return abi.decode(_returnData, (string)); // All that remains is the revert string\\r\\n    }    \\r\\n    \\r\\n    // F3 - F9: OK\\r\\n    // F1: External is ok here because this is the batch function, adding it to a batch makes no sense\\r\\n    // F2: Calls in the batch may be payable, delegatecall operates in the same context, so each call in the batch has access to msg.value\\r\\n    // C1 - C21: OK\\r\\n    // C3: The length of the loop is fully under user control, so can't be exploited\\r\\n    // C7: Delegatecall is only used on the same contract, so it's safe\\r\\n    function batch(bytes[] calldata calls, bool revertOnFail) external payable returns(bool[] memory successes, bytes[] memory results) {\\r\\n        // Interactions\\r\\n        successes = new bool[](calls.length);\\r\\n        results = new bytes[](calls.length);\\r\\n        for (uint256 i = 0; i < calls.length; i++) {\\r\\n            (bool success, bytes memory result) = address(this).delegatecall(calls[i]);\\r\\n            require(success || !revertOnFail, _getRevertMsg(result));\\r\\n            successes[i] = success;\\r\\n            results[i] = result;\\r\\n        }\\r\\n    }\\r\\n}\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BoringBatchable is BaseBoringBatchable {\\r\\n    // F1 - F9: OK\\r\\n    // F6: Parameters can be used front-run the permit and the user's permit will fail (due to nonce or other revert)\\r\\n    //     if part of a batch this could be used to grief once as the second call would not need the permit\\r\\n    // C1 - C21: OK\\r\\n    function permitToken(IERC20 token, address from, address to, uint256 amount, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {\\r\\n        // Interactions\\r\\n        // X1 - X5\\r\\n        token.permit(from, to, amount, deadline, v, r, s);\\r\\n    }\\r\\n}\",\"keccak256\":\"0xe0b0316b015447ee28c6b7d96c4347b410a66e5d26e922ef3bcccc22f3b4d590\",\"license\":\"UNLICENSED\"},\"@boringcrypto/boring-solidity/contracts/interfaces/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity 0.6.12;\\r\\n\\r\\ninterface IERC20 {\\r\\n    function totalSupply() external view returns (uint256);\\r\\n    function balanceOf(address account) external view returns (uint256);\\r\\n    function allowance(address owner, address spender) external view returns (uint256);\\r\\n    function approve(address spender, uint256 amount) external returns (bool);\\r\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\r\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\r\\n\\r\\n    // EIP 2612\\r\\n    function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;\\r\\n}\",\"keccak256\":\"0x8004f86e4536cca55b8eeb2621fe18e1ee57d779396ddef50bce5bf70fb59867\",\"license\":\"MIT\"},\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\r\\npragma solidity 0.6.12;\\r\\n\\r\\nimport \\\"../interfaces/IERC20.sol\\\";\\r\\n\\r\\nlibrary BoringERC20 {\\r\\n    function safeSymbol(IERC20 token) internal view returns(string memory) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x95d89b41));\\r\\n        return success && data.length > 0 ? abi.decode(data, (string)) : \\\"???\\\";\\r\\n    }\\r\\n\\r\\n    function safeName(IERC20 token) internal view returns(string memory) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x06fdde03));\\r\\n        return success && data.length > 0 ? abi.decode(data, (string)) : \\\"???\\\";\\r\\n    }\\r\\n\\r\\n    function safeDecimals(IERC20 token) internal view returns (uint8) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x313ce567));\\r\\n        return success && data.length == 32 ? abi.decode(data, (uint8)) : 18;\\r\\n    }\\r\\n\\r\\n    function safeTransfer(IERC20 token, address to, uint256 amount) internal {\\r\\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0xa9059cbb, to, amount));\\r\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"BoringERC20: Transfer failed\\\");\\r\\n    }\\r\\n\\r\\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 amount) internal {\\r\\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0x23b872dd, from, to, amount));\\r\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"BoringERC20: TransferFrom failed\\\");\\r\\n    }\\r\\n}\",\"keccak256\":\"0x69f1ccf716991e5d6d64dc0e3bc3828fd1990bc18400d680b1aa1960675daaaa\",\"license\":\"UNLICENSED\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@boringcrypto/boring-solidity/contracts/BoringOwnable.sol": {
        "BoringOwnable": {
          "abi": [
            {
              "inputs": [],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "claimOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "pendingOwner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "direct",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "renounce",
                  "type": "bool"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a361031b8061005f6000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c8063078dfbe7146100515780634e71e0c8146100895780638da5cb5b14610091578063e30c3978146100b5575b600080fd5b6100876004803603606081101561006757600080fd5b506001600160a01b038135169060208101351515906040013515156100bd565b005b610087610205565b6100996102c7565b604080516001600160a01b039092168252519081900360200190f35b6100996102d6565b6000546001600160a01b0316331461011c576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b81156101e4576001600160a01b0383161515806101365750805b61017f576040805162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b604482015290519081900360640190fd5b600080546040516001600160a01b03808716939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0385166001600160a01b031991821617909155600180549091169055610200565b600180546001600160a01b0319166001600160a01b0385161790555b505050565b6001546001600160a01b0316338114610265576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b6000546001600160a01b031681565b6001546001600160a01b03168156fea2646970667358221220649ef75cf6669c8effdec9b8095f1b2c78eaebb2ac862865cfa47f18c39b4c6564736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 PUSH2 0x31B DUP1 PUSH2 0x5F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x78DFBE7 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x4E71E0C8 EQ PUSH2 0x89 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x91 JUMPI DUP1 PUSH4 0xE30C3978 EQ PUSH2 0xB5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x87 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0x40 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0xBD JUMP JUMPDEST STOP JUMPDEST PUSH2 0x87 PUSH2 0x205 JUMP JUMPDEST PUSH2 0x99 PUSH2 0x2C7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x99 PUSH2 0x2D6 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x11C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 ISZERO PUSH2 0x1E4 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO ISZERO DUP1 PUSH2 0x136 JUMPI POP DUP1 JUMPDEST PUSH2 0x17F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x4F776E61626C653A207A65726F2061646472657373 PUSH1 0x58 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE PUSH2 0x200 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND OR SWAP1 SSTORE JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER DUP2 EQ PUSH2 0x265 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C657220213D2070656E64696E67206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH5 0x9EF75CF666 SWAP13 DUP15 SELFDESTRUCT 0xDE 0xC9 0xB8 MULMOD 0x5F SHL 0x2C PUSH25 0xEAEBB2AC862865CFA47F18C39B4C6564736F6C634300060C00 CALLER ",
              "sourceMap": "448:1363:1:-:0;;;606:119;;;;;;;;;-1:-1:-1;639:5:1;:18;;-1:-1:-1;;;;;;639:18:1;647:10;639:18;;;;;673:44;;647:10;;639:5;673:44;;639:5;;673:44;448:1363;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061004c5760003560e01c8063078dfbe7146100515780634e71e0c8146100895780638da5cb5b14610091578063e30c3978146100b5575b600080fd5b6100876004803603606081101561006757600080fd5b506001600160a01b038135169060208101351515906040013515156100bd565b005b610087610205565b6100996102c7565b604080516001600160a01b039092168252519081900360200190f35b6100996102d6565b6000546001600160a01b0316331461011c576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b81156101e4576001600160a01b0383161515806101365750805b61017f576040805162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b604482015290519081900360640190fd5b600080546040516001600160a01b03808716939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0385166001600160a01b031991821617909155600180549091169055610200565b600180546001600160a01b0319166001600160a01b0385161790555b505050565b6001546001600160a01b0316338114610265576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b6000546001600160a01b031681565b6001546001600160a01b03168156fea2646970667358221220649ef75cf6669c8effdec9b8095f1b2c78eaebb2ac862865cfa47f18c39b4c6564736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x78DFBE7 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x4E71E0C8 EQ PUSH2 0x89 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x91 JUMPI DUP1 PUSH4 0xE30C3978 EQ PUSH2 0xB5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x87 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0x40 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0xBD JUMP JUMPDEST STOP JUMPDEST PUSH2 0x87 PUSH2 0x205 JUMP JUMPDEST PUSH2 0x99 PUSH2 0x2C7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x99 PUSH2 0x2D6 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x11C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 ISZERO PUSH2 0x1E4 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO ISZERO DUP1 PUSH2 0x136 JUMPI POP DUP1 JUMPDEST PUSH2 0x17F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x4F776E61626C653A207A65726F2061646472657373 PUSH1 0x58 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE PUSH2 0x200 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND OR SWAP1 SSTORE JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER DUP2 EQ PUSH2 0x265 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C657220213D2070656E64696E67206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH5 0x9EF75CF666 SWAP13 DUP15 SELFDESTRUCT 0xDE 0xC9 0xB8 MULMOD 0x5F SHL 0x2C PUSH25 0xEAEBB2AC862865CFA47F18C39B4C6564736F6C634300060C00 CALLER ",
              "sourceMap": "448:1363:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;774:472;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;774:472:1;;;;;;;;;;;;;;;;;:::i;:::-;;1295:348;;;:::i;350:20::-;;;:::i;:::-;;;;-1:-1:-1;;;;;350:20:1;;;;;;;;;;;;;;397:27;;;:::i;774:472::-;1746:5;;-1:-1:-1;;;;;1746:5:1;1732:10;:19;1724:64;;;;;-1:-1:-1;;;1724:64:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;879:6:::1;875:364;;;-1:-1:-1::0;;;;;933:22:1;::::1;::::0;::::1;::::0;:34:::1;;;959:8;933:34;925:68;;;::::0;;-1:-1:-1;;;925:68:1;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;925:68:1;;;;;;;;;;;;;::::1;;1060:5;::::0;;1039:37:::1;::::0;-1:-1:-1;;;;;1039:37:1;;::::1;::::0;1060:5;::::1;::::0;1039:37:::1;::::0;::::1;1091:5;:16:::0;;-1:-1:-1;;;;;1091:16:1;::::1;-1:-1:-1::0;;;;;;1091:16:1;;::::1;;::::0;;;;1122:25;;;;::::1;::::0;;875:364:::1;;;1204:12;:23:::0;;-1:-1:-1;;;;;;1204:23:1::1;-1:-1:-1::0;;;;;1204:23:1;::::1;;::::0;;875:364:::1;774:472:::0;;;:::o;1295:348::-;1363:12;;-1:-1:-1;;;;;1363:12:1;1423:10;:27;;1415:72;;;;;-1:-1:-1;;;1415:72:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1546:5;;;1525:42;;-1:-1:-1;;;;;1525:42:1;;;;1546:5;;;1525:42;;;1578:5;:21;;-1:-1:-1;;;;;1578:21:1;;;-1:-1:-1;;;;;;1578:21:1;;;;;;;1610:25;;;;;;;1295:348::o;350:20::-;;;-1:-1:-1;;;;;350:20:1;;:::o;397:27::-;;;-1:-1:-1;;;;;397:27:1;;:::o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "159000",
                "executionCost": "22570",
                "totalCost": "181570"
              },
              "external": {
                "claimOwnership()": "45022",
                "owner()": "1059",
                "pendingOwner()": "1081",
                "transferOwnership(address,bool,bool)": "45199"
              }
            },
            "methodIdentifiers": {
              "claimOwnership()": "4e71e0c8",
              "owner()": "8da5cb5b",
              "pendingOwner()": "e30c3978",
              "transferOwnership(address,bool,bool)": "078dfbe7"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"claimOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"direct\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"renounce\",\"type\":\"bool\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@boringcrypto/boring-solidity/contracts/BoringOwnable.sol\":\"BoringOwnable\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@boringcrypto/boring-solidity/contracts/BoringOwnable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\n// Audit on 5-Jan-2021 by Keno and BoringCrypto\\r\\n\\r\\n// P1 - P3: OK\\r\\npragma solidity 0.6.12;\\r\\n\\r\\n// Source: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol + Claimable.sol\\r\\n// Edited by BoringCrypto\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BoringOwnableData {\\r\\n    // V1 - V5: OK\\r\\n    address public owner;\\r\\n    // V1 - V5: OK\\r\\n    address public pendingOwner;\\r\\n}\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BoringOwnable is BoringOwnableData {\\r\\n    // E1: OK\\r\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\r\\n\\r\\n    constructor () public {\\r\\n        owner = msg.sender;\\r\\n        emit OwnershipTransferred(address(0), msg.sender);\\r\\n    }\\r\\n\\r\\n    // F1 - F9: OK\\r\\n    // C1 - C21: OK\\r\\n    function transferOwnership(address newOwner, bool direct, bool renounce) public onlyOwner {\\r\\n        if (direct) {\\r\\n            // Checks\\r\\n            require(newOwner != address(0) || renounce, \\\"Ownable: zero address\\\");\\r\\n\\r\\n            // Effects\\r\\n            emit OwnershipTransferred(owner, newOwner);\\r\\n            owner = newOwner;\\r\\n            pendingOwner = address(0);\\r\\n        } else {\\r\\n            // Effects\\r\\n            pendingOwner = newOwner;\\r\\n        }\\r\\n    }\\r\\n\\r\\n    // F1 - F9: OK\\r\\n    // C1 - C21: OK\\r\\n    function claimOwnership() public {\\r\\n        address _pendingOwner = pendingOwner;\\r\\n        \\r\\n        // Checks\\r\\n        require(msg.sender == _pendingOwner, \\\"Ownable: caller != pending owner\\\");\\r\\n\\r\\n        // Effects\\r\\n        emit OwnershipTransferred(owner, _pendingOwner);\\r\\n        owner = _pendingOwner;\\r\\n        pendingOwner = address(0);\\r\\n    }\\r\\n\\r\\n    // M1 - M5: OK\\r\\n    // C1 - C21: OK\\r\\n    modifier onlyOwner() {\\r\\n        require(msg.sender == owner, \\\"Ownable: caller is not the owner\\\");\\r\\n        _;\\r\\n    }\\r\\n}\",\"keccak256\":\"0xfafb586b248c1c697227f5745397562cfe5be2f04e19fb80fc79fc94e3afaba1\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 149,
                "contract": "@boringcrypto/boring-solidity/contracts/BoringOwnable.sol:BoringOwnable",
                "label": "owner",
                "offset": 0,
                "slot": "0",
                "type": "t_address"
              },
              {
                "astId": 151,
                "contract": "@boringcrypto/boring-solidity/contracts/BoringOwnable.sol:BoringOwnable",
                "label": "pendingOwner",
                "offset": 0,
                "slot": "1",
                "type": "t_address"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        },
        "BoringOwnableData": {
          "abi": [
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "pendingOwner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "6080604052348015600f57600080fd5b5060b38061001e6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c80638da5cb5b146037578063e30c3978146059575b600080fd5b603d605f565b604080516001600160a01b039092168252519081900360200190f35b603d606e565b6000546001600160a01b031681565b6001546001600160a01b03168156fea2646970667358221220edd478eb6730866065371f0718d50f36725a4fb5a00ce250db0d85c806cf19a564736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xB3 DUP1 PUSH2 0x1E PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x32 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B EQ PUSH1 0x37 JUMPI DUP1 PUSH4 0xE30C3978 EQ PUSH1 0x59 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3D PUSH1 0x5F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x3D PUSH1 0x6E JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xED 0xD4 PUSH25 0xEB6730866065371F0718D50F36725A4FB5A00CE250DB0D85C8 MOD 0xCF NOT 0xA5 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "296:132:1:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "6080604052348015600f57600080fd5b506004361060325760003560e01c80638da5cb5b146037578063e30c3978146059575b600080fd5b603d605f565b604080516001600160a01b039092168252519081900360200190f35b603d606e565b6000546001600160a01b031681565b6001546001600160a01b03168156fea2646970667358221220edd478eb6730866065371f0718d50f36725a4fb5a00ce250db0d85c806cf19a564736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x32 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B EQ PUSH1 0x37 JUMPI DUP1 PUSH4 0xE30C3978 EQ PUSH1 0x59 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3D PUSH1 0x5F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x3D PUSH1 0x6E JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xED 0xD4 PUSH25 0xEB6730866065371F0718D50F36725A4FB5A00CE250DB0D85C8 MOD 0xCF NOT 0xA5 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "296:132:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;350:20;;;:::i;:::-;;;;-1:-1:-1;;;;;350:20:1;;;;;;;;;;;;;;397:27;;;:::i;350:20::-;;;-1:-1:-1;;;;;350:20:1;;:::o;397:27::-;;;-1:-1:-1;;;;;397:27:1;;:::o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "35800",
                "executionCost": "87",
                "totalCost": "35887"
              },
              "external": {
                "owner()": "1015",
                "pendingOwner()": "1037"
              }
            },
            "methodIdentifiers": {
              "owner()": "8da5cb5b",
              "pendingOwner()": "e30c3978"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@boringcrypto/boring-solidity/contracts/BoringOwnable.sol\":\"BoringOwnableData\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@boringcrypto/boring-solidity/contracts/BoringOwnable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\n// Audit on 5-Jan-2021 by Keno and BoringCrypto\\r\\n\\r\\n// P1 - P3: OK\\r\\npragma solidity 0.6.12;\\r\\n\\r\\n// Source: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol + Claimable.sol\\r\\n// Edited by BoringCrypto\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BoringOwnableData {\\r\\n    // V1 - V5: OK\\r\\n    address public owner;\\r\\n    // V1 - V5: OK\\r\\n    address public pendingOwner;\\r\\n}\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BoringOwnable is BoringOwnableData {\\r\\n    // E1: OK\\r\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\r\\n\\r\\n    constructor () public {\\r\\n        owner = msg.sender;\\r\\n        emit OwnershipTransferred(address(0), msg.sender);\\r\\n    }\\r\\n\\r\\n    // F1 - F9: OK\\r\\n    // C1 - C21: OK\\r\\n    function transferOwnership(address newOwner, bool direct, bool renounce) public onlyOwner {\\r\\n        if (direct) {\\r\\n            // Checks\\r\\n            require(newOwner != address(0) || renounce, \\\"Ownable: zero address\\\");\\r\\n\\r\\n            // Effects\\r\\n            emit OwnershipTransferred(owner, newOwner);\\r\\n            owner = newOwner;\\r\\n            pendingOwner = address(0);\\r\\n        } else {\\r\\n            // Effects\\r\\n            pendingOwner = newOwner;\\r\\n        }\\r\\n    }\\r\\n\\r\\n    // F1 - F9: OK\\r\\n    // C1 - C21: OK\\r\\n    function claimOwnership() public {\\r\\n        address _pendingOwner = pendingOwner;\\r\\n        \\r\\n        // Checks\\r\\n        require(msg.sender == _pendingOwner, \\\"Ownable: caller != pending owner\\\");\\r\\n\\r\\n        // Effects\\r\\n        emit OwnershipTransferred(owner, _pendingOwner);\\r\\n        owner = _pendingOwner;\\r\\n        pendingOwner = address(0);\\r\\n    }\\r\\n\\r\\n    // M1 - M5: OK\\r\\n    // C1 - C21: OK\\r\\n    modifier onlyOwner() {\\r\\n        require(msg.sender == owner, \\\"Ownable: caller is not the owner\\\");\\r\\n        _;\\r\\n    }\\r\\n}\",\"keccak256\":\"0xfafb586b248c1c697227f5745397562cfe5be2f04e19fb80fc79fc94e3afaba1\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 149,
                "contract": "@boringcrypto/boring-solidity/contracts/BoringOwnable.sol:BoringOwnableData",
                "label": "owner",
                "offset": 0,
                "slot": "0",
                "type": "t_address"
              },
              {
                "astId": 151,
                "contract": "@boringcrypto/boring-solidity/contracts/BoringOwnable.sol:BoringOwnableData",
                "label": "pendingOwner",
                "offset": 0,
                "slot": "1",
                "type": "t_address"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@boringcrypto/boring-solidity/contracts/interfaces/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": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "permit",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "d505accf",
              "totalSupply()": "18160ddd"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"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\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@boringcrypto/boring-solidity/contracts/interfaces/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@boringcrypto/boring-solidity/contracts/interfaces/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity 0.6.12;\\r\\n\\r\\ninterface IERC20 {\\r\\n    function totalSupply() external view returns (uint256);\\r\\n    function balanceOf(address account) external view returns (uint256);\\r\\n    function allowance(address owner, address spender) external view returns (uint256);\\r\\n    function approve(address spender, uint256 amount) external returns (bool);\\r\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\r\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\r\\n\\r\\n    // EIP 2612\\r\\n    function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;\\r\\n}\",\"keccak256\":\"0x8004f86e4536cca55b8eeb2621fe18e1ee57d779396ddef50bce5bf70fb59867\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol": {
        "BoringERC20": {
          "abi": [],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c2fe6f51bba98a39f828757f181ad2e5b35badf658bc93bc2e7f7a833dda063764736f6c634300060c0033",
              "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC2 INVALID PUSH16 0x51BBA98A39F828757F181AD2E5B35BAD 0xF6 PC 0xBC SWAP4 0xBC 0x2E PUSH32 0x7A833DDA063764736F6C634300060C0033000000000000000000000000000000 ",
              "sourceMap": "105:1493:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c2fe6f51bba98a39f828757f181ad2e5b35badf658bc93bc2e7f7a833dda063764736f6c634300060c0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC2 INVALID PUSH16 0x51BBA98A39F828757F181AD2E5B35BAD 0xF6 PC 0xBC SWAP4 0xBC 0x2E PUSH32 0x7A833DDA063764736F6C634300060C0033000000000000000000000000000000 ",
              "sourceMap": "105:1493:3:-:0;;;;;;;;"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "17200",
                "executionCost": "97",
                "totalCost": "17297"
              },
              "internal": {
                "safeDecimals(contract IERC20)": "infinite",
                "safeName(contract IERC20)": "infinite",
                "safeSymbol(contract IERC20)": "infinite",
                "safeTransfer(contract IERC20,address,uint256)": "infinite",
                "safeTransferFrom(contract IERC20,address,address,uint256)": "infinite"
              }
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\":\"BoringERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@boringcrypto/boring-solidity/contracts/interfaces/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity 0.6.12;\\r\\n\\r\\ninterface IERC20 {\\r\\n    function totalSupply() external view returns (uint256);\\r\\n    function balanceOf(address account) external view returns (uint256);\\r\\n    function allowance(address owner, address spender) external view returns (uint256);\\r\\n    function approve(address spender, uint256 amount) external returns (bool);\\r\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\r\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\r\\n\\r\\n    // EIP 2612\\r\\n    function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;\\r\\n}\",\"keccak256\":\"0x8004f86e4536cca55b8eeb2621fe18e1ee57d779396ddef50bce5bf70fb59867\",\"license\":\"MIT\"},\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\r\\npragma solidity 0.6.12;\\r\\n\\r\\nimport \\\"../interfaces/IERC20.sol\\\";\\r\\n\\r\\nlibrary BoringERC20 {\\r\\n    function safeSymbol(IERC20 token) internal view returns(string memory) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x95d89b41));\\r\\n        return success && data.length > 0 ? abi.decode(data, (string)) : \\\"???\\\";\\r\\n    }\\r\\n\\r\\n    function safeName(IERC20 token) internal view returns(string memory) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x06fdde03));\\r\\n        return success && data.length > 0 ? abi.decode(data, (string)) : \\\"???\\\";\\r\\n    }\\r\\n\\r\\n    function safeDecimals(IERC20 token) internal view returns (uint8) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x313ce567));\\r\\n        return success && data.length == 32 ? abi.decode(data, (uint8)) : 18;\\r\\n    }\\r\\n\\r\\n    function safeTransfer(IERC20 token, address to, uint256 amount) internal {\\r\\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0xa9059cbb, to, amount));\\r\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"BoringERC20: Transfer failed\\\");\\r\\n    }\\r\\n\\r\\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 amount) internal {\\r\\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0x23b872dd, from, to, amount));\\r\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"BoringERC20: TransferFrom failed\\\");\\r\\n    }\\r\\n}\",\"keccak256\":\"0x69f1ccf716991e5d6d64dc0e3bc3828fd1990bc18400d680b1aa1960675daaaa\",\"license\":\"UNLICENSED\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol": {
        "BoringMath": {
          "abi": [],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220daa4d221c8d9b38f8e6cdb09f6b242a4bb8d74d879764a543d82481ba203095764736f6c634300060c0033",
              "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDA LOG4 0xD2 0x21 0xC8 0xD9 0xB3 DUP16 DUP15 PUSH13 0xDB09F6B242A4BB8D74D879764A SLOAD RETURNDATASIZE DUP3 0x48 SHL LOG2 SUB MULMOD JUMPI PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "185:916:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220daa4d221c8d9b38f8e6cdb09f6b242a4bb8d74d879764a543d82481ba203095764736f6c634300060c0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDA LOG4 0xD2 0x21 0xC8 0xD9 0xB3 DUP16 DUP15 PUSH13 0xDB09F6B242A4BB8D74D879764A SLOAD RETURNDATASIZE DUP3 0x48 SHL LOG2 SUB MULMOD JUMPI PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "185:916:4:-:0;;;;;;;;"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "17200",
                "executionCost": "97",
                "totalCost": "17297"
              },
              "internal": {
                "add(uint256,uint256)": "infinite",
                "mul(uint256,uint256)": "infinite",
                "sub(uint256,uint256)": "infinite",
                "to128(uint256)": "infinite",
                "to32(uint256)": "infinite",
                "to64(uint256)": "infinite"
              }
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\":\"BoringMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity 0.6.12;\\r\\n// a library for performing overflow-safe math, updated with awesomeness from of DappHub (https://github.com/dapphub/ds-math)\\r\\nlibrary BoringMath {\\r\\n    function add(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {require(b == 0 || (c = a * b)/b == a, \\\"BoringMath: Mul Overflow\\\");}\\r\\n    function to128(uint256 a) internal pure returns (uint128 c) {\\r\\n        require(a <= uint128(-1), \\\"BoringMath: uint128 Overflow\\\");\\r\\n        c = uint128(a);\\r\\n    }\\r\\n    function to64(uint256 a) internal pure returns (uint64 c) {\\r\\n        require(a <= uint64(-1), \\\"BoringMath: uint64 Overflow\\\");\\r\\n        c = uint64(a);\\r\\n    }\\r\\n    function to32(uint256 a) internal pure returns (uint32 c) {\\r\\n        require(a <= uint32(-1), \\\"BoringMath: uint32 Overflow\\\");\\r\\n        c = uint32(a);\\r\\n    }\\r\\n}\\r\\n\\r\\nlibrary BoringMath128 {\\r\\n    function add(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\\r\\n\\r\\nlibrary BoringMath64 {\\r\\n    function add(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\\r\\n\\r\\nlibrary BoringMath32 {\\r\\n    function add(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\",\"keccak256\":\"0x2d0e99483c5618251d4b52e8551918253bf044c63e0d09a2f1f652671f9ff762\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        },
        "BoringMath128": {
          "abi": [],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220806a970b71f42c331e87e3b36bc30f8f57b556b035585837ed82df75eafbc4d664736f6c634300060c0033",
              "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP1 PUSH11 0x970B71F42C331E87E3B36B 0xC3 0xF DUP16 JUMPI 0xB5 JUMP 0xB0 CALLDATALOAD PC PC CALLDATACOPY 0xED DUP3 0xDF PUSH22 0xEAFBC4D664736F6C634300060C003300000000000000 ",
              "sourceMap": "1105:285:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220806a970b71f42c331e87e3b36bc30f8f57b556b035585837ed82df75eafbc4d664736f6c634300060c0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP1 PUSH11 0x970B71F42C331E87E3B36B 0xC3 0xF DUP16 JUMPI 0xB5 JUMP 0xB0 CALLDATALOAD PC PC CALLDATACOPY 0xED DUP3 0xDF PUSH22 0xEAFBC4D664736F6C634300060C003300000000000000 ",
              "sourceMap": "1105:285:4:-:0;;;;;;;;"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "17200",
                "executionCost": "97",
                "totalCost": "17297"
              },
              "internal": {
                "add(uint128,uint128)": "infinite",
                "sub(uint128,uint128)": "infinite"
              }
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\":\"BoringMath128\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity 0.6.12;\\r\\n// a library for performing overflow-safe math, updated with awesomeness from of DappHub (https://github.com/dapphub/ds-math)\\r\\nlibrary BoringMath {\\r\\n    function add(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {require(b == 0 || (c = a * b)/b == a, \\\"BoringMath: Mul Overflow\\\");}\\r\\n    function to128(uint256 a) internal pure returns (uint128 c) {\\r\\n        require(a <= uint128(-1), \\\"BoringMath: uint128 Overflow\\\");\\r\\n        c = uint128(a);\\r\\n    }\\r\\n    function to64(uint256 a) internal pure returns (uint64 c) {\\r\\n        require(a <= uint64(-1), \\\"BoringMath: uint64 Overflow\\\");\\r\\n        c = uint64(a);\\r\\n    }\\r\\n    function to32(uint256 a) internal pure returns (uint32 c) {\\r\\n        require(a <= uint32(-1), \\\"BoringMath: uint32 Overflow\\\");\\r\\n        c = uint32(a);\\r\\n    }\\r\\n}\\r\\n\\r\\nlibrary BoringMath128 {\\r\\n    function add(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\\r\\n\\r\\nlibrary BoringMath64 {\\r\\n    function add(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\\r\\n\\r\\nlibrary BoringMath32 {\\r\\n    function add(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\",\"keccak256\":\"0x2d0e99483c5618251d4b52e8551918253bf044c63e0d09a2f1f652671f9ff762\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        },
        "BoringMath32": {
          "abi": [],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220368b2bfedd621e3f68b54c4048ec4a05a324edeed66541ffc89aeff68c5ff1ff64736f6c634300060c0033",
              "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLDATASIZE DUP12 0x2B INVALID 0xDD PUSH3 0x1E3F68 0xB5 0x4C BLOCKHASH 0x48 0xEC 0x4A SDIV LOG3 0x24 0xED 0xEE 0xD6 PUSH6 0x41FFC89AEFF6 DUP13 0x5F CALL SELFDESTRUCT PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "1676:278:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220368b2bfedd621e3f68b54c4048ec4a05a324edeed66541ffc89aeff68c5ff1ff64736f6c634300060c0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLDATASIZE DUP12 0x2B INVALID 0xDD PUSH3 0x1E3F68 0xB5 0x4C BLOCKHASH 0x48 0xEC 0x4A SDIV LOG3 0x24 0xED 0xEE 0xD6 PUSH6 0x41FFC89AEFF6 DUP13 0x5F CALL SELFDESTRUCT PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "1676:278:4:-:0;;;;;;;;"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "17200",
                "executionCost": "97",
                "totalCost": "17297"
              },
              "internal": {
                "add(uint32,uint32)": "infinite",
                "sub(uint32,uint32)": "infinite"
              }
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\":\"BoringMath32\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity 0.6.12;\\r\\n// a library for performing overflow-safe math, updated with awesomeness from of DappHub (https://github.com/dapphub/ds-math)\\r\\nlibrary BoringMath {\\r\\n    function add(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {require(b == 0 || (c = a * b)/b == a, \\\"BoringMath: Mul Overflow\\\");}\\r\\n    function to128(uint256 a) internal pure returns (uint128 c) {\\r\\n        require(a <= uint128(-1), \\\"BoringMath: uint128 Overflow\\\");\\r\\n        c = uint128(a);\\r\\n    }\\r\\n    function to64(uint256 a) internal pure returns (uint64 c) {\\r\\n        require(a <= uint64(-1), \\\"BoringMath: uint64 Overflow\\\");\\r\\n        c = uint64(a);\\r\\n    }\\r\\n    function to32(uint256 a) internal pure returns (uint32 c) {\\r\\n        require(a <= uint32(-1), \\\"BoringMath: uint32 Overflow\\\");\\r\\n        c = uint32(a);\\r\\n    }\\r\\n}\\r\\n\\r\\nlibrary BoringMath128 {\\r\\n    function add(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\\r\\n\\r\\nlibrary BoringMath64 {\\r\\n    function add(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\\r\\n\\r\\nlibrary BoringMath32 {\\r\\n    function add(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\",\"keccak256\":\"0x2d0e99483c5618251d4b52e8551918253bf044c63e0d09a2f1f652671f9ff762\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        },
        "BoringMath64": {
          "abi": [],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203aaf0c006788b81535dcf229f7cff071e9c6553b66d34f359e1d0b872d9937ff64736f6c634300060c0033",
              "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GASPRICE 0xAF 0xC STOP PUSH8 0x88B81535DCF229F7 0xCF CREATE PUSH18 0xE9C6553B66D34F359E1D0B872D9937FF6473 PUSH16 0x6C634300060C00330000000000000000 ",
              "sourceMap": "1394:278:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203aaf0c006788b81535dcf229f7cff071e9c6553b66d34f359e1d0b872d9937ff64736f6c634300060c0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GASPRICE 0xAF 0xC STOP PUSH8 0x88B81535DCF229F7 0xCF CREATE PUSH18 0xE9C6553B66D34F359E1D0B872D9937FF6473 PUSH16 0x6C634300060C00330000000000000000 ",
              "sourceMap": "1394:278:4:-:0;;;;;;;;"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "17200",
                "executionCost": "97",
                "totalCost": "17297"
              },
              "internal": {
                "add(uint64,uint64)": "infinite",
                "sub(uint64,uint64)": "infinite"
              }
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\":\"BoringMath64\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity 0.6.12;\\r\\n// a library for performing overflow-safe math, updated with awesomeness from of DappHub (https://github.com/dapphub/ds-math)\\r\\nlibrary BoringMath {\\r\\n    function add(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {require(b == 0 || (c = a * b)/b == a, \\\"BoringMath: Mul Overflow\\\");}\\r\\n    function to128(uint256 a) internal pure returns (uint128 c) {\\r\\n        require(a <= uint128(-1), \\\"BoringMath: uint128 Overflow\\\");\\r\\n        c = uint128(a);\\r\\n    }\\r\\n    function to64(uint256 a) internal pure returns (uint64 c) {\\r\\n        require(a <= uint64(-1), \\\"BoringMath: uint64 Overflow\\\");\\r\\n        c = uint64(a);\\r\\n    }\\r\\n    function to32(uint256 a) internal pure returns (uint32 c) {\\r\\n        require(a <= uint32(-1), \\\"BoringMath: uint32 Overflow\\\");\\r\\n        c = uint32(a);\\r\\n    }\\r\\n}\\r\\n\\r\\nlibrary BoringMath128 {\\r\\n    function add(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\\r\\n\\r\\nlibrary BoringMath64 {\\r\\n    function add(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\\r\\n\\r\\nlibrary BoringMath32 {\\r\\n    function add(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\",\"keccak256\":\"0x2d0e99483c5618251d4b52e8551918253bf044c63e0d09a2f1f652671f9ff762\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/GoldMinerV2.sol": {
        "GoldMinerV2": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract IGoldMiner",
                  "name": "_GOLD_MINER",
                  "type": "address"
                },
                {
                  "internalType": "contract IERC20",
                  "name": "_goldnugget",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_GOLD_PID",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "Deposit",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "EmergencyWithdraw",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "Harvest",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [],
              "name": "LogInit",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "allocPoint",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "contract IERC20",
                  "name": "lpToken",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "contract IRewarder",
                  "name": "rewarder",
                  "type": "address"
                }
              ],
              "name": "LogPoolAddition",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "allocPoint",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "contract IRewarder",
                  "name": "rewarder",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "overwrite",
                  "type": "bool"
                }
              ],
              "name": "LogSetPool",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint64",
                  "name": "lastRewardBlock",
                  "type": "uint64"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "lpSupply",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "accGoldNuggetPerShare",
                  "type": "uint256"
                }
              ],
              "name": "LogUpdatePool",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "Withdraw",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "GOLD_MINER",
              "outputs": [
                {
                  "internalType": "contract IGoldMiner",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "GOLD_PID",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "GOLN",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "allocPoint",
                  "type": "uint256"
                },
                {
                  "internalType": "contract IERC20",
                  "name": "_lpToken",
                  "type": "address"
                },
                {
                  "internalType": "contract IRewarder",
                  "name": "_rewarder",
                  "type": "address"
                }
              ],
              "name": "add",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes[]",
                  "name": "calls",
                  "type": "bytes[]"
                },
                {
                  "internalType": "bool",
                  "name": "revertOnFail",
                  "type": "bool"
                }
              ],
              "name": "batch",
              "outputs": [
                {
                  "internalType": "bool[]",
                  "name": "successes",
                  "type": "bool[]"
                },
                {
                  "internalType": "bytes[]",
                  "name": "results",
                  "type": "bytes[]"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "claimOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "deposit",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "emergencyWithdraw",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "goldnuggetPerBlock",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "harvest",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "harvestFromGoldMiner",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "dummyToken",
                  "type": "address"
                }
              ],
              "name": "init",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "lpToken",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256[]",
                  "name": "pids",
                  "type": "uint256[]"
                }
              ],
              "name": "massUpdatePools",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_pid",
                  "type": "uint256"
                }
              ],
              "name": "migrate",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "migrator",
              "outputs": [
                {
                  "internalType": "contract IMigratorMiner",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_pid",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_user",
                  "type": "address"
                }
              ],
              "name": "pendingGoldNugget",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "pending",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "pendingOwner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "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": "permitToken",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "poolInfo",
              "outputs": [
                {
                  "internalType": "uint128",
                  "name": "accGoldNuggetPerShare",
                  "type": "uint128"
                },
                {
                  "internalType": "uint64",
                  "name": "lastRewardBlock",
                  "type": "uint64"
                },
                {
                  "internalType": "uint64",
                  "name": "allocPoint",
                  "type": "uint64"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "poolLength",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "pools",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "rewarder",
              "outputs": [
                {
                  "internalType": "contract IRewarder",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_pid",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_allocPoint",
                  "type": "uint256"
                },
                {
                  "internalType": "contract IRewarder",
                  "name": "_rewarder",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "overwrite",
                  "type": "bool"
                }
              ],
              "name": "set",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "contract IMigratorMiner",
                  "name": "_migrator",
                  "type": "address"
                }
              ],
              "name": "setMigrator",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalAllocPoint",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "direct",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "renounce",
                  "type": "bool"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                }
              ],
              "name": "updatePool",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "uint128",
                      "name": "accGoldNuggetPerShare",
                      "type": "uint128"
                    },
                    {
                      "internalType": "uint64",
                      "name": "lastRewardBlock",
                      "type": "uint64"
                    },
                    {
                      "internalType": "uint64",
                      "name": "allocPoint",
                      "type": "uint64"
                    }
                  ],
                  "internalType": "struct GoldMinerV2.PoolInfo",
                  "name": "pool",
                  "type": "tuple"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "userInfo",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "int256",
                  "name": "rewardDebt",
                  "type": "int256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "withdraw",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "withdrawAndHarvest",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "add(uint256,address,address)": {
                "params": {
                  "_lpToken": "Address of the LP ERC-20 token.",
                  "_rewarder": "Address of the rewarder delegate.",
                  "allocPoint": "AP of the new pool."
                }
              },
              "constructor": {
                "params": {
                  "_GOLD_MINER": "The LuckySwap MCV1 contract address.",
                  "_GOLD_PID": "The pool ID of the dummy token on the base MCV1 contract.",
                  "_goldnugget": "The GOLN token contract address."
                }
              },
              "deposit(uint256,uint256,address)": {
                "params": {
                  "amount": "LP token amount to deposit.",
                  "pid": "The index of the pool. See `poolInfo`.",
                  "to": "The receiver of `amount` deposit benefit."
                }
              },
              "emergencyWithdraw(uint256,address)": {
                "params": {
                  "pid": "The index of the pool. See `poolInfo`.",
                  "to": "Receiver of the LP tokens."
                }
              },
              "harvest(uint256,address)": {
                "params": {
                  "pid": "The index of the pool. See `poolInfo`.",
                  "to": "Receiver of GOLN rewards."
                }
              },
              "init(address)": {
                "params": {
                  "dummyToken": "The address of the ERC-20 token to deposit into MCV1."
                }
              },
              "massUpdatePools(uint256[])": {
                "params": {
                  "pids": "Pool IDs of all to be updated. Make sure to update all active pools."
                }
              },
              "migrate(uint256)": {
                "params": {
                  "_pid": "The index of the pool. See `poolInfo`."
                }
              },
              "pendingGoldNugget(uint256,address)": {
                "params": {
                  "_pid": "The index of the pool. See `poolInfo`.",
                  "_user": "Address of user."
                },
                "returns": {
                  "pending": "GOLN reward for a given user."
                }
              },
              "set(uint256,uint256,address,bool)": {
                "params": {
                  "_allocPoint": "New AP of the pool.",
                  "_pid": "The index of the pool. See `poolInfo`.",
                  "_rewarder": "Address of the rewarder delegate.",
                  "overwrite": "True if _rewarder should be `set`. Otherwise `_rewarder` is ignored."
                }
              },
              "setMigrator(address)": {
                "params": {
                  "_migrator": "The contract address to set."
                }
              },
              "updatePool(uint256)": {
                "params": {
                  "pid": "The index of the pool. See `poolInfo`."
                },
                "returns": {
                  "pool": "Returns the pool that was updated."
                }
              },
              "withdraw(uint256,uint256,address)": {
                "params": {
                  "amount": "LP token amount to withdraw.",
                  "pid": "The index of the pool. See `poolInfo`.",
                  "to": "Receiver of the LP tokens."
                }
              },
              "withdrawAndHarvest(uint256,uint256,address)": {
                "params": {
                  "amount": "LP token amount to withdraw.",
                  "pid": "The index of the pool. See `poolInfo`.",
                  "to": "Receiver of the LP tokens and GOLN rewards."
                }
              }
            },
            "stateVariables": {
              "totalAllocPoint": {
                "details": "Total allocation points. Must be the sum of all allocation points in all pools."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60e06040523480156200001157600080fd5b50604051620031b5380380620031b5833981016040819052620000349162000097565b600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36001600160601b0319606093841b81166080529190921b1660a05260c052620000f7565b600080600060608486031215620000ac578283fd5b8351620000b981620000de565b6020850151909350620000cc81620000de565b80925050604084015190509250925092565b6001600160a01b0381168114620000f457600080fd5b50565b60805160601c60a05160601c60c0516130596200015c60003980610b935280610c6a5280610e885280610f655250806108f55280611c3d5280611f67525080610ad25280610b665280610db15280610e5b5280610f385280611f4352506130596000f3fe6080604052600436106101d85760003560e01c806357a5b58c11610102578063ab7de09811610095578063e30c397811610064578063e30c397814610535578063ecdad3fb1461054a578063fe4fc1401461055f578063ffb6c9ec14610574576101d8565b8063ab7de098146104b4578063c346253d146104d4578063d1abb907146104f4578063d2423b5114610514576101d8565b806388bba42f116100d157806388bba42f146104315780638da5cb5b146104515780638dbdbe6d1461046657806393f1a40b14610486576101d8565b806357a5b58c146103af57806378ed5d1f146103cf5780637c516e94146103fc5780637cd07e471461041c576101d8565b806323cf31181161017a57806335c5c6251161014957806335c5c62514610338578063454b06081461034d5780634e71e0c81461036d57806351eb05a614610382576101d8565b806323cf3118146102ce57806324fc3ea4146102ee5780632f940c70146103035780633550db2d14610323576101d8565b80631526fe27116101b65780631526fe271461024a57806317caf6f11461027957806318fccc761461028e57806319ab453c146102ae576101d8565b8063078dfbe7146101dd578063081e3eda146101ff5780630ad58d2f1461022a575b600080fd5b3480156101e957600080fd5b506101fd6101f83660046125dd565b610594565b005b34801561020b57600080fd5b50610214610683565b6040516102219190612ee7565b60405180910390f35b34801561023657600080fd5b506101fd6102453660046128fc565b610689565b34801561025657600080fd5b5061026a610265366004612867565b610819565b60405161022193929190612ebd565b34801561028557600080fd5b5061021461085b565b34801561029a57600080fd5b506101fd6102a9366004612897565b610861565b3480156102ba57600080fd5b506101fd6102c93660046126cb565b6109fb565b3480156102da57600080fd5b506101fd6102e93660046126cb565b610c1c565b3480156102fa57600080fd5b50610214610c68565b34801561030f57600080fd5b506101fd61031e366004612897565b610c8c565b34801561032f57600080fd5b50610214610dad565b34801561034457600080fd5b506101fd610f21565b34801561035957600080fd5b506101fd610368366004612867565b610fc4565b34801561037957600080fd5b506101fd611270565b34801561038e57600080fd5b506103a261039d366004612867565b6112fd565b6040516102219190612e84565b3480156103bb57600080fd5b506101fd6103ca366004612670565b611584565b3480156103db57600080fd5b506103ef6103ea366004612867565b6115b4565b60405161022191906129ca565b34801561040857600080fd5b506101fd610417366004612703565b6115db565b34801561042857600080fd5b506103ef61164f565b34801561043d57600080fd5b506101fd61044c366004612929565b61165e565b34801561045d57600080fd5b506103ef6117cb565b34801561047257600080fd5b506101fd6104813660046128fc565b6117da565b34801561049257600080fd5b506104a66104a1366004612897565b611965565b604051610221929190612f2f565b3480156104c057600080fd5b506101fd6104cf3660046128c6565b611989565b3480156104e057600080fd5b506103ef6104ef366004612867565b611b62565b34801561050057600080fd5b506101fd61050f3660046128fc565b611b6f565b610527610522366004612627565b611da2565b604051610221929190612a5c565b34801561054157600080fd5b506103ef611f32565b34801561055657600080fd5b506103ef611f41565b34801561056b57600080fd5b506103ef611f65565b34801561058057600080fd5b5061021461058f366004612897565b611f89565b6000546001600160a01b031633146105c75760405162461bcd60e51b81526004016105be90612cb4565b60405180910390fd5b8115610662576001600160a01b0383161515806105e15750805b6105fd5760405162461bcd60e51b81526004016105be90612c17565b600080546040516001600160a01b03808716939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0385166001600160a01b03199182161790915560018054909116905561067e565b600180546001600160a01b0319166001600160a01b0385161790555b505050565b60035490565b610691612575565b61069a846112fd565b600085815260066020908152604080832033845290915290208151919250906106ec9064e8d4a51000906106d89087906001600160801b0316612179565b816106df57fe5b60018401549190046121b6565b600182015580546106fd9085612203565b815560058054600091908790811061071157fe5b6000918252602090912001546001600160a01b03169050801561079757815460405163051ec19960e51b81526001600160a01b0383169163a3d8332091610764918a9133918a9160009190600401612ef0565b600060405180830381600087803b15801561077e57600080fd5b505af1158015610792573d6000803e3d6000fd5b505050505b6107c58486600489815481106107a957fe5b6000918252602090912001546001600160a01b03169190612226565b836001600160a01b031686336001600160a01b03167f8166bf25f8a2b7ed3c85049207da4358d16edbed977d23fa2ee6f0dde3ec2132886040516108099190612ee7565b60405180910390a4505050505050565b6003818154811061082657fe5b6000918252602090912001546001600160801b03811691506001600160401b03600160801b8204811691600160c01b90041683565b60075481565b610869612575565b610872836112fd565b6000848152600660209081526040808320338452909152812082518154939450909264e8d4a51000916108ae91906001600160801b0316612179565b816108b557fe5b04905060006108d96108d48460010154846121b690919063ffffffff16565b612314565b600184018390559050801561091c5761091c6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168683612226565b60006005878154811061092b57fe5b6000918252602090912001546001600160a01b0316905080156109b057835460405163051ec19960e51b81526001600160a01b0383169163a3d833209161097d918b9133918c91899190600401612ef0565b600060405180830381600087803b15801561099757600080fd5b505af11580156109ab573d6000803e3d6000fd5b505050505b86336001600160a01b03167f71bab65ced2e5750775a0613be067df48ef06cf92a496ebf7663ae0660924954846040516109ea9190612ee7565b60405180910390a350505050505050565b6040516370a0823160e01b81526000906001600160a01b038316906370a0823190610a2a9033906004016129ca565b60206040518083038186803b158015610a4257600080fd5b505afa158015610a56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7a919061287f565b905080610a995760405162461bcd60e51b81526004016105be90612b94565b610aae6001600160a01b03831633308461233a565b60405163095ea7b360e01b81526001600160a01b0383169063095ea7b390610afc907f0000000000000000000000000000000000000000000000000000000000000000908590600401612a43565b602060405180830381600087803b158015610b1657600080fd5b505af1158015610b2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4e91906126af565b50604051631c57762b60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e2bbb15890610bbd907f0000000000000000000000000000000000000000000000000000000000000000908590600401612f2f565b600060405180830381600087803b158015610bd757600080fd5b505af1158015610beb573d6000803e3d6000fd5b50506040517f98a9bd3b7a617581fc53b1e2992534e0e0cb5091c9d44aa1a7fc978f706caa83925060009150a15050565b6000546001600160a01b03163314610c465760405162461bcd60e51b81526004016105be90612cb4565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008281526006602090815260408083203384529091528120805482825560018201839055600580549293919286908110610cc357fe5b6000918252602090912001546001600160a01b031690508015610d485760405163051ec19960e51b81526001600160a01b0382169063a3d8332090610d15908890339089906000908190600401612ef0565b600060405180830381600087803b158015610d2f57600080fd5b505af1158015610d43573d6000803e3d6000fd5b505050505b610d5a8483600488815481106107a957fe5b836001600160a01b031685336001600160a01b03167f2cac5e20e1541d836381527a43f651851e302817b71dc8e810284e69210c1c6b85604051610d9e9190612ee7565b60405180910390a45050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166317caf6f16040518163ffffffff1660e01b815260040160206040518083038186803b158015610e0857600080fd5b505afa158015610e1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e40919061287f565b604051631526fe2760e01b8152610f14906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690631526fe2790610eb0907f000000000000000000000000000000000000000000000000000000000000000090600401612ee7565b60806040518083038186803b158015610ec857600080fd5b505afa158015610edc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f009190612815565b6020015168056bc75e2d6310000090612179565b81610f1b57fe5b04905090565b604051631c57762b60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e2bbb15890610f90907f000000000000000000000000000000000000000000000000000000000000000090600090600401612f2f565b600060405180830381600087803b158015610faa57600080fd5b505af1158015610fbe573d6000803e3d6000fd5b50505050565b6002546001600160a01b0316610fec5760405162461bcd60e51b81526004016105be90612ce9565b600060048281548110610ffb57fe5b60009182526020822001546040516370a0823160e01b81526001600160a01b03909116925082906370a08231906110369030906004016129ca565b60206040518083038186803b15801561104e57600080fd5b505afa158015611062573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611086919061287f565b60025460405163095ea7b360e01b81529192506001600160a01b038085169263095ea7b3926110bb9216908590600401612a43565b602060405180830381600087803b1580156110d557600080fd5b505af11580156110e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110d91906126af565b5060025460405163ce5494bb60e01b81526000916001600160a01b03169063ce5494bb9061113f9086906004016129ca565b602060405180830381600087803b15801561115957600080fd5b505af115801561116d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119191906126e7565b6040516370a0823160e01b81529091506001600160a01b038216906370a08231906111c09030906004016129ca565b60206040518083038186803b1580156111d857600080fd5b505afa1580156111ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611210919061287f565b821461122e5760405162461bcd60e51b81526004016105be90612e3c565b806004858154811061123c57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050505050565b6001546001600160a01b031633811461129b5760405162461bcd60e51b81526004016105be90612d20565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b611305612575565b6003828154811061131257fe5b60009182526020918290206040805160608101825292909101546001600160801b03811683526001600160401b03600160801b82048116948401859052600160c01b9091041690820152915043111561157f5760006004838154811061137457fe5b6000918252602090912001546040516370a0823160e01b81526001600160a01b03909116906370a08231906113ad9030906004016129ca565b60206040518083038186803b1580156113c557600080fd5b505afa1580156113d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113fd919061287f565b905080156114a357600061142783602001516001600160401b03164361220390919063ffffffff16565b9050600060075461145785604001516001600160401b031661145161144a610dad565b8690612179565b90612179565b8161145e57fe5b049050611495611484846114778464e8d4a51000612179565b8161147e57fe5b0461242b565b85516001600160801b031690612454565b6001600160801b0316845250505b6114ac43612483565b6001600160401b0316602083015260038054839190859081106114cb57fe5b6000918252602091829020835191018054848401516040958601516001600160801b03199092166001600160801b039094169390931767ffffffffffffffff60801b1916600160801b6001600160401b0394851602176001600160c01b0316600160c01b93909116929092029190911790558301518351915185927f0fc9545022a542541ad085d091fb09a2ab36fee366a4576ab63714ea907ad353926115759290918691612f3d565b60405180910390a2505b919050565b8060005b81811015610fbe576115ab84848381811061159f57fe5b905060200201356112fd565b50600101611588565b600481815481106115c157fe5b6000918252602090912001546001600160a01b0316905081565b60405163d505accf60e01b81526001600160a01b0389169063d505accf90611613908a908a908a908a908a908a908a90600401612a02565b600060405180830381600087803b15801561162d57600080fd5b505af1158015611641573d6000803e3d6000fd5b505050505050505050505050565b6002546001600160a01b031681565b6000546001600160a01b031633146116885760405162461bcd60e51b81526004016105be90612cb4565b6116c7836116c16003878154811061169c57fe5b60009182526020909120015460075490600160c01b90046001600160401b0316612203565b906124ac565b6007556116d383612483565b600385815481106116e057fe5b9060005260206000200160000160186101000a8154816001600160401b0302191690836001600160401b03160217905550801561175457816005858154811061172557fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b80611780576005848154811061176657fe5b6000918252602090912001546001600160a01b0316611782565b815b6001600160a01b0316847f95895a6ab1df54420d241b55243258a33e61b2194db66c1179ec521aae8e186585846040516117bd929190612f1f565b60405180910390a350505050565b6000546001600160a01b031681565b6117e2612575565b6117eb846112fd565b60008581526006602090815260408083206001600160a01b0387168452909152902080549192509061181d90856124ac565b815581516118549064e8d4a51000906118409087906001600160801b0316612179565b8161184757fe5b60018401549190046124cf565b816001018190555060006005868154811061186b57fe5b6000918252602090912001546001600160a01b0316905080156118f157815460405163051ec19960e51b81526001600160a01b0383169163a3d83320916118be918a918991829160009190600401612ef0565b600060405180830381600087803b1580156118d857600080fd5b505af11580156118ec573d6000803e3d6000fd5b505050505b61192133308760048a8154811061190457fe5b6000918252602090912001546001600160a01b031692919061233a565b836001600160a01b031686336001600160a01b03167f02d7e648dd130fc184d383e55bb126ac4c9c60e8f94bf05acdf557ba2d540b47886040516108099190612ee7565b60066020908152600092835260408084209091529082529020805460019091015482565b6000546001600160a01b031633146119b35760405162461bcd60e51b81526004016105be90612cb4565b60075443906119c290856124ac565b6007556004805460018181019092557f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b038087166001600160a01b03199283161790925560058054938401815560009081527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0909301805492861692909116919091179055604080516060810190915290815260039060208101611a6f84612483565b6001600160401b03168152602001611a8687612483565b6001600160401b039081169091528254600181810185556000948552602094859020845192018054958501516040909501518416600160c01b026001600160c01b0395909416600160801b0267ffffffffffffffff60801b196001600160801b039094166001600160801b0319909716969096179290921694909417929092161790556004546001600160a01b038085169290861691611b2591612203565b7f81ee0f8c5c46e2cb41984886f77a84181724abb86c32a5f6de539b07509d45e587604051611b549190612ee7565b60405180910390a450505050565b600581815481106115c157fe5b611b77612575565b611b80846112fd565b6000858152600660209081526040808320338452909152812082518154939450909264e8d4a5100091611bbc91906001600160801b0316612179565b81611bc357fe5b0490506000611be26108d48460010154846121b690919063ffffffff16565b9050611c1d64e8d4a51000611c0d86600001516001600160801b03168961217990919063ffffffff16565b81611c1457fe5b849190046121b6565b60018401558254611c2e9087612203565b8355611c646001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168683612226565b600060058881548110611c7357fe5b6000918252602090912001546001600160a01b031690508015611cf857835460405163051ec19960e51b81526001600160a01b0383169163a3d8332091611cc5918c9133918c91899190600401612ef0565b600060405180830381600087803b158015611cdf57600080fd5b505af1158015611cf3573d6000803e3d6000fd5b505050505b611d0a868860048b815481106107a957fe5b856001600160a01b031688336001600160a01b03167f8166bf25f8a2b7ed3c85049207da4358d16edbed977d23fa2ee6f0dde3ec21328a604051611d4e9190612ee7565b60405180910390a487336001600160a01b03167f71bab65ced2e5750775a0613be067df48ef06cf92a496ebf7663ae066092495484604051611d909190612ee7565b60405180910390a35050505050505050565b606080836001600160401b0381118015611dbb57600080fd5b50604051908082528060200260200182016040528015611de5578160200160208202803683370190505b509150836001600160401b0381118015611dfe57600080fd5b50604051908082528060200260200182016040528015611e3257816020015b6060815260200190600190039081611e1d5790505b50905060005b84811015611f29576000606030888885818110611e5157fe5b9050602002810190611e639190612f67565b604051611e7192919061299e565b600060405180830381855af49150503d8060008114611eac576040519150601f19603f3d011682016040523d82523d6000602084013e611eb1565b606091505b50915091508180611ec0575085155b611ec982612515565b90611ee75760405162461bcd60e51b81526004016105be9190612af6565b5081858481518110611ef557fe5b60200260200101901515908115158152505080848481518110611f1457fe5b60209081029190910101525050600101611e38565b50935093915050565b6001546001600160a01b031681565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000611f93612575565b60038481548110611fa057fe5b600091825260208083206040805160608101825291909301546001600160801b0380821683526001600160401b03600160801b8304811684860152600160c01b90920490911682850152888552600683528385206001600160a01b038916865290925291832082516004805494965091949216928890811061201e57fe5b6000918252602090912001546040516370a0823160e01b81526001600160a01b03909116906370a08231906120579030906004016129ca565b60206040518083038186803b15801561206f57600080fd5b505afa158015612083573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120a7919061287f565b905083602001516001600160401b0316431180156120c457508015155b156121405760006120eb85602001516001600160401b03164361220390919063ffffffff16565b9050600060075461210e87604001516001600160401b031661145161144a610dad565b8161211557fe5b04905061213b8361212b8364e8d4a51000612179565b8161213257fe5b869190046124ac565b935050505b6001830154835461216e916108d49164e8d4a51000906121609087612179565b8161216757fe5b04906121b6565b979650505050505050565b60008115806121945750508082028282828161219157fe5b04145b6121b05760405162461bcd60e51b81526004016105be90612e05565b92915050565b60008183038183128015906121cb5750838113155b806121e057506000831280156121e057508381135b6121fc5760405162461bcd60e51b81526004016105be90612d8c565b9392505050565b808203828111156121b05760405162461bcd60e51b81526004016105be90612b09565b60006060846001600160a01b031663a9059cbb858560405160240161224c929190612a43565b6040516020818303038152906040529060e01b6020820180516001600160e01b03838183161783525050505060405161228591906129ae565b6000604051808303816000865af19150503d80600081146122c2576040519150601f19603f3d011682016040523d82523d6000602084013e6122c7565b606091505b50915091508180156122f15750805115806122f15750808060200190518101906122f191906126af565b61230d5760405162461bcd60e51b81526004016105be90612b5d565b5050505050565b6000808212156123365760405162461bcd60e51b81526004016105be90612b38565b5090565b60006060856001600160a01b03166323b872dd868686604051602401612362939291906129de565b6040516020818303038152906040529060e01b6020820180516001600160e01b03838183161783525050505060405161239b91906129ae565b6000604051808303816000865af19150503d80600081146123d8576040519150601f19603f3d011682016040523d82523d6000602084013e6123dd565b606091505b509150915081801561240757508051158061240757508080602001905181019061240791906126af565b6124235760405162461bcd60e51b81526004016105be90612dd0565b505050505050565b60006001600160801b038211156123365760405162461bcd60e51b81526004016105be90612c46565b8181016001600160801b0380831690821610156121b05760405162461bcd60e51b81526004016105be90612c7d565b60006001600160401b038211156123365760405162461bcd60e51b81526004016105be90612d55565b818101818110156121b05760405162461bcd60e51b81526004016105be90612c7d565b60008282018183128015906124e45750838112155b806124f957506000831280156124f957508381125b6121fc5760405162461bcd60e51b81526004016105be90612bd6565b606060448251101561255b575060408051808201909152601d81527f5472616e73616374696f6e2072657665727465642073696c656e746c79000000602082015261157f565b600482019150818060200190518101906121b0919061278a565b604080516060810182526000808252602082018190529181019190915290565b60008083601f8401126125a6578182fd5b5081356001600160401b038111156125bc578182fd5b60208301915083602080830285010111156125d657600080fd5b9250929050565b6000806000606084860312156125f1578283fd5b83356125fc81612ffd565b9250602084013561260c81613015565b9150604084013561261c81613015565b809150509250925092565b60008060006040848603121561263b578283fd5b83356001600160401b03811115612650578384fd5b61265c86828701612595565b909450925050602084013561261c81613015565b60008060208385031215612682578182fd5b82356001600160401b03811115612697578283fd5b6126a385828601612595565b90969095509350505050565b6000602082840312156126c0578081fd5b81516121fc81613015565b6000602082840312156126dc578081fd5b81356121fc81612ffd565b6000602082840312156126f8578081fd5b81516121fc81612ffd565b600080600080600080600080610100898b03121561271f578384fd5b883561272a81612ffd565b9750602089013561273a81612ffd565b9650604089013561274a81612ffd565b9550606089013594506080890135935060a089013560ff8116811461276d578384fd5b979a969950949793969295929450505060c08201359160e0013590565b60006020828403121561279b578081fd5b81516001600160401b03808211156127b1578283fd5b818401915084601f8301126127c4578283fd5b8151818111156127d2578384fd5b6127e5601f8201601f1916602001612fab565b91508082528560208285010111156127fb578384fd5b61280c816020840160208601612fd1565b50949350505050565b600060808284031215612826578081fd5b6128306080612fab565b825161283b81612ffd565b808252506020830151602082015260408301516040820152606083015160608201528091505092915050565b600060208284031215612878578081fd5b5035919050565b600060208284031215612890578081fd5b5051919050565b600080604083850312156128a9578182fd5b8235915060208301356128bb81612ffd565b809150509250929050565b6000806000606084860312156128da578081fd5b8335925060208401356128ec81612ffd565b9150604084013561261c81612ffd565b600080600060608486031215612910578081fd5b8335925060208401359150604084013561261c81612ffd565b6000806000806080858703121561293e578182fd5b8435935060208501359250604085013561295781612ffd565b9150606085013561296781613015565b939692955090935050565b6000815180845261298a816020860160208601612fd1565b601f01601f19169290920160200192915050565b6000828483379101908152919050565b600082516129c0818460208701612fd1565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b03929092168252602082015260400190565b604080825283519082018190526000906020906060840190828701845b82811015612a97578151151584529284019290840190600101612a79565b50505083810382850152808551612aae8184612ee7565b91508192508381028201848801865b83811015612ae7578583038552612ad5838351612972565b94870194925090860190600101612abd565b50909998505050505050505050565b6000602082526121fc6020830184612972565b602080825260159082015274426f72696e674d6174683a20556e646572666c6f7760581b604082015260600190565b6020808252600b908201526a0496e7465676572203c20360ac1b604082015260600190565b6020808252601c908201527f426f72696e6745524332303a205472616e73666572206661696c656400000000604082015260600190565b60208082526022908201527f476f6c644d696e657256323a2042616c616e6365206d75737420657863656564604082015261020360f41b606082015260800190565b60208082526021908201527f5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252601590820152744f776e61626c653a207a65726f206164647265737360581b604082015260600190565b6020808252601c908201527f426f72696e674d6174683a2075696e74313238204f766572666c6f7700000000604082015260600190565b60208082526018908201527f426f72696e674d6174683a20416464204f766572666c6f770000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601c908201527f476f6c644d696e657256323a206e6f206d69677261746f722073657400000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e6572604082015260600190565b6020808252601b908201527f426f72696e674d6174683a2075696e743634204f766572666c6f770000000000604082015260600190565b60208082526024908201527f5369676e6564536166654d6174683a207375627472616374696f6e206f766572604082015263666c6f7760e01b606082015260800190565b6020808252818101527f426f72696e6745524332303a205472616e7366657246726f6d206661696c6564604082015260600190565b60208082526018908201527f426f72696e674d6174683a204d756c204f766572666c6f770000000000000000604082015260600190565b60208082526028908201527f476f6c644d696e657256323a206d696772617465642062616c616e6365206d756040820152670e6e840dac2e8c6d60c31b606082015260800190565b81516001600160801b031681526020808301516001600160401b0390811691830191909152604092830151169181019190915260600190565b6001600160801b039390931683526001600160401b03918216602084015216604082015260600190565b90815260200190565b9485526001600160a01b0393841660208601529190921660408401526060830191909152608082015260a00190565b9182521515602082015260400190565b918252602082015260400190565b6001600160401b0393909316835260208301919091526001600160801b0316604082015260600190565b6000808335601e19843603018112612f7d578283fd5b8301803591506001600160401b03821115612f96578283fd5b6020019150368190038213156125d657600080fd5b6040518181016001600160401b0381118282101715612fc957600080fd5b604052919050565b60005b83811015612fec578181015183820152602001612fd4565b83811115610fbe5750506000910152565b6001600160a01b038116811461301257600080fd5b50565b801515811461301257600080fdfea2646970667358221220ee47f82e52eb48a6c49f8d6d9a713909dfe00acf080d3836c417f0d77b87522d64736f6c634300060c0033",
              "opcodes": "PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x31B5 CODESIZE SUB DUP1 PUSH3 0x31B5 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x97 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP4 DUP5 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP2 SWAP1 SWAP3 SHL AND PUSH1 0xA0 MSTORE PUSH1 0xC0 MSTORE PUSH3 0xF7 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0xAC JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 MLOAD PUSH3 0xB9 DUP2 PUSH3 0xDE JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH3 0xCC DUP2 PUSH3 0xDE JUMP JUMPDEST DUP1 SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0xF4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH2 0x3059 PUSH3 0x15C PUSH1 0x0 CODECOPY DUP1 PUSH2 0xB93 MSTORE DUP1 PUSH2 0xC6A MSTORE DUP1 PUSH2 0xE88 MSTORE DUP1 PUSH2 0xF65 MSTORE POP DUP1 PUSH2 0x8F5 MSTORE DUP1 PUSH2 0x1C3D MSTORE DUP1 PUSH2 0x1F67 MSTORE POP DUP1 PUSH2 0xAD2 MSTORE DUP1 PUSH2 0xB66 MSTORE DUP1 PUSH2 0xDB1 MSTORE DUP1 PUSH2 0xE5B MSTORE DUP1 PUSH2 0xF38 MSTORE DUP1 PUSH2 0x1F43 MSTORE POP PUSH2 0x3059 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1D8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x57A5B58C GT PUSH2 0x102 JUMPI DUP1 PUSH4 0xAB7DE098 GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xE30C3978 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xE30C3978 EQ PUSH2 0x535 JUMPI DUP1 PUSH4 0xECDAD3FB EQ PUSH2 0x54A JUMPI DUP1 PUSH4 0xFE4FC140 EQ PUSH2 0x55F JUMPI DUP1 PUSH4 0xFFB6C9EC EQ PUSH2 0x574 JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0xAB7DE098 EQ PUSH2 0x4B4 JUMPI DUP1 PUSH4 0xC346253D EQ PUSH2 0x4D4 JUMPI DUP1 PUSH4 0xD1ABB907 EQ PUSH2 0x4F4 JUMPI DUP1 PUSH4 0xD2423B51 EQ PUSH2 0x514 JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0x88BBA42F GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0x88BBA42F EQ PUSH2 0x431 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x451 JUMPI DUP1 PUSH4 0x8DBDBE6D EQ PUSH2 0x466 JUMPI DUP1 PUSH4 0x93F1A40B EQ PUSH2 0x486 JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0x57A5B58C EQ PUSH2 0x3AF JUMPI DUP1 PUSH4 0x78ED5D1F EQ PUSH2 0x3CF JUMPI DUP1 PUSH4 0x7C516E94 EQ PUSH2 0x3FC JUMPI DUP1 PUSH4 0x7CD07E47 EQ PUSH2 0x41C JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0x23CF3118 GT PUSH2 0x17A JUMPI DUP1 PUSH4 0x35C5C625 GT PUSH2 0x149 JUMPI DUP1 PUSH4 0x35C5C625 EQ PUSH2 0x338 JUMPI DUP1 PUSH4 0x454B0608 EQ PUSH2 0x34D JUMPI DUP1 PUSH4 0x4E71E0C8 EQ PUSH2 0x36D JUMPI DUP1 PUSH4 0x51EB05A6 EQ PUSH2 0x382 JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0x23CF3118 EQ PUSH2 0x2CE JUMPI DUP1 PUSH4 0x24FC3EA4 EQ PUSH2 0x2EE JUMPI DUP1 PUSH4 0x2F940C70 EQ PUSH2 0x303 JUMPI DUP1 PUSH4 0x3550DB2D EQ PUSH2 0x323 JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0x1526FE27 GT PUSH2 0x1B6 JUMPI DUP1 PUSH4 0x1526FE27 EQ PUSH2 0x24A JUMPI DUP1 PUSH4 0x17CAF6F1 EQ PUSH2 0x279 JUMPI DUP1 PUSH4 0x18FCCC76 EQ PUSH2 0x28E JUMPI DUP1 PUSH4 0x19AB453C EQ PUSH2 0x2AE JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0x78DFBE7 EQ PUSH2 0x1DD JUMPI DUP1 PUSH4 0x81E3EDA EQ PUSH2 0x1FF JUMPI DUP1 PUSH4 0xAD58D2F EQ PUSH2 0x22A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x1F8 CALLDATASIZE PUSH1 0x4 PUSH2 0x25DD JUMP JUMPDEST PUSH2 0x594 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x214 PUSH2 0x683 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x221 SWAP2 SWAP1 PUSH2 0x2EE7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x236 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x245 CALLDATASIZE PUSH1 0x4 PUSH2 0x28FC JUMP JUMPDEST PUSH2 0x689 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x256 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x26A PUSH2 0x265 CALLDATASIZE PUSH1 0x4 PUSH2 0x2867 JUMP JUMPDEST PUSH2 0x819 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x221 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2EBD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x285 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x214 PUSH2 0x85B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x29A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x2A9 CALLDATASIZE PUSH1 0x4 PUSH2 0x2897 JUMP JUMPDEST PUSH2 0x861 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x2C9 CALLDATASIZE PUSH1 0x4 PUSH2 0x26CB JUMP JUMPDEST PUSH2 0x9FB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x2E9 CALLDATASIZE PUSH1 0x4 PUSH2 0x26CB JUMP JUMPDEST PUSH2 0xC1C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x214 PUSH2 0xC68 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x30F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x31E CALLDATASIZE PUSH1 0x4 PUSH2 0x2897 JUMP JUMPDEST PUSH2 0xC8C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x32F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x214 PUSH2 0xDAD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x344 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0xF21 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x359 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x368 CALLDATASIZE PUSH1 0x4 PUSH2 0x2867 JUMP JUMPDEST PUSH2 0xFC4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x379 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x1270 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x38E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A2 PUSH2 0x39D CALLDATASIZE PUSH1 0x4 PUSH2 0x2867 JUMP JUMPDEST PUSH2 0x12FD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x221 SWAP2 SWAP1 PUSH2 0x2E84 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x3CA CALLDATASIZE PUSH1 0x4 PUSH2 0x2670 JUMP JUMPDEST PUSH2 0x1584 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3EF PUSH2 0x3EA CALLDATASIZE PUSH1 0x4 PUSH2 0x2867 JUMP JUMPDEST PUSH2 0x15B4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x221 SWAP2 SWAP1 PUSH2 0x29CA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x408 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x417 CALLDATASIZE PUSH1 0x4 PUSH2 0x2703 JUMP JUMPDEST PUSH2 0x15DB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x428 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3EF PUSH2 0x164F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x43D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x44C CALLDATASIZE PUSH1 0x4 PUSH2 0x2929 JUMP JUMPDEST PUSH2 0x165E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x45D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3EF PUSH2 0x17CB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x472 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x481 CALLDATASIZE PUSH1 0x4 PUSH2 0x28FC JUMP JUMPDEST PUSH2 0x17DA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x492 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A6 PUSH2 0x4A1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2897 JUMP JUMPDEST PUSH2 0x1965 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x221 SWAP3 SWAP2 SWAP1 PUSH2 0x2F2F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x4CF CALLDATASIZE PUSH1 0x4 PUSH2 0x28C6 JUMP JUMPDEST PUSH2 0x1989 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3EF PUSH2 0x4EF CALLDATASIZE PUSH1 0x4 PUSH2 0x2867 JUMP JUMPDEST PUSH2 0x1B62 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x500 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x50F CALLDATASIZE PUSH1 0x4 PUSH2 0x28FC JUMP JUMPDEST PUSH2 0x1B6F JUMP JUMPDEST PUSH2 0x527 PUSH2 0x522 CALLDATASIZE PUSH1 0x4 PUSH2 0x2627 JUMP JUMPDEST PUSH2 0x1DA2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x221 SWAP3 SWAP2 SWAP1 PUSH2 0x2A5C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x541 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3EF PUSH2 0x1F32 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x556 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3EF PUSH2 0x1F41 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x56B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3EF PUSH2 0x1F65 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x580 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x214 PUSH2 0x58F CALLDATASIZE PUSH1 0x4 PUSH2 0x2897 JUMP JUMPDEST PUSH2 0x1F89 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x5C7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2CB4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 ISZERO PUSH2 0x662 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO ISZERO DUP1 PUSH2 0x5E1 JUMPI POP DUP1 JUMPDEST PUSH2 0x5FD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2C17 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE PUSH2 0x67E JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND OR SWAP1 SSTORE JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x691 PUSH2 0x2575 JUMP JUMPDEST PUSH2 0x69A DUP5 PUSH2 0x12FD JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP2 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH2 0x6EC SWAP1 PUSH5 0xE8D4A51000 SWAP1 PUSH2 0x6D8 SWAP1 DUP8 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x2179 JUMP JUMPDEST DUP2 PUSH2 0x6DF JUMPI INVALID JUMPDEST PUSH1 0x1 DUP5 ADD SLOAD SWAP2 SWAP1 DIV PUSH2 0x21B6 JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SSTORE DUP1 SLOAD PUSH2 0x6FD SWAP1 DUP6 PUSH2 0x2203 JUMP JUMPDEST DUP2 SSTORE PUSH1 0x5 DUP1 SLOAD PUSH1 0x0 SWAP2 SWAP1 DUP8 SWAP1 DUP2 LT PUSH2 0x711 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 ISZERO PUSH2 0x797 JUMPI DUP2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x51EC199 PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xA3D83320 SWAP2 PUSH2 0x764 SWAP2 DUP11 SWAP2 CALLER SWAP2 DUP11 SWAP2 PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x2EF0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x77E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x792 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x7C5 DUP5 DUP7 PUSH1 0x4 DUP10 DUP2 SLOAD DUP2 LT PUSH2 0x7A9 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 SWAP1 PUSH2 0x2226 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8166BF25F8A2B7ED3C85049207DA4358D16EDBED977D23FA2EE6F0DDE3EC2132 DUP9 PUSH1 0x40 MLOAD PUSH2 0x809 SWAP2 SWAP1 PUSH2 0x2EE7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x826 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP3 DIV DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV AND DUP4 JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x869 PUSH2 0x2575 JUMP JUMPDEST PUSH2 0x872 DUP4 PUSH2 0x12FD JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP3 MLOAD DUP2 SLOAD SWAP4 SWAP5 POP SWAP1 SWAP3 PUSH5 0xE8D4A51000 SWAP2 PUSH2 0x8AE SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x2179 JUMP JUMPDEST DUP2 PUSH2 0x8B5 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 PUSH2 0x8D9 PUSH2 0x8D4 DUP5 PUSH1 0x1 ADD SLOAD DUP5 PUSH2 0x21B6 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x2314 JUMP JUMPDEST PUSH1 0x1 DUP5 ADD DUP4 SWAP1 SSTORE SWAP1 POP DUP1 ISZERO PUSH2 0x91C JUMPI PUSH2 0x91C PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP7 DUP4 PUSH2 0x2226 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x5 DUP8 DUP2 SLOAD DUP2 LT PUSH2 0x92B JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 ISZERO PUSH2 0x9B0 JUMPI DUP4 SLOAD PUSH1 0x40 MLOAD PUSH4 0x51EC199 PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xA3D83320 SWAP2 PUSH2 0x97D SWAP2 DUP12 SWAP2 CALLER SWAP2 DUP13 SWAP2 DUP10 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x2EF0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x997 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9AB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST DUP7 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x71BAB65CED2E5750775A0613BE067DF48EF06CF92A496EBF7663AE0660924954 DUP5 PUSH1 0x40 MLOAD PUSH2 0x9EA SWAP2 SWAP1 PUSH2 0x2EE7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0xA2A SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x29CA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA56 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA7A SWAP2 SWAP1 PUSH2 0x287F JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0xA99 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2B94 JUMP JUMPDEST PUSH2 0xAAE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND CALLER ADDRESS DUP5 PUSH2 0x233A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH2 0xAFC SWAP1 PUSH32 0x0 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x2A43 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB2A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB4E SWAP2 SWAP1 PUSH2 0x26AF JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x1C57762B PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xE2BBB158 SWAP1 PUSH2 0xBBD SWAP1 PUSH32 0x0 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x2F2F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBEB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x98A9BD3B7A617581FC53B1E2992534E0E0CB5091C9D44AA1A7FC978F706CAA83 SWAP3 POP PUSH1 0x0 SWAP2 POP LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xC46 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2CB4 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP3 DUP3 SSTORE PUSH1 0x1 DUP3 ADD DUP4 SWAP1 SSTORE PUSH1 0x5 DUP1 SLOAD SWAP3 SWAP4 SWAP2 SWAP3 DUP7 SWAP1 DUP2 LT PUSH2 0xCC3 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 ISZERO PUSH2 0xD48 JUMPI PUSH1 0x40 MLOAD PUSH4 0x51EC199 PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0xA3D83320 SWAP1 PUSH2 0xD15 SWAP1 DUP9 SWAP1 CALLER SWAP1 DUP10 SWAP1 PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x2EF0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD2F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD43 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0xD5A DUP5 DUP4 PUSH1 0x4 DUP9 DUP2 SLOAD DUP2 LT PUSH2 0x7A9 JUMPI INVALID JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2CAC5E20E1541D836381527A43F651851E302817B71DC8E810284E69210C1C6B DUP6 PUSH1 0x40 MLOAD PUSH2 0xD9E SWAP2 SWAP1 PUSH2 0x2EE7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x17CAF6F1 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE1C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE40 SWAP2 SWAP1 PUSH2 0x287F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x1526FE27 PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0xF14 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x1526FE27 SWAP1 PUSH2 0xEB0 SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x2EE7 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xEDC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF00 SWAP2 SWAP1 PUSH2 0x2815 JUMP JUMPDEST PUSH1 0x20 ADD MLOAD PUSH9 0x56BC75E2D63100000 SWAP1 PUSH2 0x2179 JUMP JUMPDEST DUP2 PUSH2 0xF1B JUMPI INVALID JUMPDEST DIV SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x1C57762B PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xE2BBB158 SWAP1 PUSH2 0xF90 SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x2F2F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFAA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFBE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xFEC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2CE9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xFFB JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 KECCAK256 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP3 POP DUP3 SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x1036 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x29CA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x104E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1062 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1086 SWAP2 SWAP1 PUSH2 0x287F JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP3 PUSH4 0x95EA7B3 SWAP3 PUSH2 0x10BB SWAP3 AND SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x2A43 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x10E9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x110D SWAP2 SWAP1 PUSH2 0x26AF JUMP JUMPDEST POP PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0xCE5494BB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xCE5494BB SWAP1 PUSH2 0x113F SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x29CA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1159 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x116D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1191 SWAP2 SWAP1 PUSH2 0x26E7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x11C0 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x29CA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x11EC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1210 SWAP2 SWAP1 PUSH2 0x287F JUMP JUMPDEST DUP3 EQ PUSH2 0x122E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2E3C JUMP JUMPDEST DUP1 PUSH1 0x4 DUP6 DUP2 SLOAD DUP2 LT PUSH2 0x123C JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER DUP2 EQ PUSH2 0x129B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2D20 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x1305 PUSH2 0x2575 JUMP JUMPDEST PUSH1 0x3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1312 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE SWAP3 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP3 DIV DUP2 AND SWAP5 DUP5 ADD DUP6 SWAP1 MSTORE PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 SWAP2 DIV AND SWAP1 DUP3 ADD MSTORE SWAP2 POP NUMBER GT ISZERO PUSH2 0x157F JUMPI PUSH1 0x0 PUSH1 0x4 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x1374 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x13AD SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x29CA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x13C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x13D9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x13FD SWAP2 SWAP1 PUSH2 0x287F JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x14A3 JUMPI PUSH1 0x0 PUSH2 0x1427 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND NUMBER PUSH2 0x2203 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x7 SLOAD PUSH2 0x1457 DUP6 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH2 0x1451 PUSH2 0x144A PUSH2 0xDAD JUMP JUMPDEST DUP7 SWAP1 PUSH2 0x2179 JUMP JUMPDEST SWAP1 PUSH2 0x2179 JUMP JUMPDEST DUP2 PUSH2 0x145E JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x1495 PUSH2 0x1484 DUP5 PUSH2 0x1477 DUP5 PUSH5 0xE8D4A51000 PUSH2 0x2179 JUMP JUMPDEST DUP2 PUSH2 0x147E JUMPI INVALID JUMPDEST DIV PUSH2 0x242B JUMP JUMPDEST DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 PUSH2 0x2454 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP5 MSTORE POP POP JUMPDEST PUSH2 0x14AC NUMBER PUSH2 0x2483 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x3 DUP1 SLOAD DUP4 SWAP2 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0x14CB JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP2 DUP3 SWAP1 KECCAK256 DUP4 MLOAD SWAP2 ADD DUP1 SLOAD DUP5 DUP5 ADD MLOAD PUSH1 0x40 SWAP6 DUP7 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x80 SHL NOT AND PUSH1 0x1 PUSH1 0x80 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP5 DUP6 AND MUL OR PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x1 PUSH1 0xC0 SHL SWAP4 SWAP1 SWAP2 AND SWAP3 SWAP1 SWAP3 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP4 ADD MLOAD DUP4 MLOAD SWAP2 MLOAD DUP6 SWAP3 PUSH32 0xFC9545022A542541AD085D091FB09A2AB36FEE366A4576AB63714EA907AD353 SWAP3 PUSH2 0x1575 SWAP3 SWAP1 SWAP2 DUP7 SWAP2 PUSH2 0x2F3D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xFBE JUMPI PUSH2 0x15AB DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x159F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0x12FD JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x1588 JUMP JUMPDEST PUSH1 0x4 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x15C1 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD505ACCF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP1 PUSH4 0xD505ACCF SWAP1 PUSH2 0x1613 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x2A02 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x162D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1641 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1688 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2CB4 JUMP JUMPDEST PUSH2 0x16C7 DUP4 PUSH2 0x16C1 PUSH1 0x3 DUP8 DUP2 SLOAD DUP2 LT PUSH2 0x169C JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x7 SLOAD SWAP1 PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH2 0x2203 JUMP JUMPDEST SWAP1 PUSH2 0x24AC JUMP JUMPDEST PUSH1 0x7 SSTORE PUSH2 0x16D3 DUP4 PUSH2 0x2483 JUMP JUMPDEST PUSH1 0x3 DUP6 DUP2 SLOAD DUP2 LT PUSH2 0x16E0 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 ADD PUSH1 0x18 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP1 ISZERO PUSH2 0x1754 JUMPI DUP2 PUSH1 0x5 DUP6 DUP2 SLOAD DUP2 LT PUSH2 0x1725 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP JUMPDEST DUP1 PUSH2 0x1780 JUMPI PUSH1 0x5 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1766 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1782 JUMP JUMPDEST DUP2 JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH32 0x95895A6AB1DF54420D241B55243258A33E61B2194DB66C1179EC521AAE8E1865 DUP6 DUP5 PUSH1 0x40 MLOAD PUSH2 0x17BD SWAP3 SWAP2 SWAP1 PUSH2 0x2F1F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x17E2 PUSH2 0x2575 JUMP JUMPDEST PUSH2 0x17EB DUP5 PUSH2 0x12FD JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD SWAP2 SWAP3 POP SWAP1 PUSH2 0x181D SWAP1 DUP6 PUSH2 0x24AC JUMP JUMPDEST DUP2 SSTORE DUP2 MLOAD PUSH2 0x1854 SWAP1 PUSH5 0xE8D4A51000 SWAP1 PUSH2 0x1840 SWAP1 DUP8 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x2179 JUMP JUMPDEST DUP2 PUSH2 0x1847 JUMPI INVALID JUMPDEST PUSH1 0x1 DUP5 ADD SLOAD SWAP2 SWAP1 DIV PUSH2 0x24CF JUMP JUMPDEST DUP2 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x5 DUP7 DUP2 SLOAD DUP2 LT PUSH2 0x186B JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 ISZERO PUSH2 0x18F1 JUMPI DUP2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x51EC199 PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xA3D83320 SWAP2 PUSH2 0x18BE SWAP2 DUP11 SWAP2 DUP10 SWAP2 DUP3 SWAP2 PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x2EF0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x18EC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x1921 CALLER ADDRESS DUP8 PUSH1 0x4 DUP11 DUP2 SLOAD DUP2 LT PUSH2 0x1904 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 SWAP1 PUSH2 0x233A JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2D7E648DD130FC184D383E55BB126AC4C9C60E8F94BF05ACDF557BA2D540B47 DUP9 PUSH1 0x40 MLOAD PUSH2 0x809 SWAP2 SWAP1 PUSH2 0x2EE7 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD DUP3 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x19B3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2CB4 JUMP JUMPDEST PUSH1 0x7 SLOAD NUMBER SWAP1 PUSH2 0x19C2 SWAP1 DUP6 PUSH2 0x24AC JUMP JUMPDEST PUSH1 0x7 SSTORE PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 DUP2 DUP2 ADD SWAP1 SWAP3 SSTORE PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x5 DUP1 SLOAD SWAP4 DUP5 ADD DUP2 SSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH32 0x36B6384B5ECA791C62761152D0C79BB0604C104A5FB6F4EB0703F3154BB3DB0 SWAP1 SWAP4 ADD DUP1 SLOAD SWAP3 DUP7 AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP2 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x3 SWAP1 PUSH1 0x20 DUP2 ADD PUSH2 0x1A6F DUP5 PUSH2 0x2483 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1A86 DUP8 PUSH2 0x2483 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND SWAP1 SWAP2 MSTORE DUP3 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP6 SSTORE PUSH1 0x0 SWAP5 DUP6 MSTORE PUSH1 0x20 SWAP5 DUP6 SWAP1 KECCAK256 DUP5 MLOAD SWAP3 ADD DUP1 SLOAD SWAP6 DUP6 ADD MLOAD PUSH1 0x40 SWAP1 SWAP6 ADD MLOAD DUP5 AND PUSH1 0x1 PUSH1 0xC0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP6 SWAP1 SWAP5 AND PUSH1 0x1 PUSH1 0x80 SHL MUL PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x80 SHL NOT PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP5 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP1 SWAP8 AND SWAP7 SWAP1 SWAP7 OR SWAP3 SWAP1 SWAP3 AND SWAP5 SWAP1 SWAP5 OR SWAP3 SWAP1 SWAP3 AND OR SWAP1 SSTORE PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP3 SWAP1 DUP7 AND SWAP2 PUSH2 0x1B25 SWAP2 PUSH2 0x2203 JUMP JUMPDEST PUSH32 0x81EE0F8C5C46E2CB41984886F77A84181724ABB86C32A5F6DE539B07509D45E5 DUP8 PUSH1 0x40 MLOAD PUSH2 0x1B54 SWAP2 SWAP1 PUSH2 0x2EE7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH1 0x5 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x15C1 JUMPI INVALID JUMPDEST PUSH2 0x1B77 PUSH2 0x2575 JUMP JUMPDEST PUSH2 0x1B80 DUP5 PUSH2 0x12FD JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP3 MLOAD DUP2 SLOAD SWAP4 SWAP5 POP SWAP1 SWAP3 PUSH5 0xE8D4A51000 SWAP2 PUSH2 0x1BBC SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x2179 JUMP JUMPDEST DUP2 PUSH2 0x1BC3 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 PUSH2 0x1BE2 PUSH2 0x8D4 DUP5 PUSH1 0x1 ADD SLOAD DUP5 PUSH2 0x21B6 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x1C1D PUSH5 0xE8D4A51000 PUSH2 0x1C0D DUP7 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP10 PUSH2 0x2179 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH2 0x1C14 JUMPI INVALID JUMPDEST DUP5 SWAP2 SWAP1 DIV PUSH2 0x21B6 JUMP JUMPDEST PUSH1 0x1 DUP5 ADD SSTORE DUP3 SLOAD PUSH2 0x1C2E SWAP1 DUP8 PUSH2 0x2203 JUMP JUMPDEST DUP4 SSTORE PUSH2 0x1C64 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP7 DUP4 PUSH2 0x2226 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x5 DUP9 DUP2 SLOAD DUP2 LT PUSH2 0x1C73 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 ISZERO PUSH2 0x1CF8 JUMPI DUP4 SLOAD PUSH1 0x40 MLOAD PUSH4 0x51EC199 PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xA3D83320 SWAP2 PUSH2 0x1CC5 SWAP2 DUP13 SWAP2 CALLER SWAP2 DUP13 SWAP2 DUP10 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x2EF0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CDF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1CF3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x1D0A DUP7 DUP9 PUSH1 0x4 DUP12 DUP2 SLOAD DUP2 LT PUSH2 0x7A9 JUMPI INVALID JUMPDEST DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8166BF25F8A2B7ED3C85049207DA4358D16EDBED977D23FA2EE6F0DDE3EC2132 DUP11 PUSH1 0x40 MLOAD PUSH2 0x1D4E SWAP2 SWAP1 PUSH2 0x2EE7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 DUP8 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x71BAB65CED2E5750775A0613BE067DF48EF06CF92A496EBF7663AE0660924954 DUP5 PUSH1 0x40 MLOAD PUSH2 0x1D90 SWAP2 SWAP1 PUSH2 0x2EE7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP1 ISZERO PUSH2 0x1DBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1DE5 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP2 POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP1 ISZERO PUSH2 0x1DFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1E32 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1E1D JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x1F29 JUMPI PUSH1 0x0 PUSH1 0x60 ADDRESS DUP9 DUP9 DUP6 DUP2 DUP2 LT PUSH2 0x1E51 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1E63 SWAP2 SWAP1 PUSH2 0x2F67 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1E71 SWAP3 SWAP2 SWAP1 PUSH2 0x299E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1EAC JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1EB1 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 PUSH2 0x1EC0 JUMPI POP DUP6 ISZERO JUMPDEST PUSH2 0x1EC9 DUP3 PUSH2 0x2515 JUMP JUMPDEST SWAP1 PUSH2 0x1EE7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP2 SWAP1 PUSH2 0x2AF6 JUMP JUMPDEST POP DUP2 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1EF5 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 ISZERO ISZERO SWAP1 DUP2 ISZERO ISZERO DUP2 MSTORE POP POP DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1F14 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0x1E38 JUMP JUMPDEST POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F93 PUSH2 0x2575 JUMP JUMPDEST PUSH1 0x3 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1FA0 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE SWAP2 SWAP1 SWAP4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP4 DIV DUP2 AND DUP5 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 SWAP3 DIV SWAP1 SWAP2 AND DUP3 DUP6 ADD MSTORE DUP9 DUP6 MSTORE PUSH1 0x6 DUP4 MSTORE DUP4 DUP6 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP7 MSTORE SWAP1 SWAP3 MSTORE SWAP2 DUP4 KECCAK256 DUP3 MLOAD PUSH1 0x4 DUP1 SLOAD SWAP5 SWAP7 POP SWAP2 SWAP5 SWAP3 AND SWAP3 DUP9 SWAP1 DUP2 LT PUSH2 0x201E JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x2057 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x29CA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x206F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2083 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x20A7 SWAP2 SWAP1 PUSH2 0x287F JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND NUMBER GT DUP1 ISZERO PUSH2 0x20C4 JUMPI POP DUP1 ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x2140 JUMPI PUSH1 0x0 PUSH2 0x20EB DUP6 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND NUMBER PUSH2 0x2203 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x7 SLOAD PUSH2 0x210E DUP8 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH2 0x1451 PUSH2 0x144A PUSH2 0xDAD JUMP JUMPDEST DUP2 PUSH2 0x2115 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x213B DUP4 PUSH2 0x212B DUP4 PUSH5 0xE8D4A51000 PUSH2 0x2179 JUMP JUMPDEST DUP2 PUSH2 0x2132 JUMPI INVALID JUMPDEST DUP7 SWAP2 SWAP1 DIV PUSH2 0x24AC JUMP JUMPDEST SWAP4 POP POP POP JUMPDEST PUSH1 0x1 DUP4 ADD SLOAD DUP4 SLOAD PUSH2 0x216E SWAP2 PUSH2 0x8D4 SWAP2 PUSH5 0xE8D4A51000 SWAP1 PUSH2 0x2160 SWAP1 DUP8 PUSH2 0x2179 JUMP JUMPDEST DUP2 PUSH2 0x2167 JUMPI INVALID JUMPDEST DIV SWAP1 PUSH2 0x21B6 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0x2194 JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0x2191 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x21B0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2E05 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 SUB DUP2 DUP4 SLT DUP1 ISZERO SWAP1 PUSH2 0x21CB JUMPI POP DUP4 DUP2 SGT ISZERO JUMPDEST DUP1 PUSH2 0x21E0 JUMPI POP PUSH1 0x0 DUP4 SLT DUP1 ISZERO PUSH2 0x21E0 JUMPI POP DUP4 DUP2 SGT JUMPDEST PUSH2 0x21FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2D8C JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x21B0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2B09 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x224C SWAP3 SWAP2 SWAP1 PUSH2 0x2A43 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH2 0x2285 SWAP2 SWAP1 PUSH2 0x29AE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x22C2 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x22C7 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x22F1 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x22F1 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x22F1 SWAP2 SWAP1 PUSH2 0x26AF JUMP JUMPDEST PUSH2 0x230D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2B5D JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 SLT ISZERO PUSH2 0x2336 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2B38 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x23B872DD DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2362 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x29DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH2 0x239B SWAP2 SWAP1 PUSH2 0x29AE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x23D8 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x23DD JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x2407 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x2407 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2407 SWAP2 SWAP1 PUSH2 0x26AF JUMP JUMPDEST PUSH2 0x2423 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2DD0 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 GT ISZERO PUSH2 0x2336 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2C46 JUMP JUMPDEST DUP2 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP4 AND SWAP1 DUP3 AND LT ISZERO PUSH2 0x21B0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2C7D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x2336 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2D55 JUMP JUMPDEST DUP2 DUP2 ADD DUP2 DUP2 LT ISZERO PUSH2 0x21B0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2C7D JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP2 DUP4 SLT DUP1 ISZERO SWAP1 PUSH2 0x24E4 JUMPI POP DUP4 DUP2 SLT ISZERO JUMPDEST DUP1 PUSH2 0x24F9 JUMPI POP PUSH1 0x0 DUP4 SLT DUP1 ISZERO PUSH2 0x24F9 JUMPI POP DUP4 DUP2 SLT JUMPDEST PUSH2 0x21FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2BD6 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x44 DUP3 MLOAD LT ISZERO PUSH2 0x255B JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1D DUP2 MSTORE PUSH32 0x5472616E73616374696F6E2072657665727465642073696C656E746C79000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x157F JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SWAP2 POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x21B0 SWAP2 SWAP1 PUSH2 0x278A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x25A6 JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x25BC JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x25D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x25F1 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x25FC DUP2 PUSH2 0x2FFD JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x260C DUP2 PUSH2 0x3015 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x261C DUP2 PUSH2 0x3015 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x263B JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2650 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x265C DUP7 DUP3 DUP8 ADD PUSH2 0x2595 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x261C DUP2 PUSH2 0x3015 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2682 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2697 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x26A3 DUP6 DUP3 DUP7 ADD PUSH2 0x2595 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x26C0 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x21FC DUP2 PUSH2 0x3015 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x26DC JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x21FC DUP2 PUSH2 0x2FFD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x26F8 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x21FC DUP2 PUSH2 0x2FFD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x271F JUMPI DUP4 DUP5 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x272A DUP2 PUSH2 0x2FFD JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH2 0x273A DUP2 PUSH2 0x2FFD JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH2 0x274A DUP2 PUSH2 0x2FFD JUMP JUMPDEST SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD SWAP4 POP PUSH1 0xA0 DUP10 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x276D JUMPI DUP4 DUP5 REVERT JUMPDEST SWAP8 SWAP11 SWAP7 SWAP10 POP SWAP5 SWAP8 SWAP4 SWAP7 SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0xC0 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xE0 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x279B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x27B1 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x27C4 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x27D2 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x27E5 PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH2 0x2FAB JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP6 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x27FB JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x280C DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2FD1 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2826 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x2830 PUSH1 0x80 PUSH2 0x2FAB JUMP JUMPDEST DUP3 MLOAD PUSH2 0x283B DUP2 PUSH2 0x2FFD JUMP JUMPDEST DUP1 DUP3 MSTORE POP PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x60 DUP3 ADD MSTORE DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2878 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2890 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x28A9 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x28BB DUP2 PUSH2 0x2FFD JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x28DA JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x28EC DUP2 PUSH2 0x2FFD JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x261C DUP2 PUSH2 0x2FFD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2910 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x261C DUP2 PUSH2 0x2FFD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x293E JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0x2957 DUP2 PUSH2 0x2FFD JUMP JUMPDEST SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x2967 DUP2 PUSH2 0x3015 JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x298A DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2FD1 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 DUP4 CALLDATACOPY SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x29C0 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2FD1 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND DUP2 MSTORE SWAP6 SWAP1 SWAP7 AND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP4 MLOAD SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x20 SWAP1 PUSH1 0x60 DUP5 ADD SWAP1 DUP3 DUP8 ADD DUP5 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2A97 JUMPI DUP2 MLOAD ISZERO ISZERO DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2A79 JUMP JUMPDEST POP POP POP DUP4 DUP2 SUB DUP3 DUP6 ADD MSTORE DUP1 DUP6 MLOAD PUSH2 0x2AAE DUP2 DUP5 PUSH2 0x2EE7 JUMP JUMPDEST SWAP2 POP DUP2 SWAP3 POP DUP4 DUP2 MUL DUP3 ADD DUP5 DUP9 ADD DUP7 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2AE7 JUMPI DUP6 DUP4 SUB DUP6 MSTORE PUSH2 0x2AD5 DUP4 DUP4 MLOAD PUSH2 0x2972 JUMP JUMPDEST SWAP5 DUP8 ADD SWAP5 SWAP3 POP SWAP1 DUP7 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2ABD JUMP JUMPDEST POP SWAP1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x21FC PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2972 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH21 0x426F72696E674D6174683A20556E646572666C6F77 PUSH1 0x58 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xB SWAP1 DUP3 ADD MSTORE PUSH11 0x496E7465676572203C203 PUSH1 0xAC SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1C SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E6745524332303A205472616E73666572206661696C656400000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x22 SWAP1 DUP3 ADD MSTORE PUSH32 0x476F6C644D696E657256323A2042616C616E6365206D75737420657863656564 PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x203 PUSH1 0xF4 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x21 SWAP1 DUP3 ADD MSTORE PUSH32 0x5369676E6564536166654D6174683A206164646974696F6E206F766572666C6F PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH21 0x4F776E61626C653A207A65726F2061646472657373 PUSH1 0x58 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1C SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A2075696E74313238204F766572666C6F7700000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x18 SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A20416464204F766572666C6F770000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1C SWAP1 DUP3 ADD MSTORE PUSH32 0x476F6C644D696E657256323A206E6F206D69677261746F722073657400000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C657220213D2070656E64696E67206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A2075696E743634204F766572666C6F770000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x5369676E6564536166654D6174683A207375627472616374696F6E206F766572 PUSH1 0x40 DUP3 ADD MSTORE PUSH4 0x666C6F77 PUSH1 0xE0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x426F72696E6745524332303A205472616E7366657246726F6D206661696C6564 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x18 SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A204D756C204F766572666C6F770000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x28 SWAP1 DUP3 ADD MSTORE PUSH32 0x476F6C644D696E657256323A206D696772617465642062616C616E6365206D75 PUSH1 0x40 DUP3 ADD MSTORE PUSH8 0xE6E840DAC2E8C6D PUSH1 0xC3 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP3 DUP4 ADD MLOAD AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP5 DUP6 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x20 DUP7 ADD MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE ISZERO ISZERO PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x2F7D JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x2F96 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x25D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2FC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2FEC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2FD4 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xFBE JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x3012 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x3012 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEE SELFBALANCE 0xF8 0x2E MSTORE 0xEB 0x48 0xA6 0xC4 SWAP16 DUP14 PUSH14 0x9A713909DFE00ACF080D3836C417 CREATE 0xD7 PUSH28 0x87522D64736F6C634300060C00330000000000000000000000000000 ",
              "sourceMap": "1093:14113:5:-:0;;;3834:181;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;639:5:1;:18;;-1:-1:-1;;;;;;639:18:1;647:10;639:18;;;;;673:44;;647:10;;639:5;673:44;;639:5;;673:44;-1:-1:-1;;;;;;3926:24:5;;;;;;;;3960:18;;;;;;;3988:20;;1093:14113;;494:601:-1;;;;676:2;664:9;655:7;651:23;647:32;644:2;;;-1:-1;;682:12;644:2;277:6;271:13;289:52;335:5;289:52;:::i;:::-;864:2;928:22;;97:13;734:93;;-1:-1;115:47;97:13;115:47;:::i;:::-;872:88;;;;997:2;1051:9;1047:22;431:13;1005:74;;638:457;;;;;:::o;1636:145::-;-1:-1;;;;;1491:54;;1709:49;;1699:2;;1772:1;;1762:12;1699:2;1693:88;:::o;:::-;1093:14113:5;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {
                "890": [
                  {
                    "length": 32,
                    "start": 2770
                  },
                  {
                    "length": 32,
                    "start": 2918
                  },
                  {
                    "length": 32,
                    "start": 3505
                  },
                  {
                    "length": 32,
                    "start": 3675
                  },
                  {
                    "length": 32,
                    "start": 3896
                  },
                  {
                    "length": 32,
                    "start": 8003
                  }
                ],
                "893": [
                  {
                    "length": 32,
                    "start": 2293
                  },
                  {
                    "length": 32,
                    "start": 7229
                  },
                  {
                    "length": 32,
                    "start": 8039
                  }
                ],
                "896": [
                  {
                    "length": 32,
                    "start": 2963
                  },
                  {
                    "length": 32,
                    "start": 3178
                  },
                  {
                    "length": 32,
                    "start": 3720
                  },
                  {
                    "length": 32,
                    "start": 3941
                  }
                ]
              },
              "linkReferences": {},
              "object": "6080604052600436106101d85760003560e01c806357a5b58c11610102578063ab7de09811610095578063e30c397811610064578063e30c397814610535578063ecdad3fb1461054a578063fe4fc1401461055f578063ffb6c9ec14610574576101d8565b8063ab7de098146104b4578063c346253d146104d4578063d1abb907146104f4578063d2423b5114610514576101d8565b806388bba42f116100d157806388bba42f146104315780638da5cb5b146104515780638dbdbe6d1461046657806393f1a40b14610486576101d8565b806357a5b58c146103af57806378ed5d1f146103cf5780637c516e94146103fc5780637cd07e471461041c576101d8565b806323cf31181161017a57806335c5c6251161014957806335c5c62514610338578063454b06081461034d5780634e71e0c81461036d57806351eb05a614610382576101d8565b806323cf3118146102ce57806324fc3ea4146102ee5780632f940c70146103035780633550db2d14610323576101d8565b80631526fe27116101b65780631526fe271461024a57806317caf6f11461027957806318fccc761461028e57806319ab453c146102ae576101d8565b8063078dfbe7146101dd578063081e3eda146101ff5780630ad58d2f1461022a575b600080fd5b3480156101e957600080fd5b506101fd6101f83660046125dd565b610594565b005b34801561020b57600080fd5b50610214610683565b6040516102219190612ee7565b60405180910390f35b34801561023657600080fd5b506101fd6102453660046128fc565b610689565b34801561025657600080fd5b5061026a610265366004612867565b610819565b60405161022193929190612ebd565b34801561028557600080fd5b5061021461085b565b34801561029a57600080fd5b506101fd6102a9366004612897565b610861565b3480156102ba57600080fd5b506101fd6102c93660046126cb565b6109fb565b3480156102da57600080fd5b506101fd6102e93660046126cb565b610c1c565b3480156102fa57600080fd5b50610214610c68565b34801561030f57600080fd5b506101fd61031e366004612897565b610c8c565b34801561032f57600080fd5b50610214610dad565b34801561034457600080fd5b506101fd610f21565b34801561035957600080fd5b506101fd610368366004612867565b610fc4565b34801561037957600080fd5b506101fd611270565b34801561038e57600080fd5b506103a261039d366004612867565b6112fd565b6040516102219190612e84565b3480156103bb57600080fd5b506101fd6103ca366004612670565b611584565b3480156103db57600080fd5b506103ef6103ea366004612867565b6115b4565b60405161022191906129ca565b34801561040857600080fd5b506101fd610417366004612703565b6115db565b34801561042857600080fd5b506103ef61164f565b34801561043d57600080fd5b506101fd61044c366004612929565b61165e565b34801561045d57600080fd5b506103ef6117cb565b34801561047257600080fd5b506101fd6104813660046128fc565b6117da565b34801561049257600080fd5b506104a66104a1366004612897565b611965565b604051610221929190612f2f565b3480156104c057600080fd5b506101fd6104cf3660046128c6565b611989565b3480156104e057600080fd5b506103ef6104ef366004612867565b611b62565b34801561050057600080fd5b506101fd61050f3660046128fc565b611b6f565b610527610522366004612627565b611da2565b604051610221929190612a5c565b34801561054157600080fd5b506103ef611f32565b34801561055657600080fd5b506103ef611f41565b34801561056b57600080fd5b506103ef611f65565b34801561058057600080fd5b5061021461058f366004612897565b611f89565b6000546001600160a01b031633146105c75760405162461bcd60e51b81526004016105be90612cb4565b60405180910390fd5b8115610662576001600160a01b0383161515806105e15750805b6105fd5760405162461bcd60e51b81526004016105be90612c17565b600080546040516001600160a01b03808716939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0385166001600160a01b03199182161790915560018054909116905561067e565b600180546001600160a01b0319166001600160a01b0385161790555b505050565b60035490565b610691612575565b61069a846112fd565b600085815260066020908152604080832033845290915290208151919250906106ec9064e8d4a51000906106d89087906001600160801b0316612179565b816106df57fe5b60018401549190046121b6565b600182015580546106fd9085612203565b815560058054600091908790811061071157fe5b6000918252602090912001546001600160a01b03169050801561079757815460405163051ec19960e51b81526001600160a01b0383169163a3d8332091610764918a9133918a9160009190600401612ef0565b600060405180830381600087803b15801561077e57600080fd5b505af1158015610792573d6000803e3d6000fd5b505050505b6107c58486600489815481106107a957fe5b6000918252602090912001546001600160a01b03169190612226565b836001600160a01b031686336001600160a01b03167f8166bf25f8a2b7ed3c85049207da4358d16edbed977d23fa2ee6f0dde3ec2132886040516108099190612ee7565b60405180910390a4505050505050565b6003818154811061082657fe5b6000918252602090912001546001600160801b03811691506001600160401b03600160801b8204811691600160c01b90041683565b60075481565b610869612575565b610872836112fd565b6000848152600660209081526040808320338452909152812082518154939450909264e8d4a51000916108ae91906001600160801b0316612179565b816108b557fe5b04905060006108d96108d48460010154846121b690919063ffffffff16565b612314565b600184018390559050801561091c5761091c6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168683612226565b60006005878154811061092b57fe5b6000918252602090912001546001600160a01b0316905080156109b057835460405163051ec19960e51b81526001600160a01b0383169163a3d833209161097d918b9133918c91899190600401612ef0565b600060405180830381600087803b15801561099757600080fd5b505af11580156109ab573d6000803e3d6000fd5b505050505b86336001600160a01b03167f71bab65ced2e5750775a0613be067df48ef06cf92a496ebf7663ae0660924954846040516109ea9190612ee7565b60405180910390a350505050505050565b6040516370a0823160e01b81526000906001600160a01b038316906370a0823190610a2a9033906004016129ca565b60206040518083038186803b158015610a4257600080fd5b505afa158015610a56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7a919061287f565b905080610a995760405162461bcd60e51b81526004016105be90612b94565b610aae6001600160a01b03831633308461233a565b60405163095ea7b360e01b81526001600160a01b0383169063095ea7b390610afc907f0000000000000000000000000000000000000000000000000000000000000000908590600401612a43565b602060405180830381600087803b158015610b1657600080fd5b505af1158015610b2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4e91906126af565b50604051631c57762b60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e2bbb15890610bbd907f0000000000000000000000000000000000000000000000000000000000000000908590600401612f2f565b600060405180830381600087803b158015610bd757600080fd5b505af1158015610beb573d6000803e3d6000fd5b50506040517f98a9bd3b7a617581fc53b1e2992534e0e0cb5091c9d44aa1a7fc978f706caa83925060009150a15050565b6000546001600160a01b03163314610c465760405162461bcd60e51b81526004016105be90612cb4565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008281526006602090815260408083203384529091528120805482825560018201839055600580549293919286908110610cc357fe5b6000918252602090912001546001600160a01b031690508015610d485760405163051ec19960e51b81526001600160a01b0382169063a3d8332090610d15908890339089906000908190600401612ef0565b600060405180830381600087803b158015610d2f57600080fd5b505af1158015610d43573d6000803e3d6000fd5b505050505b610d5a8483600488815481106107a957fe5b836001600160a01b031685336001600160a01b03167f2cac5e20e1541d836381527a43f651851e302817b71dc8e810284e69210c1c6b85604051610d9e9190612ee7565b60405180910390a45050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166317caf6f16040518163ffffffff1660e01b815260040160206040518083038186803b158015610e0857600080fd5b505afa158015610e1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e40919061287f565b604051631526fe2760e01b8152610f14906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690631526fe2790610eb0907f000000000000000000000000000000000000000000000000000000000000000090600401612ee7565b60806040518083038186803b158015610ec857600080fd5b505afa158015610edc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f009190612815565b6020015168056bc75e2d6310000090612179565b81610f1b57fe5b04905090565b604051631c57762b60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e2bbb15890610f90907f000000000000000000000000000000000000000000000000000000000000000090600090600401612f2f565b600060405180830381600087803b158015610faa57600080fd5b505af1158015610fbe573d6000803e3d6000fd5b50505050565b6002546001600160a01b0316610fec5760405162461bcd60e51b81526004016105be90612ce9565b600060048281548110610ffb57fe5b60009182526020822001546040516370a0823160e01b81526001600160a01b03909116925082906370a08231906110369030906004016129ca565b60206040518083038186803b15801561104e57600080fd5b505afa158015611062573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611086919061287f565b60025460405163095ea7b360e01b81529192506001600160a01b038085169263095ea7b3926110bb9216908590600401612a43565b602060405180830381600087803b1580156110d557600080fd5b505af11580156110e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110d91906126af565b5060025460405163ce5494bb60e01b81526000916001600160a01b03169063ce5494bb9061113f9086906004016129ca565b602060405180830381600087803b15801561115957600080fd5b505af115801561116d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119191906126e7565b6040516370a0823160e01b81529091506001600160a01b038216906370a08231906111c09030906004016129ca565b60206040518083038186803b1580156111d857600080fd5b505afa1580156111ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611210919061287f565b821461122e5760405162461bcd60e51b81526004016105be90612e3c565b806004858154811061123c57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050505050565b6001546001600160a01b031633811461129b5760405162461bcd60e51b81526004016105be90612d20565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b611305612575565b6003828154811061131257fe5b60009182526020918290206040805160608101825292909101546001600160801b03811683526001600160401b03600160801b82048116948401859052600160c01b9091041690820152915043111561157f5760006004838154811061137457fe5b6000918252602090912001546040516370a0823160e01b81526001600160a01b03909116906370a08231906113ad9030906004016129ca565b60206040518083038186803b1580156113c557600080fd5b505afa1580156113d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113fd919061287f565b905080156114a357600061142783602001516001600160401b03164361220390919063ffffffff16565b9050600060075461145785604001516001600160401b031661145161144a610dad565b8690612179565b90612179565b8161145e57fe5b049050611495611484846114778464e8d4a51000612179565b8161147e57fe5b0461242b565b85516001600160801b031690612454565b6001600160801b0316845250505b6114ac43612483565b6001600160401b0316602083015260038054839190859081106114cb57fe5b6000918252602091829020835191018054848401516040958601516001600160801b03199092166001600160801b039094169390931767ffffffffffffffff60801b1916600160801b6001600160401b0394851602176001600160c01b0316600160c01b93909116929092029190911790558301518351915185927f0fc9545022a542541ad085d091fb09a2ab36fee366a4576ab63714ea907ad353926115759290918691612f3d565b60405180910390a2505b919050565b8060005b81811015610fbe576115ab84848381811061159f57fe5b905060200201356112fd565b50600101611588565b600481815481106115c157fe5b6000918252602090912001546001600160a01b0316905081565b60405163d505accf60e01b81526001600160a01b0389169063d505accf90611613908a908a908a908a908a908a908a90600401612a02565b600060405180830381600087803b15801561162d57600080fd5b505af1158015611641573d6000803e3d6000fd5b505050505050505050505050565b6002546001600160a01b031681565b6000546001600160a01b031633146116885760405162461bcd60e51b81526004016105be90612cb4565b6116c7836116c16003878154811061169c57fe5b60009182526020909120015460075490600160c01b90046001600160401b0316612203565b906124ac565b6007556116d383612483565b600385815481106116e057fe5b9060005260206000200160000160186101000a8154816001600160401b0302191690836001600160401b03160217905550801561175457816005858154811061172557fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b80611780576005848154811061176657fe5b6000918252602090912001546001600160a01b0316611782565b815b6001600160a01b0316847f95895a6ab1df54420d241b55243258a33e61b2194db66c1179ec521aae8e186585846040516117bd929190612f1f565b60405180910390a350505050565b6000546001600160a01b031681565b6117e2612575565b6117eb846112fd565b60008581526006602090815260408083206001600160a01b0387168452909152902080549192509061181d90856124ac565b815581516118549064e8d4a51000906118409087906001600160801b0316612179565b8161184757fe5b60018401549190046124cf565b816001018190555060006005868154811061186b57fe5b6000918252602090912001546001600160a01b0316905080156118f157815460405163051ec19960e51b81526001600160a01b0383169163a3d83320916118be918a918991829160009190600401612ef0565b600060405180830381600087803b1580156118d857600080fd5b505af11580156118ec573d6000803e3d6000fd5b505050505b61192133308760048a8154811061190457fe5b6000918252602090912001546001600160a01b031692919061233a565b836001600160a01b031686336001600160a01b03167f02d7e648dd130fc184d383e55bb126ac4c9c60e8f94bf05acdf557ba2d540b47886040516108099190612ee7565b60066020908152600092835260408084209091529082529020805460019091015482565b6000546001600160a01b031633146119b35760405162461bcd60e51b81526004016105be90612cb4565b60075443906119c290856124ac565b6007556004805460018181019092557f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b038087166001600160a01b03199283161790925560058054938401815560009081527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0909301805492861692909116919091179055604080516060810190915290815260039060208101611a6f84612483565b6001600160401b03168152602001611a8687612483565b6001600160401b039081169091528254600181810185556000948552602094859020845192018054958501516040909501518416600160c01b026001600160c01b0395909416600160801b0267ffffffffffffffff60801b196001600160801b039094166001600160801b0319909716969096179290921694909417929092161790556004546001600160a01b038085169290861691611b2591612203565b7f81ee0f8c5c46e2cb41984886f77a84181724abb86c32a5f6de539b07509d45e587604051611b549190612ee7565b60405180910390a450505050565b600581815481106115c157fe5b611b77612575565b611b80846112fd565b6000858152600660209081526040808320338452909152812082518154939450909264e8d4a5100091611bbc91906001600160801b0316612179565b81611bc357fe5b0490506000611be26108d48460010154846121b690919063ffffffff16565b9050611c1d64e8d4a51000611c0d86600001516001600160801b03168961217990919063ffffffff16565b81611c1457fe5b849190046121b6565b60018401558254611c2e9087612203565b8355611c646001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168683612226565b600060058881548110611c7357fe5b6000918252602090912001546001600160a01b031690508015611cf857835460405163051ec19960e51b81526001600160a01b0383169163a3d8332091611cc5918c9133918c91899190600401612ef0565b600060405180830381600087803b158015611cdf57600080fd5b505af1158015611cf3573d6000803e3d6000fd5b505050505b611d0a868860048b815481106107a957fe5b856001600160a01b031688336001600160a01b03167f8166bf25f8a2b7ed3c85049207da4358d16edbed977d23fa2ee6f0dde3ec21328a604051611d4e9190612ee7565b60405180910390a487336001600160a01b03167f71bab65ced2e5750775a0613be067df48ef06cf92a496ebf7663ae066092495484604051611d909190612ee7565b60405180910390a35050505050505050565b606080836001600160401b0381118015611dbb57600080fd5b50604051908082528060200260200182016040528015611de5578160200160208202803683370190505b509150836001600160401b0381118015611dfe57600080fd5b50604051908082528060200260200182016040528015611e3257816020015b6060815260200190600190039081611e1d5790505b50905060005b84811015611f29576000606030888885818110611e5157fe5b9050602002810190611e639190612f67565b604051611e7192919061299e565b600060405180830381855af49150503d8060008114611eac576040519150601f19603f3d011682016040523d82523d6000602084013e611eb1565b606091505b50915091508180611ec0575085155b611ec982612515565b90611ee75760405162461bcd60e51b81526004016105be9190612af6565b5081858481518110611ef557fe5b60200260200101901515908115158152505080848481518110611f1457fe5b60209081029190910101525050600101611e38565b50935093915050565b6001546001600160a01b031681565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000611f93612575565b60038481548110611fa057fe5b600091825260208083206040805160608101825291909301546001600160801b0380821683526001600160401b03600160801b8304811684860152600160c01b90920490911682850152888552600683528385206001600160a01b038916865290925291832082516004805494965091949216928890811061201e57fe5b6000918252602090912001546040516370a0823160e01b81526001600160a01b03909116906370a08231906120579030906004016129ca565b60206040518083038186803b15801561206f57600080fd5b505afa158015612083573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120a7919061287f565b905083602001516001600160401b0316431180156120c457508015155b156121405760006120eb85602001516001600160401b03164361220390919063ffffffff16565b9050600060075461210e87604001516001600160401b031661145161144a610dad565b8161211557fe5b04905061213b8361212b8364e8d4a51000612179565b8161213257fe5b869190046124ac565b935050505b6001830154835461216e916108d49164e8d4a51000906121609087612179565b8161216757fe5b04906121b6565b979650505050505050565b60008115806121945750508082028282828161219157fe5b04145b6121b05760405162461bcd60e51b81526004016105be90612e05565b92915050565b60008183038183128015906121cb5750838113155b806121e057506000831280156121e057508381135b6121fc5760405162461bcd60e51b81526004016105be90612d8c565b9392505050565b808203828111156121b05760405162461bcd60e51b81526004016105be90612b09565b60006060846001600160a01b031663a9059cbb858560405160240161224c929190612a43565b6040516020818303038152906040529060e01b6020820180516001600160e01b03838183161783525050505060405161228591906129ae565b6000604051808303816000865af19150503d80600081146122c2576040519150601f19603f3d011682016040523d82523d6000602084013e6122c7565b606091505b50915091508180156122f15750805115806122f15750808060200190518101906122f191906126af565b61230d5760405162461bcd60e51b81526004016105be90612b5d565b5050505050565b6000808212156123365760405162461bcd60e51b81526004016105be90612b38565b5090565b60006060856001600160a01b03166323b872dd868686604051602401612362939291906129de565b6040516020818303038152906040529060e01b6020820180516001600160e01b03838183161783525050505060405161239b91906129ae565b6000604051808303816000865af19150503d80600081146123d8576040519150601f19603f3d011682016040523d82523d6000602084013e6123dd565b606091505b509150915081801561240757508051158061240757508080602001905181019061240791906126af565b6124235760405162461bcd60e51b81526004016105be90612dd0565b505050505050565b60006001600160801b038211156123365760405162461bcd60e51b81526004016105be90612c46565b8181016001600160801b0380831690821610156121b05760405162461bcd60e51b81526004016105be90612c7d565b60006001600160401b038211156123365760405162461bcd60e51b81526004016105be90612d55565b818101818110156121b05760405162461bcd60e51b81526004016105be90612c7d565b60008282018183128015906124e45750838112155b806124f957506000831280156124f957508381125b6121fc5760405162461bcd60e51b81526004016105be90612bd6565b606060448251101561255b575060408051808201909152601d81527f5472616e73616374696f6e2072657665727465642073696c656e746c79000000602082015261157f565b600482019150818060200190518101906121b0919061278a565b604080516060810182526000808252602082018190529181019190915290565b60008083601f8401126125a6578182fd5b5081356001600160401b038111156125bc578182fd5b60208301915083602080830285010111156125d657600080fd5b9250929050565b6000806000606084860312156125f1578283fd5b83356125fc81612ffd565b9250602084013561260c81613015565b9150604084013561261c81613015565b809150509250925092565b60008060006040848603121561263b578283fd5b83356001600160401b03811115612650578384fd5b61265c86828701612595565b909450925050602084013561261c81613015565b60008060208385031215612682578182fd5b82356001600160401b03811115612697578283fd5b6126a385828601612595565b90969095509350505050565b6000602082840312156126c0578081fd5b81516121fc81613015565b6000602082840312156126dc578081fd5b81356121fc81612ffd565b6000602082840312156126f8578081fd5b81516121fc81612ffd565b600080600080600080600080610100898b03121561271f578384fd5b883561272a81612ffd565b9750602089013561273a81612ffd565b9650604089013561274a81612ffd565b9550606089013594506080890135935060a089013560ff8116811461276d578384fd5b979a969950949793969295929450505060c08201359160e0013590565b60006020828403121561279b578081fd5b81516001600160401b03808211156127b1578283fd5b818401915084601f8301126127c4578283fd5b8151818111156127d2578384fd5b6127e5601f8201601f1916602001612fab565b91508082528560208285010111156127fb578384fd5b61280c816020840160208601612fd1565b50949350505050565b600060808284031215612826578081fd5b6128306080612fab565b825161283b81612ffd565b808252506020830151602082015260408301516040820152606083015160608201528091505092915050565b600060208284031215612878578081fd5b5035919050565b600060208284031215612890578081fd5b5051919050565b600080604083850312156128a9578182fd5b8235915060208301356128bb81612ffd565b809150509250929050565b6000806000606084860312156128da578081fd5b8335925060208401356128ec81612ffd565b9150604084013561261c81612ffd565b600080600060608486031215612910578081fd5b8335925060208401359150604084013561261c81612ffd565b6000806000806080858703121561293e578182fd5b8435935060208501359250604085013561295781612ffd565b9150606085013561296781613015565b939692955090935050565b6000815180845261298a816020860160208601612fd1565b601f01601f19169290920160200192915050565b6000828483379101908152919050565b600082516129c0818460208701612fd1565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b03929092168252602082015260400190565b604080825283519082018190526000906020906060840190828701845b82811015612a97578151151584529284019290840190600101612a79565b50505083810382850152808551612aae8184612ee7565b91508192508381028201848801865b83811015612ae7578583038552612ad5838351612972565b94870194925090860190600101612abd565b50909998505050505050505050565b6000602082526121fc6020830184612972565b602080825260159082015274426f72696e674d6174683a20556e646572666c6f7760581b604082015260600190565b6020808252600b908201526a0496e7465676572203c20360ac1b604082015260600190565b6020808252601c908201527f426f72696e6745524332303a205472616e73666572206661696c656400000000604082015260600190565b60208082526022908201527f476f6c644d696e657256323a2042616c616e6365206d75737420657863656564604082015261020360f41b606082015260800190565b60208082526021908201527f5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252601590820152744f776e61626c653a207a65726f206164647265737360581b604082015260600190565b6020808252601c908201527f426f72696e674d6174683a2075696e74313238204f766572666c6f7700000000604082015260600190565b60208082526018908201527f426f72696e674d6174683a20416464204f766572666c6f770000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601c908201527f476f6c644d696e657256323a206e6f206d69677261746f722073657400000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e6572604082015260600190565b6020808252601b908201527f426f72696e674d6174683a2075696e743634204f766572666c6f770000000000604082015260600190565b60208082526024908201527f5369676e6564536166654d6174683a207375627472616374696f6e206f766572604082015263666c6f7760e01b606082015260800190565b6020808252818101527f426f72696e6745524332303a205472616e7366657246726f6d206661696c6564604082015260600190565b60208082526018908201527f426f72696e674d6174683a204d756c204f766572666c6f770000000000000000604082015260600190565b60208082526028908201527f476f6c644d696e657256323a206d696772617465642062616c616e6365206d756040820152670e6e840dac2e8c6d60c31b606082015260800190565b81516001600160801b031681526020808301516001600160401b0390811691830191909152604092830151169181019190915260600190565b6001600160801b039390931683526001600160401b03918216602084015216604082015260600190565b90815260200190565b9485526001600160a01b0393841660208601529190921660408401526060830191909152608082015260a00190565b9182521515602082015260400190565b918252602082015260400190565b6001600160401b0393909316835260208301919091526001600160801b0316604082015260600190565b6000808335601e19843603018112612f7d578283fd5b8301803591506001600160401b03821115612f96578283fd5b6020019150368190038213156125d657600080fd5b6040518181016001600160401b0381118282101715612fc957600080fd5b604052919050565b60005b83811015612fec578181015183820152602001612fd4565b83811115610fbe5750506000910152565b6001600160a01b038116811461301257600080fd5b50565b801515811461301257600080fdfea2646970667358221220ee47f82e52eb48a6c49f8d6d9a713909dfe00acf080d3836c417f0d77b87522d64736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1D8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x57A5B58C GT PUSH2 0x102 JUMPI DUP1 PUSH4 0xAB7DE098 GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xE30C3978 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xE30C3978 EQ PUSH2 0x535 JUMPI DUP1 PUSH4 0xECDAD3FB EQ PUSH2 0x54A JUMPI DUP1 PUSH4 0xFE4FC140 EQ PUSH2 0x55F JUMPI DUP1 PUSH4 0xFFB6C9EC EQ PUSH2 0x574 JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0xAB7DE098 EQ PUSH2 0x4B4 JUMPI DUP1 PUSH4 0xC346253D EQ PUSH2 0x4D4 JUMPI DUP1 PUSH4 0xD1ABB907 EQ PUSH2 0x4F4 JUMPI DUP1 PUSH4 0xD2423B51 EQ PUSH2 0x514 JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0x88BBA42F GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0x88BBA42F EQ PUSH2 0x431 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x451 JUMPI DUP1 PUSH4 0x8DBDBE6D EQ PUSH2 0x466 JUMPI DUP1 PUSH4 0x93F1A40B EQ PUSH2 0x486 JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0x57A5B58C EQ PUSH2 0x3AF JUMPI DUP1 PUSH4 0x78ED5D1F EQ PUSH2 0x3CF JUMPI DUP1 PUSH4 0x7C516E94 EQ PUSH2 0x3FC JUMPI DUP1 PUSH4 0x7CD07E47 EQ PUSH2 0x41C JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0x23CF3118 GT PUSH2 0x17A JUMPI DUP1 PUSH4 0x35C5C625 GT PUSH2 0x149 JUMPI DUP1 PUSH4 0x35C5C625 EQ PUSH2 0x338 JUMPI DUP1 PUSH4 0x454B0608 EQ PUSH2 0x34D JUMPI DUP1 PUSH4 0x4E71E0C8 EQ PUSH2 0x36D JUMPI DUP1 PUSH4 0x51EB05A6 EQ PUSH2 0x382 JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0x23CF3118 EQ PUSH2 0x2CE JUMPI DUP1 PUSH4 0x24FC3EA4 EQ PUSH2 0x2EE JUMPI DUP1 PUSH4 0x2F940C70 EQ PUSH2 0x303 JUMPI DUP1 PUSH4 0x3550DB2D EQ PUSH2 0x323 JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0x1526FE27 GT PUSH2 0x1B6 JUMPI DUP1 PUSH4 0x1526FE27 EQ PUSH2 0x24A JUMPI DUP1 PUSH4 0x17CAF6F1 EQ PUSH2 0x279 JUMPI DUP1 PUSH4 0x18FCCC76 EQ PUSH2 0x28E JUMPI DUP1 PUSH4 0x19AB453C EQ PUSH2 0x2AE JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0x78DFBE7 EQ PUSH2 0x1DD JUMPI DUP1 PUSH4 0x81E3EDA EQ PUSH2 0x1FF JUMPI DUP1 PUSH4 0xAD58D2F EQ PUSH2 0x22A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x1F8 CALLDATASIZE PUSH1 0x4 PUSH2 0x25DD JUMP JUMPDEST PUSH2 0x594 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x214 PUSH2 0x683 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x221 SWAP2 SWAP1 PUSH2 0x2EE7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x236 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x245 CALLDATASIZE PUSH1 0x4 PUSH2 0x28FC JUMP JUMPDEST PUSH2 0x689 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x256 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x26A PUSH2 0x265 CALLDATASIZE PUSH1 0x4 PUSH2 0x2867 JUMP JUMPDEST PUSH2 0x819 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x221 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2EBD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x285 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x214 PUSH2 0x85B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x29A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x2A9 CALLDATASIZE PUSH1 0x4 PUSH2 0x2897 JUMP JUMPDEST PUSH2 0x861 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x2C9 CALLDATASIZE PUSH1 0x4 PUSH2 0x26CB JUMP JUMPDEST PUSH2 0x9FB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x2E9 CALLDATASIZE PUSH1 0x4 PUSH2 0x26CB JUMP JUMPDEST PUSH2 0xC1C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x214 PUSH2 0xC68 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x30F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x31E CALLDATASIZE PUSH1 0x4 PUSH2 0x2897 JUMP JUMPDEST PUSH2 0xC8C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x32F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x214 PUSH2 0xDAD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x344 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0xF21 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x359 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x368 CALLDATASIZE PUSH1 0x4 PUSH2 0x2867 JUMP JUMPDEST PUSH2 0xFC4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x379 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x1270 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x38E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A2 PUSH2 0x39D CALLDATASIZE PUSH1 0x4 PUSH2 0x2867 JUMP JUMPDEST PUSH2 0x12FD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x221 SWAP2 SWAP1 PUSH2 0x2E84 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x3CA CALLDATASIZE PUSH1 0x4 PUSH2 0x2670 JUMP JUMPDEST PUSH2 0x1584 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3EF PUSH2 0x3EA CALLDATASIZE PUSH1 0x4 PUSH2 0x2867 JUMP JUMPDEST PUSH2 0x15B4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x221 SWAP2 SWAP1 PUSH2 0x29CA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x408 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x417 CALLDATASIZE PUSH1 0x4 PUSH2 0x2703 JUMP JUMPDEST PUSH2 0x15DB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x428 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3EF PUSH2 0x164F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x43D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x44C CALLDATASIZE PUSH1 0x4 PUSH2 0x2929 JUMP JUMPDEST PUSH2 0x165E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x45D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3EF PUSH2 0x17CB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x472 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x481 CALLDATASIZE PUSH1 0x4 PUSH2 0x28FC JUMP JUMPDEST PUSH2 0x17DA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x492 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A6 PUSH2 0x4A1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2897 JUMP JUMPDEST PUSH2 0x1965 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x221 SWAP3 SWAP2 SWAP1 PUSH2 0x2F2F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x4CF CALLDATASIZE PUSH1 0x4 PUSH2 0x28C6 JUMP JUMPDEST PUSH2 0x1989 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3EF PUSH2 0x4EF CALLDATASIZE PUSH1 0x4 PUSH2 0x2867 JUMP JUMPDEST PUSH2 0x1B62 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x500 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD PUSH2 0x50F CALLDATASIZE PUSH1 0x4 PUSH2 0x28FC JUMP JUMPDEST PUSH2 0x1B6F JUMP JUMPDEST PUSH2 0x527 PUSH2 0x522 CALLDATASIZE PUSH1 0x4 PUSH2 0x2627 JUMP JUMPDEST PUSH2 0x1DA2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x221 SWAP3 SWAP2 SWAP1 PUSH2 0x2A5C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x541 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3EF PUSH2 0x1F32 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x556 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3EF PUSH2 0x1F41 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x56B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3EF PUSH2 0x1F65 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x580 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x214 PUSH2 0x58F CALLDATASIZE PUSH1 0x4 PUSH2 0x2897 JUMP JUMPDEST PUSH2 0x1F89 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x5C7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2CB4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 ISZERO PUSH2 0x662 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO ISZERO DUP1 PUSH2 0x5E1 JUMPI POP DUP1 JUMPDEST PUSH2 0x5FD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2C17 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE PUSH2 0x67E JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND OR SWAP1 SSTORE JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x691 PUSH2 0x2575 JUMP JUMPDEST PUSH2 0x69A DUP5 PUSH2 0x12FD JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP2 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH2 0x6EC SWAP1 PUSH5 0xE8D4A51000 SWAP1 PUSH2 0x6D8 SWAP1 DUP8 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x2179 JUMP JUMPDEST DUP2 PUSH2 0x6DF JUMPI INVALID JUMPDEST PUSH1 0x1 DUP5 ADD SLOAD SWAP2 SWAP1 DIV PUSH2 0x21B6 JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SSTORE DUP1 SLOAD PUSH2 0x6FD SWAP1 DUP6 PUSH2 0x2203 JUMP JUMPDEST DUP2 SSTORE PUSH1 0x5 DUP1 SLOAD PUSH1 0x0 SWAP2 SWAP1 DUP8 SWAP1 DUP2 LT PUSH2 0x711 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 ISZERO PUSH2 0x797 JUMPI DUP2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x51EC199 PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xA3D83320 SWAP2 PUSH2 0x764 SWAP2 DUP11 SWAP2 CALLER SWAP2 DUP11 SWAP2 PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x2EF0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x77E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x792 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x7C5 DUP5 DUP7 PUSH1 0x4 DUP10 DUP2 SLOAD DUP2 LT PUSH2 0x7A9 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 SWAP1 PUSH2 0x2226 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8166BF25F8A2B7ED3C85049207DA4358D16EDBED977D23FA2EE6F0DDE3EC2132 DUP9 PUSH1 0x40 MLOAD PUSH2 0x809 SWAP2 SWAP1 PUSH2 0x2EE7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x826 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP3 DIV DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV AND DUP4 JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x869 PUSH2 0x2575 JUMP JUMPDEST PUSH2 0x872 DUP4 PUSH2 0x12FD JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP3 MLOAD DUP2 SLOAD SWAP4 SWAP5 POP SWAP1 SWAP3 PUSH5 0xE8D4A51000 SWAP2 PUSH2 0x8AE SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x2179 JUMP JUMPDEST DUP2 PUSH2 0x8B5 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 PUSH2 0x8D9 PUSH2 0x8D4 DUP5 PUSH1 0x1 ADD SLOAD DUP5 PUSH2 0x21B6 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x2314 JUMP JUMPDEST PUSH1 0x1 DUP5 ADD DUP4 SWAP1 SSTORE SWAP1 POP DUP1 ISZERO PUSH2 0x91C JUMPI PUSH2 0x91C PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP7 DUP4 PUSH2 0x2226 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x5 DUP8 DUP2 SLOAD DUP2 LT PUSH2 0x92B JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 ISZERO PUSH2 0x9B0 JUMPI DUP4 SLOAD PUSH1 0x40 MLOAD PUSH4 0x51EC199 PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xA3D83320 SWAP2 PUSH2 0x97D SWAP2 DUP12 SWAP2 CALLER SWAP2 DUP13 SWAP2 DUP10 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x2EF0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x997 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9AB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST DUP7 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x71BAB65CED2E5750775A0613BE067DF48EF06CF92A496EBF7663AE0660924954 DUP5 PUSH1 0x40 MLOAD PUSH2 0x9EA SWAP2 SWAP1 PUSH2 0x2EE7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0xA2A SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x29CA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA56 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA7A SWAP2 SWAP1 PUSH2 0x287F JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0xA99 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2B94 JUMP JUMPDEST PUSH2 0xAAE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND CALLER ADDRESS DUP5 PUSH2 0x233A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH2 0xAFC SWAP1 PUSH32 0x0 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x2A43 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB2A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB4E SWAP2 SWAP1 PUSH2 0x26AF JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x1C57762B PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xE2BBB158 SWAP1 PUSH2 0xBBD SWAP1 PUSH32 0x0 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x2F2F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBEB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x98A9BD3B7A617581FC53B1E2992534E0E0CB5091C9D44AA1A7FC978F706CAA83 SWAP3 POP PUSH1 0x0 SWAP2 POP LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xC46 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2CB4 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP3 DUP3 SSTORE PUSH1 0x1 DUP3 ADD DUP4 SWAP1 SSTORE PUSH1 0x5 DUP1 SLOAD SWAP3 SWAP4 SWAP2 SWAP3 DUP7 SWAP1 DUP2 LT PUSH2 0xCC3 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 ISZERO PUSH2 0xD48 JUMPI PUSH1 0x40 MLOAD PUSH4 0x51EC199 PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0xA3D83320 SWAP1 PUSH2 0xD15 SWAP1 DUP9 SWAP1 CALLER SWAP1 DUP10 SWAP1 PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x2EF0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD2F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD43 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0xD5A DUP5 DUP4 PUSH1 0x4 DUP9 DUP2 SLOAD DUP2 LT PUSH2 0x7A9 JUMPI INVALID JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2CAC5E20E1541D836381527A43F651851E302817B71DC8E810284E69210C1C6B DUP6 PUSH1 0x40 MLOAD PUSH2 0xD9E SWAP2 SWAP1 PUSH2 0x2EE7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x17CAF6F1 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE1C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE40 SWAP2 SWAP1 PUSH2 0x287F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x1526FE27 PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0xF14 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x1526FE27 SWAP1 PUSH2 0xEB0 SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x2EE7 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xEDC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF00 SWAP2 SWAP1 PUSH2 0x2815 JUMP JUMPDEST PUSH1 0x20 ADD MLOAD PUSH9 0x56BC75E2D63100000 SWAP1 PUSH2 0x2179 JUMP JUMPDEST DUP2 PUSH2 0xF1B JUMPI INVALID JUMPDEST DIV SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x1C57762B PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xE2BBB158 SWAP1 PUSH2 0xF90 SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x2F2F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFAA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFBE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xFEC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2CE9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xFFB JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 KECCAK256 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP3 POP DUP3 SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x1036 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x29CA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x104E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1062 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1086 SWAP2 SWAP1 PUSH2 0x287F JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP3 PUSH4 0x95EA7B3 SWAP3 PUSH2 0x10BB SWAP3 AND SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x2A43 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x10E9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x110D SWAP2 SWAP1 PUSH2 0x26AF JUMP JUMPDEST POP PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0xCE5494BB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xCE5494BB SWAP1 PUSH2 0x113F SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x29CA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1159 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x116D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1191 SWAP2 SWAP1 PUSH2 0x26E7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x11C0 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x29CA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x11EC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1210 SWAP2 SWAP1 PUSH2 0x287F JUMP JUMPDEST DUP3 EQ PUSH2 0x122E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2E3C JUMP JUMPDEST DUP1 PUSH1 0x4 DUP6 DUP2 SLOAD DUP2 LT PUSH2 0x123C JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER DUP2 EQ PUSH2 0x129B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2D20 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x1305 PUSH2 0x2575 JUMP JUMPDEST PUSH1 0x3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1312 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE SWAP3 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP3 DIV DUP2 AND SWAP5 DUP5 ADD DUP6 SWAP1 MSTORE PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 SWAP2 DIV AND SWAP1 DUP3 ADD MSTORE SWAP2 POP NUMBER GT ISZERO PUSH2 0x157F JUMPI PUSH1 0x0 PUSH1 0x4 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x1374 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x13AD SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x29CA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x13C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x13D9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x13FD SWAP2 SWAP1 PUSH2 0x287F JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x14A3 JUMPI PUSH1 0x0 PUSH2 0x1427 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND NUMBER PUSH2 0x2203 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x7 SLOAD PUSH2 0x1457 DUP6 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH2 0x1451 PUSH2 0x144A PUSH2 0xDAD JUMP JUMPDEST DUP7 SWAP1 PUSH2 0x2179 JUMP JUMPDEST SWAP1 PUSH2 0x2179 JUMP JUMPDEST DUP2 PUSH2 0x145E JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x1495 PUSH2 0x1484 DUP5 PUSH2 0x1477 DUP5 PUSH5 0xE8D4A51000 PUSH2 0x2179 JUMP JUMPDEST DUP2 PUSH2 0x147E JUMPI INVALID JUMPDEST DIV PUSH2 0x242B JUMP JUMPDEST DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 PUSH2 0x2454 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP5 MSTORE POP POP JUMPDEST PUSH2 0x14AC NUMBER PUSH2 0x2483 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x3 DUP1 SLOAD DUP4 SWAP2 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0x14CB JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP2 DUP3 SWAP1 KECCAK256 DUP4 MLOAD SWAP2 ADD DUP1 SLOAD DUP5 DUP5 ADD MLOAD PUSH1 0x40 SWAP6 DUP7 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x80 SHL NOT AND PUSH1 0x1 PUSH1 0x80 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP5 DUP6 AND MUL OR PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x1 PUSH1 0xC0 SHL SWAP4 SWAP1 SWAP2 AND SWAP3 SWAP1 SWAP3 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP4 ADD MLOAD DUP4 MLOAD SWAP2 MLOAD DUP6 SWAP3 PUSH32 0xFC9545022A542541AD085D091FB09A2AB36FEE366A4576AB63714EA907AD353 SWAP3 PUSH2 0x1575 SWAP3 SWAP1 SWAP2 DUP7 SWAP2 PUSH2 0x2F3D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xFBE JUMPI PUSH2 0x15AB DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x159F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0x12FD JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x1588 JUMP JUMPDEST PUSH1 0x4 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x15C1 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD505ACCF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP1 PUSH4 0xD505ACCF SWAP1 PUSH2 0x1613 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x2A02 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x162D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1641 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1688 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2CB4 JUMP JUMPDEST PUSH2 0x16C7 DUP4 PUSH2 0x16C1 PUSH1 0x3 DUP8 DUP2 SLOAD DUP2 LT PUSH2 0x169C JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x7 SLOAD SWAP1 PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH2 0x2203 JUMP JUMPDEST SWAP1 PUSH2 0x24AC JUMP JUMPDEST PUSH1 0x7 SSTORE PUSH2 0x16D3 DUP4 PUSH2 0x2483 JUMP JUMPDEST PUSH1 0x3 DUP6 DUP2 SLOAD DUP2 LT PUSH2 0x16E0 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 ADD PUSH1 0x18 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP1 ISZERO PUSH2 0x1754 JUMPI DUP2 PUSH1 0x5 DUP6 DUP2 SLOAD DUP2 LT PUSH2 0x1725 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP JUMPDEST DUP1 PUSH2 0x1780 JUMPI PUSH1 0x5 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1766 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1782 JUMP JUMPDEST DUP2 JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH32 0x95895A6AB1DF54420D241B55243258A33E61B2194DB66C1179EC521AAE8E1865 DUP6 DUP5 PUSH1 0x40 MLOAD PUSH2 0x17BD SWAP3 SWAP2 SWAP1 PUSH2 0x2F1F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x17E2 PUSH2 0x2575 JUMP JUMPDEST PUSH2 0x17EB DUP5 PUSH2 0x12FD JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD SWAP2 SWAP3 POP SWAP1 PUSH2 0x181D SWAP1 DUP6 PUSH2 0x24AC JUMP JUMPDEST DUP2 SSTORE DUP2 MLOAD PUSH2 0x1854 SWAP1 PUSH5 0xE8D4A51000 SWAP1 PUSH2 0x1840 SWAP1 DUP8 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x2179 JUMP JUMPDEST DUP2 PUSH2 0x1847 JUMPI INVALID JUMPDEST PUSH1 0x1 DUP5 ADD SLOAD SWAP2 SWAP1 DIV PUSH2 0x24CF JUMP JUMPDEST DUP2 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x5 DUP7 DUP2 SLOAD DUP2 LT PUSH2 0x186B JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 ISZERO PUSH2 0x18F1 JUMPI DUP2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x51EC199 PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xA3D83320 SWAP2 PUSH2 0x18BE SWAP2 DUP11 SWAP2 DUP10 SWAP2 DUP3 SWAP2 PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x2EF0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x18EC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x1921 CALLER ADDRESS DUP8 PUSH1 0x4 DUP11 DUP2 SLOAD DUP2 LT PUSH2 0x1904 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 SWAP1 PUSH2 0x233A JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2D7E648DD130FC184D383E55BB126AC4C9C60E8F94BF05ACDF557BA2D540B47 DUP9 PUSH1 0x40 MLOAD PUSH2 0x809 SWAP2 SWAP1 PUSH2 0x2EE7 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD DUP3 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x19B3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2CB4 JUMP JUMPDEST PUSH1 0x7 SLOAD NUMBER SWAP1 PUSH2 0x19C2 SWAP1 DUP6 PUSH2 0x24AC JUMP JUMPDEST PUSH1 0x7 SSTORE PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 DUP2 DUP2 ADD SWAP1 SWAP3 SSTORE PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x5 DUP1 SLOAD SWAP4 DUP5 ADD DUP2 SSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH32 0x36B6384B5ECA791C62761152D0C79BB0604C104A5FB6F4EB0703F3154BB3DB0 SWAP1 SWAP4 ADD DUP1 SLOAD SWAP3 DUP7 AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP2 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x3 SWAP1 PUSH1 0x20 DUP2 ADD PUSH2 0x1A6F DUP5 PUSH2 0x2483 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1A86 DUP8 PUSH2 0x2483 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND SWAP1 SWAP2 MSTORE DUP3 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP6 SSTORE PUSH1 0x0 SWAP5 DUP6 MSTORE PUSH1 0x20 SWAP5 DUP6 SWAP1 KECCAK256 DUP5 MLOAD SWAP3 ADD DUP1 SLOAD SWAP6 DUP6 ADD MLOAD PUSH1 0x40 SWAP1 SWAP6 ADD MLOAD DUP5 AND PUSH1 0x1 PUSH1 0xC0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP6 SWAP1 SWAP5 AND PUSH1 0x1 PUSH1 0x80 SHL MUL PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x80 SHL NOT PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP5 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP1 SWAP8 AND SWAP7 SWAP1 SWAP7 OR SWAP3 SWAP1 SWAP3 AND SWAP5 SWAP1 SWAP5 OR SWAP3 SWAP1 SWAP3 AND OR SWAP1 SSTORE PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP3 SWAP1 DUP7 AND SWAP2 PUSH2 0x1B25 SWAP2 PUSH2 0x2203 JUMP JUMPDEST PUSH32 0x81EE0F8C5C46E2CB41984886F77A84181724ABB86C32A5F6DE539B07509D45E5 DUP8 PUSH1 0x40 MLOAD PUSH2 0x1B54 SWAP2 SWAP1 PUSH2 0x2EE7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH1 0x5 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x15C1 JUMPI INVALID JUMPDEST PUSH2 0x1B77 PUSH2 0x2575 JUMP JUMPDEST PUSH2 0x1B80 DUP5 PUSH2 0x12FD JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP3 MLOAD DUP2 SLOAD SWAP4 SWAP5 POP SWAP1 SWAP3 PUSH5 0xE8D4A51000 SWAP2 PUSH2 0x1BBC SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x2179 JUMP JUMPDEST DUP2 PUSH2 0x1BC3 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 PUSH2 0x1BE2 PUSH2 0x8D4 DUP5 PUSH1 0x1 ADD SLOAD DUP5 PUSH2 0x21B6 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x1C1D PUSH5 0xE8D4A51000 PUSH2 0x1C0D DUP7 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP10 PUSH2 0x2179 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH2 0x1C14 JUMPI INVALID JUMPDEST DUP5 SWAP2 SWAP1 DIV PUSH2 0x21B6 JUMP JUMPDEST PUSH1 0x1 DUP5 ADD SSTORE DUP3 SLOAD PUSH2 0x1C2E SWAP1 DUP8 PUSH2 0x2203 JUMP JUMPDEST DUP4 SSTORE PUSH2 0x1C64 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP7 DUP4 PUSH2 0x2226 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x5 DUP9 DUP2 SLOAD DUP2 LT PUSH2 0x1C73 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 ISZERO PUSH2 0x1CF8 JUMPI DUP4 SLOAD PUSH1 0x40 MLOAD PUSH4 0x51EC199 PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xA3D83320 SWAP2 PUSH2 0x1CC5 SWAP2 DUP13 SWAP2 CALLER SWAP2 DUP13 SWAP2 DUP10 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x2EF0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CDF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1CF3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x1D0A DUP7 DUP9 PUSH1 0x4 DUP12 DUP2 SLOAD DUP2 LT PUSH2 0x7A9 JUMPI INVALID JUMPDEST DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8166BF25F8A2B7ED3C85049207DA4358D16EDBED977D23FA2EE6F0DDE3EC2132 DUP11 PUSH1 0x40 MLOAD PUSH2 0x1D4E SWAP2 SWAP1 PUSH2 0x2EE7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 DUP8 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x71BAB65CED2E5750775A0613BE067DF48EF06CF92A496EBF7663AE0660924954 DUP5 PUSH1 0x40 MLOAD PUSH2 0x1D90 SWAP2 SWAP1 PUSH2 0x2EE7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP1 ISZERO PUSH2 0x1DBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1DE5 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP2 POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP1 ISZERO PUSH2 0x1DFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1E32 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1E1D JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x1F29 JUMPI PUSH1 0x0 PUSH1 0x60 ADDRESS DUP9 DUP9 DUP6 DUP2 DUP2 LT PUSH2 0x1E51 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1E63 SWAP2 SWAP1 PUSH2 0x2F67 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1E71 SWAP3 SWAP2 SWAP1 PUSH2 0x299E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1EAC JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1EB1 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 PUSH2 0x1EC0 JUMPI POP DUP6 ISZERO JUMPDEST PUSH2 0x1EC9 DUP3 PUSH2 0x2515 JUMP JUMPDEST SWAP1 PUSH2 0x1EE7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP2 SWAP1 PUSH2 0x2AF6 JUMP JUMPDEST POP DUP2 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1EF5 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 ISZERO ISZERO SWAP1 DUP2 ISZERO ISZERO DUP2 MSTORE POP POP DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1F14 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0x1E38 JUMP JUMPDEST POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F93 PUSH2 0x2575 JUMP JUMPDEST PUSH1 0x3 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1FA0 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE SWAP2 SWAP1 SWAP4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP4 DIV DUP2 AND DUP5 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 SWAP3 DIV SWAP1 SWAP2 AND DUP3 DUP6 ADD MSTORE DUP9 DUP6 MSTORE PUSH1 0x6 DUP4 MSTORE DUP4 DUP6 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP7 MSTORE SWAP1 SWAP3 MSTORE SWAP2 DUP4 KECCAK256 DUP3 MLOAD PUSH1 0x4 DUP1 SLOAD SWAP5 SWAP7 POP SWAP2 SWAP5 SWAP3 AND SWAP3 DUP9 SWAP1 DUP2 LT PUSH2 0x201E JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x2057 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x29CA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x206F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2083 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x20A7 SWAP2 SWAP1 PUSH2 0x287F JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND NUMBER GT DUP1 ISZERO PUSH2 0x20C4 JUMPI POP DUP1 ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x2140 JUMPI PUSH1 0x0 PUSH2 0x20EB DUP6 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND NUMBER PUSH2 0x2203 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x7 SLOAD PUSH2 0x210E DUP8 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH2 0x1451 PUSH2 0x144A PUSH2 0xDAD JUMP JUMPDEST DUP2 PUSH2 0x2115 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x213B DUP4 PUSH2 0x212B DUP4 PUSH5 0xE8D4A51000 PUSH2 0x2179 JUMP JUMPDEST DUP2 PUSH2 0x2132 JUMPI INVALID JUMPDEST DUP7 SWAP2 SWAP1 DIV PUSH2 0x24AC JUMP JUMPDEST SWAP4 POP POP POP JUMPDEST PUSH1 0x1 DUP4 ADD SLOAD DUP4 SLOAD PUSH2 0x216E SWAP2 PUSH2 0x8D4 SWAP2 PUSH5 0xE8D4A51000 SWAP1 PUSH2 0x2160 SWAP1 DUP8 PUSH2 0x2179 JUMP JUMPDEST DUP2 PUSH2 0x2167 JUMPI INVALID JUMPDEST DIV SWAP1 PUSH2 0x21B6 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0x2194 JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0x2191 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x21B0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2E05 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 SUB DUP2 DUP4 SLT DUP1 ISZERO SWAP1 PUSH2 0x21CB JUMPI POP DUP4 DUP2 SGT ISZERO JUMPDEST DUP1 PUSH2 0x21E0 JUMPI POP PUSH1 0x0 DUP4 SLT DUP1 ISZERO PUSH2 0x21E0 JUMPI POP DUP4 DUP2 SGT JUMPDEST PUSH2 0x21FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2D8C JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x21B0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2B09 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x224C SWAP3 SWAP2 SWAP1 PUSH2 0x2A43 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH2 0x2285 SWAP2 SWAP1 PUSH2 0x29AE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x22C2 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x22C7 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x22F1 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x22F1 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x22F1 SWAP2 SWAP1 PUSH2 0x26AF JUMP JUMPDEST PUSH2 0x230D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2B5D JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 SLT ISZERO PUSH2 0x2336 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2B38 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x23B872DD DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2362 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x29DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH2 0x239B SWAP2 SWAP1 PUSH2 0x29AE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x23D8 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x23DD JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x2407 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x2407 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2407 SWAP2 SWAP1 PUSH2 0x26AF JUMP JUMPDEST PUSH2 0x2423 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2DD0 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 GT ISZERO PUSH2 0x2336 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2C46 JUMP JUMPDEST DUP2 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP4 AND SWAP1 DUP3 AND LT ISZERO PUSH2 0x21B0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2C7D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x2336 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2D55 JUMP JUMPDEST DUP2 DUP2 ADD DUP2 DUP2 LT ISZERO PUSH2 0x21B0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2C7D JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP2 DUP4 SLT DUP1 ISZERO SWAP1 PUSH2 0x24E4 JUMPI POP DUP4 DUP2 SLT ISZERO JUMPDEST DUP1 PUSH2 0x24F9 JUMPI POP PUSH1 0x0 DUP4 SLT DUP1 ISZERO PUSH2 0x24F9 JUMPI POP DUP4 DUP2 SLT JUMPDEST PUSH2 0x21FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BE SWAP1 PUSH2 0x2BD6 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x44 DUP3 MLOAD LT ISZERO PUSH2 0x255B JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1D DUP2 MSTORE PUSH32 0x5472616E73616374696F6E2072657665727465642073696C656E746C79000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x157F JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SWAP2 POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x21B0 SWAP2 SWAP1 PUSH2 0x278A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x25A6 JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x25BC JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x25D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x25F1 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x25FC DUP2 PUSH2 0x2FFD JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x260C DUP2 PUSH2 0x3015 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x261C DUP2 PUSH2 0x3015 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x263B JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2650 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x265C DUP7 DUP3 DUP8 ADD PUSH2 0x2595 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x261C DUP2 PUSH2 0x3015 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2682 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2697 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x26A3 DUP6 DUP3 DUP7 ADD PUSH2 0x2595 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x26C0 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x21FC DUP2 PUSH2 0x3015 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x26DC JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x21FC DUP2 PUSH2 0x2FFD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x26F8 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x21FC DUP2 PUSH2 0x2FFD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x271F JUMPI DUP4 DUP5 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x272A DUP2 PUSH2 0x2FFD JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH2 0x273A DUP2 PUSH2 0x2FFD JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH2 0x274A DUP2 PUSH2 0x2FFD JUMP JUMPDEST SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD SWAP4 POP PUSH1 0xA0 DUP10 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x276D JUMPI DUP4 DUP5 REVERT JUMPDEST SWAP8 SWAP11 SWAP7 SWAP10 POP SWAP5 SWAP8 SWAP4 SWAP7 SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0xC0 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xE0 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x279B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x27B1 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x27C4 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x27D2 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x27E5 PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH2 0x2FAB JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP6 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x27FB JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x280C DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2FD1 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2826 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x2830 PUSH1 0x80 PUSH2 0x2FAB JUMP JUMPDEST DUP3 MLOAD PUSH2 0x283B DUP2 PUSH2 0x2FFD JUMP JUMPDEST DUP1 DUP3 MSTORE POP PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x60 DUP3 ADD MSTORE DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2878 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2890 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x28A9 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x28BB DUP2 PUSH2 0x2FFD JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x28DA JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x28EC DUP2 PUSH2 0x2FFD JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x261C DUP2 PUSH2 0x2FFD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2910 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x261C DUP2 PUSH2 0x2FFD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x293E JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0x2957 DUP2 PUSH2 0x2FFD JUMP JUMPDEST SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x2967 DUP2 PUSH2 0x3015 JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x298A DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2FD1 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 DUP4 CALLDATACOPY SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x29C0 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2FD1 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND DUP2 MSTORE SWAP6 SWAP1 SWAP7 AND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP4 MLOAD SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x20 SWAP1 PUSH1 0x60 DUP5 ADD SWAP1 DUP3 DUP8 ADD DUP5 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2A97 JUMPI DUP2 MLOAD ISZERO ISZERO DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2A79 JUMP JUMPDEST POP POP POP DUP4 DUP2 SUB DUP3 DUP6 ADD MSTORE DUP1 DUP6 MLOAD PUSH2 0x2AAE DUP2 DUP5 PUSH2 0x2EE7 JUMP JUMPDEST SWAP2 POP DUP2 SWAP3 POP DUP4 DUP2 MUL DUP3 ADD DUP5 DUP9 ADD DUP7 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2AE7 JUMPI DUP6 DUP4 SUB DUP6 MSTORE PUSH2 0x2AD5 DUP4 DUP4 MLOAD PUSH2 0x2972 JUMP JUMPDEST SWAP5 DUP8 ADD SWAP5 SWAP3 POP SWAP1 DUP7 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2ABD JUMP JUMPDEST POP SWAP1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x21FC PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2972 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH21 0x426F72696E674D6174683A20556E646572666C6F77 PUSH1 0x58 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xB SWAP1 DUP3 ADD MSTORE PUSH11 0x496E7465676572203C203 PUSH1 0xAC SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1C SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E6745524332303A205472616E73666572206661696C656400000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x22 SWAP1 DUP3 ADD MSTORE PUSH32 0x476F6C644D696E657256323A2042616C616E6365206D75737420657863656564 PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x203 PUSH1 0xF4 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x21 SWAP1 DUP3 ADD MSTORE PUSH32 0x5369676E6564536166654D6174683A206164646974696F6E206F766572666C6F PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH21 0x4F776E61626C653A207A65726F2061646472657373 PUSH1 0x58 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1C SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A2075696E74313238204F766572666C6F7700000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x18 SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A20416464204F766572666C6F770000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1C SWAP1 DUP3 ADD MSTORE PUSH32 0x476F6C644D696E657256323A206E6F206D69677261746F722073657400000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C657220213D2070656E64696E67206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A2075696E743634204F766572666C6F770000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x5369676E6564536166654D6174683A207375627472616374696F6E206F766572 PUSH1 0x40 DUP3 ADD MSTORE PUSH4 0x666C6F77 PUSH1 0xE0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x426F72696E6745524332303A205472616E7366657246726F6D206661696C6564 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x18 SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A204D756C204F766572666C6F770000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x28 SWAP1 DUP3 ADD MSTORE PUSH32 0x476F6C644D696E657256323A206D696772617465642062616C616E6365206D75 PUSH1 0x40 DUP3 ADD MSTORE PUSH8 0xE6E840DAC2E8C6D PUSH1 0xC3 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP3 DUP4 ADD MLOAD AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP5 DUP6 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x20 DUP7 ADD MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE ISZERO ISZERO PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x2F7D JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x2F96 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x25D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2FC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2FEC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2FD4 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xFBE JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x3012 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x3012 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEE SELFBALANCE 0xF8 0x2E MSTORE 0xEB 0x48 0xA6 0xC4 SWAP16 DUP14 PUSH14 0x9A713909DFE00ACF080D3836C417 CREATE 0xD7 PUSH28 0x87522D64736F6C634300060C00330000000000000000000000000000 ",
              "sourceMap": "1093:14113:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;774:472:1;;;;;;;;;;-1:-1:-1;774:472:1;;;;;:::i;:::-;;:::i;:::-;;4863:98:5;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11301:671;;;;;;;;;;-1:-1:-1;11301:671:5;;;;;:::i;:::-;;:::i;2281:26::-;;;;;;;;;;-1:-1:-1;2281:26:5;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;2720:30::-;;;;;;;;;;;;;:::i;12145:828::-;;;;;;;;;;-1:-1:-1;12145:828:5;;;;;:::i;:::-;;:::i;4427:380::-;;;;;;;;;;-1:-1:-1;4427:380:5;;;;;:::i;:::-;;:::i;6757:101::-;;;;;;;;;;-1:-1:-1;6757:101:5;;;;;:::i;:::-;;:::i;2060:33::-;;;;;;;;;;;;;:::i;14638:566::-;;;;;;;;;;-1:-1:-1;14638:566:5;;;;;:::i;:::-;;:::i;8982:216::-;;;;;;;;;;;;;:::i;14371:87::-;;;;;;;;;;;;;:::i;7012:472::-;;;;;;;;;;-1:-1:-1;7012:472:5;;;;;:::i;:::-;;:::i;1295:348:1:-;;;;;;;;;;;;;:::i;9377:801:5:-;;;;;;;;;;-1:-1:-1;9377:801:5;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;8717:188::-;;;;;;;;;;-1:-1:-1;8717:188:5;;;;;:::i;:::-;;:::i;2373:23::-;;;;;;;;;;-1:-1:-1;2373:23:5;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2161:246:0:-;;;;;;;;;;-1:-1:-1;2161:246:0;;;;;:::i;:::-;;:::i;2204:30:5:-;;;;;;;;;;;;;:::i;6213:406::-;;;;;;;;;;-1:-1:-1;6213:406:5;;;;;:::i;:::-;;:::i;350:20:1:-;;;;;;;;;;;;;:::i;10415:680:5:-;;;;;;;;;;-1:-1:-1;10415:680:5;;;;;:::i;:::-;;:::i;2555:66::-;;;;;;;;;;-1:-1:-1;2555:66:5;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;5293:534::-;;;;;;;;;;-1:-1:-1;5293:534:5;;;;;:::i;:::-;;:::i;2464:27::-;;;;;;;;;;-1:-1:-1;2464:27:5;;;;;:::i;:::-;;:::i;13248:1021::-;;;;;;;;;;-1:-1:-1;13248:1021:5;;;;;:::i;:::-;;:::i;1260:554:0:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;397:27:1:-;;;;;;;;;;;;;:::i;1885:38:5:-;;;;;;;;;;;;;:::i;1971:28::-;;;;;;;;;;;;;:::i;7704:835::-;;;;;;;;;;-1:-1:-1;7704:835:5;;;;;:::i;:::-;;:::i;774:472:1:-;1746:5;;-1:-1:-1;;;;;1746:5:1;1732:10;:19;1724:64;;;;-1:-1:-1;;;1724:64:1;;;;;;;:::i;:::-;;;;;;;;;879:6:::1;875:364;;;-1:-1:-1::0;;;;;933:22:1;::::1;::::0;::::1;::::0;:34:::1;;;959:8;933:34;925:68;;;;-1:-1:-1::0;;;925:68:1::1;;;;;;;:::i;:::-;1060:5;::::0;;1039:37:::1;::::0;-1:-1:-1;;;;;1039:37:1;;::::1;::::0;1060:5;::::1;::::0;1039:37:::1;::::0;::::1;1091:5;:16:::0;;-1:-1:-1;;;;;1091:16:1;::::1;-1:-1:-1::0;;;;;;1091:16:1;;::::1;;::::0;;;;1122:25;;;;::::1;::::0;;875:364:::1;;;1204:12;:23:::0;;-1:-1:-1;;;;;;1204:23:1::1;-1:-1:-1::0;;;;;1204:23:1;::::1;;::::0;;875:364:::1;774:472:::0;;;:::o;4863:98:5:-;4939:8;:15;;4863:98::o;11301:671::-;11377:20;;:::i;:::-;11400:15;11411:3;11400:10;:15::i;:::-;11425:21;11449:13;;;:8;:13;;;;;;;;11463:10;11449:25;;;;;;;11560:26;;11377:38;;-1:-1:-1;11449:25:5;11522:88;;2865:4;;11549:38;;:6;;-1:-1:-1;;;;;11549:38:5;:10;:38::i;:::-;:59;;;;;11522:15;;;;;11549:59;;11522:19;:88::i;:::-;11504:15;;;:106;11634:11;;:23;;11650:6;11634:15;:23::i;:::-;11620:37;;11714:8;:13;;11620:11;;11714:8;11723:3;;11714:13;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11714:13:5;;-1:-1:-1;11741:32:5;;11737:128;;11842:11;;11789:65;;-1:-1:-1;;;11789:65:5;;-1:-1:-1;;;;;11789:28:5;;;;;:65;;11818:3;;11823:10;;11835:2;;11839:1;;11842:11;11789:65;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11737:128;11875:37;11901:2;11905:6;11875:7;11883:3;11875:12;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11875:12:5;;:37;:25;:37::i;:::-;11962:2;-1:-1:-1;;;;;11928:37:5;11949:3;11937:10;-1:-1:-1;;;;;11928:37:5;;11954:6;11928:37;;;;;;:::i;:::-;;;;;;;;11301:671;;;;;;:::o;2281:26::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2281:26:5;;;-1:-1:-1;;;;;;;;;2281:26:5;;;;;-1:-1:-1;;;2281:26:5;;;;:::o;2720:30::-;;;;:::o;12145:828::-;12204:20;;:::i;:::-;12227:15;12238:3;12227:10;:15::i;:::-;12252:21;12276:13;;;:8;:13;;;;;;;;12290:10;12276:25;;;;;;;12365:26;;12349:11;;12204:38;;-1:-1:-1;12276:25:5;;2865:4;;12349:43;;:11;-1:-1:-1;;;;;12349:43:5;:15;:43::i;:::-;:64;;;;;;12311:103;;12424:26;12453:54;:42;12479:4;:15;;;12453:21;:25;;:42;;;;:::i;:::-;:52;:54::i;:::-;12537:15;;;:39;;;12424:83;-1:-1:-1;12615:23:5;;12611:95;;12654:41;-1:-1:-1;;;;;12654:4:5;:17;12672:2;12676:18;12654:17;:41::i;:::-;12716:19;12738:8;12747:3;12738:13;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12738:13:5;;-1:-1:-1;12765:32:5;;12761:146;;12884:11;;12813:83;;-1:-1:-1;;;12813:83:5;;-1:-1:-1;;;;;12813:28:5;;;;;:83;;12843:3;;12848:10;;12860:2;;12864:18;;12884:11;12813:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12761:146;12942:3;12930:10;-1:-1:-1;;;;;12922:44:5;;12947:18;12922:44;;;;;;:::i;:::-;;;;;;;;12145:828;;;;;;;:::o;4427:380::-;4497:32;;-1:-1:-1;;;4497:32:5;;4479:15;;-1:-1:-1;;;;;4497:20:5;;;;;:32;;4518:10;;4497:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4479:50;-1:-1:-1;4547:12:5;4539:59;;;;-1:-1:-1;;;4539:59:5;;;;;;;:::i;:::-;4608:63;-1:-1:-1;;;;;4608:27:5;;4636:10;4656:4;4663:7;4608:27;:63::i;:::-;4681:48;;-1:-1:-1;;;4681:48:5;;-1:-1:-1;;;;;4681:18:5;;;;;:48;;4708:10;;4721:7;;4681:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4739:37:5;;-1:-1:-1;;;4739:37:5;;-1:-1:-1;;;;;4739:10:5;:18;;;;:37;;4758:8;;4768:7;;4739:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4791:9:5;;;;-1:-1:-1;4791:9:5;;-1:-1:-1;4791:9:5;4427:380;;:::o;6757:101::-;1746:5:1;;-1:-1:-1;;;;;1746:5:1;1732:10;:19;1724:64;;;;-1:-1:-1;;;1724:64:1;;;;;;;:::i;:::-;6831:8:5::1;:20:::0;;-1:-1:-1;;;;;;6831:20:5::1;-1:-1:-1::0;;;;;6831:20:5;;;::::1;::::0;;;::::1;::::0;;6757:101::o;2060:33::-;;;:::o;14638:566::-;14707:21;14731:13;;;:8;:13;;;;;;;;14745:10;14731:25;;;;;;;14783:11;;14804:15;;;-1:-1:-1;14829:15:5;;:19;;;14881:8;:13;;14731:25;;14783:11;;14740:3;;14881:13;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14881:13:5;;-1:-1:-1;14908:32:5;;14904:118;;14956:55;;-1:-1:-1;;;14956:55:5;;-1:-1:-1;;;;;14956:28:5;;;;;:55;;14985:3;;14990:10;;15002:2;;15006:1;;;;14956:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14904:118;15099:37;15125:2;15129:6;15099:7;15107:3;15099:12;;;;;;;:37;15194:2;-1:-1:-1;;;;;15151:46:5;15181:3;15169:10;-1:-1:-1;;;;;15151:46:5;;15186:6;15151:46;;;;;;:::i;:::-;;;;;;;;14638:566;;;;;:::o;8982:216::-;9033:14;9163:10;-1:-1:-1;;;;;9163:26:5;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9119:29;;-1:-1:-1;;;9119:29:5;;9068:92;;-1:-1:-1;;;;;9119:10:5;:19;;;;:29;;9139:8;;9119:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40;;;2809:4;;9068:50;:92::i;:::-;:123;;;;;;9059:132;;8982:216;:::o;14371:87::-;14420:31;;-1:-1:-1;;;14420:31:5;;-1:-1:-1;;;;;14420:10:5;:18;;;;:31;;14439:8;;14449:1;;14420:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14371:87::o;7012:472::-;7076:8;;-1:-1:-1;;;;;7076:8:5;7060:72;;;;-1:-1:-1;;;7060:72:5;;;;;;;:::i;:::-;7142:15;7160:7;7168:4;7160:13;;;;;;;;;;;;;;;;;7197:33;;-1:-1:-1;;;7197:33:5;;-1:-1:-1;;;;;7160:13:5;;;;-1:-1:-1;7160:13:5;;7197:18;;:33;;7224:4;;7197:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7265:8;;7240:40;;-1:-1:-1;;;7240:40:5;;7183:47;;-1:-1:-1;;;;;;7240:16:5;;;;;;:40;;7265:8;;7183:47;;7240:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7310:8:5;;:26;;-1:-1:-1;;;7310:26:5;;7290:17;;-1:-1:-1;;;;;7310:8:5;;:16;;:26;;7327:8;;7310:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7361:35;;-1:-1:-1;;;7361:35:5;;7290:46;;-1:-1:-1;;;;;;7361:20:5;;;;;:35;;7390:4;;7361:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7354:3;:42;7346:95;;;;-1:-1:-1;;;7346:95:5;;;;;;;:::i;:::-;7467:10;7451:7;7459:4;7451:13;;;;;;;;;;;;;;;;:26;;;;;-1:-1:-1;;;;;7451:26:5;;;;;-1:-1:-1;;;;;7451:26:5;;;;;;7012:472;;;;:::o;1295:348:1:-;1363:12;;-1:-1:-1;;;;;1363:12:1;1423:10;:27;;1415:72;;;;-1:-1:-1;;;1415:72:1;;;;;;;:::i;:::-;1546:5;;;1525:42;;-1:-1:-1;;;;;1525:42:1;;;;1546:5;;;1525:42;;;1578:5;:21;;-1:-1:-1;;;;;1578:21:1;;;-1:-1:-1;;;;;;1578:21:1;;;;;;;1610:25;;;;;;;1295:348::o;9377:801:5:-;9426:20;;:::i;:::-;9465:8;9474:3;9465:13;;;;;;;;;;;;;;;;;9458:20;;;;;;;;9465:13;;;;9458:20;-1:-1:-1;;;;;9458:20:5;;;;-1:-1:-1;;;;;;;;9458:20:5;;;;;;;;;;-1:-1:-1;;;9458:20:5;;;;;;;;;-1:-1:-1;9492:12:5;:35;9488:684;;;9543:16;9562:7;9570:3;9562:12;;;;;;;;;;;;;;;;;;:37;;-1:-1:-1;;;9562:37:5;;-1:-1:-1;;;;;9562:12:5;;;;:22;;:37;;9593:4;;9562:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9543:56;-1:-1:-1;9617:12:5;;9613:362;;9649:14;9666:38;9683:4;:20;;;-1:-1:-1;;;;;9666:38:5;:12;:16;;:38;;;;:::i;:::-;9649:55;;9722:24;9805:15;;9749:53;9786:4;:15;;;-1:-1:-1;;;;;9749:53:5;:32;9760:20;:18;:20::i;:::-;9749:6;;:10;:32::i;:::-;:36;;:53::i;:::-;:71;;;;;;;-1:-1:-1;9867:93:5;9898:61;9942:8;9899:40;9749:71;2865:4;9899:20;:40::i;:::-;:51;;;;;;9898:59;:61::i;:::-;9867:26;;-1:-1:-1;;;;;9867:30:5;;;:93::i;:::-;-1:-1:-1;;;;;9838:122:5;;;-1:-1:-1;;9613:362:5;10011:19;:12;:17;:19::i;:::-;-1:-1:-1;;;;;9988:42:5;:20;;;:42;10044:8;:13;;9988:4;;10044:8;10053:3;;10044:13;;;;;;;;;;;;;;;:20;;:13;;:20;;;;;;;;;;;-1:-1:-1;;;;;;10044:20:5;;;-1:-1:-1;;;;;10044:20:5;;;;;;;-1:-1:-1;;;;10044:20:5;-1:-1:-1;;;;;;;;10044:20:5;;;;;-1:-1:-1;;;;;10044:20:5;-1:-1:-1;;;10044:20:5;;;;;;;;;;;;;;10102;;;10134:26;;10083:78;;10097:3;;10083:78;;;;10102:20;;10124:8;;10083:78;:::i;:::-;;;;;;;;9488:684;;9377:801;;;:::o;8717:188::-;8800:4;8786:11;8821:78;8845:3;8841:1;:7;8821:78;;;8869:19;8880:4;;8885:1;8880:7;;;;;;;;;;;;;8869:10;:19::i;:::-;-1:-1:-1;8850:3:5;;8821:78;;2373:23;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2373:23:5;;-1:-1:-1;2373:23:5;:::o;2161:246:0:-;2350:49;;-1:-1:-1;;;2350:49:0;;-1:-1:-1;;;;;2350:12:0;;;;;:49;;2363:4;;2369:2;;2373:6;;2381:8;;2391:1;;2394;;2397;;2350:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2161:246;;;;;;;;:::o;2204:30:5:-;;;-1:-1:-1;;;;;2204:30:5;;:::o;6213:406::-;1746:5:1;;-1:-1:-1;;;;;1746:5:1;1732:10;:19;1724:64;;;;-1:-1:-1;;;1724:64:1;;;;;;;:::i;:::-;6343:63:5::1;6394:11;6343:46;6363:8;6372:4;6363:14;;;;;;;;;::::0;;;::::1;::::0;;;::::1;:25:::0;6343:15:::1;::::0;;-1:-1:-1;;;6363:25:5;::::1;-1:-1:-1::0;;;;;6363:25:5::1;6343:19;:46::i;:::-;:50:::0;::::1;:63::i;:::-;6325:15;:81:::0;6444:18:::1;:11:::0;:16:::1;:18::i;:::-;6416:8;6425:4;6416:14;;;;;;;;;;;;;;;:25;;;:46;;;;;-1:-1:-1::0;;;;;6416:46:5::1;;;;;-1:-1:-1::0;;;;;6416:46:5::1;;;;;;6476:9;6472:46;;;6506:9;6489:8;6498:4;6489:14;;;;;;;;;;;;;;;;:26;;;;;-1:-1:-1::0;;;;;6489:26:5::1;;;;;-1:-1:-1::0;;;;;6489:26:5::1;;;;;;6472:46;6562:9;:38;;6586:8;6595:4;6586:14;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;6586:14:5::1;6562:38;;;6574:9;6562:38;-1:-1:-1::0;;;;;6532:80:5::1;6543:4;6532:80;6549:11;6602:9;6532:80;;;;;;;:::i;:::-;;;;;;;;6213:406:::0;;;;:::o;350:20:1:-;;;-1:-1:-1;;;;;350:20:1;;:::o;10415:680:5:-;10490:20;;:::i;:::-;10513:15;10524:3;10513:10;:15::i;:::-;10538:21;10562:13;;;:8;:13;;;;;;;;-1:-1:-1;;;;;10562:17:5;;;;;;;;;10623:11;;10490:38;;-1:-1:-1;10562:17:5;10623:23;;10639:6;10623:15;:23::i;:::-;10609:37;;10712:26;;10674:88;;2865:4;;10701:38;;:6;;-1:-1:-1;;;;;10701:38:5;:10;:38::i;:::-;:59;;;;;10674:15;;;;;10701:59;;10674:19;:88::i;:::-;10656:4;:15;;:106;;;;10797:19;10819:8;10828:3;10819:13;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10819:13:5;;-1:-1:-1;10846:32:5;;10842:120;;10939:11;;10894:57;;-1:-1:-1;;;10894:57:5;;-1:-1:-1;;;;;10894:28:5;;;;;:57;;10923:3;;10928:2;;;;10936:1;;10939:11;10894:57;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10842:120;10972:64;11002:10;11022:4;11029:6;10972:7;10980:3;10972:12;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10972:12:5;;:64;;:29;:64::i;:::-;11085:2;-1:-1:-1;;;;;11052:36:5;11072:3;11060:10;-1:-1:-1;;;;;11052:36:5;;11077:6;11052:36;;;;;;:::i;2555:66::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5293:534::-;1746:5:1;;-1:-1:-1;;;;;1746:5:1;1732:10;:19;1724:64;;;;-1:-1:-1;;;1724:64:1;;;;;;;:::i;:::-;5457:15:5::1;::::0;5417:12:::1;::::0;5457:31:::1;::::0;5477:10;5457:19:::1;:31::i;:::-;5439:15;:49:::0;5498:7:::1;:22:::0;;::::1;::::0;;::::1;::::0;;;;::::1;::::0;;-1:-1:-1;;;;;5498:22:5;;::::1;-1:-1:-1::0;;;;;;5498:22:5;;::::1;;::::0;;;5530:8:::1;:24:::0;;;;::::1;::::0;;-1:-1:-1;5530:24:5;;;;;;::::1;::::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;5579:154:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;;5498:22:5::1;5579:154:::0;::::1;5662:22;:15:::0;:20:::1;:22::i;:::-;-1:-1:-1::0;;;;;5579:154:5::1;;;;;5614:17;:10;:15;:17::i;:::-;-1:-1:-1::0;;;;;5579:154:5;;::::1;::::0;;;5565:169;;::::1;::::0;;::::1;::::0;;-1:-1:-1;5565:169:5;;;::::1;::::0;;;;;;;::::1;::::0;;;;::::1;::::0;::::1;::::0;;::::1;::::0;;::::1;-1:-1:-1::0;;;5565:169:5::1;-1:-1:-1::0;;;;;5565:169:5;;;::::1;-1:-1:-1::0;;;5565:169:5::1;-1:-1:-1::0;;;;;;;;;5565:169:5;;::::1;-1:-1:-1::0;;;;;;5565:169:5;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;::::1;;::::0;;5765:7:::1;:14:::0;-1:-1:-1;;;;;5749:71:5;;::::1;::::0;;;::::1;::::0;5765:21:::1;::::0;:18:::1;:21::i;:::-;5749:71;5788:10;5749:71;;;;;;:::i;:::-;;;;;;;;1799:1:1;5293:534:5::0;;;:::o;2464:27::-;;;;;;;;;;13248:1021;13334:20;;:::i;:::-;13357:15;13368:3;13357:10;:15::i;:::-;13382:21;13406:13;;;:8;:13;;;;;;;;13420:10;13406:25;;;;;;;13495:26;;13479:11;;13334:38;;-1:-1:-1;13406:25:5;;2865:4;;13479:43;;:11;-1:-1:-1;;;;;13479:43:5;:15;:43::i;:::-;:64;;;;;;13441:103;;13554:26;13583:54;:42;13609:4;:15;;;13583:21;:25;;:42;;;;:::i;:54::-;13554:83;;13685:94;2865:4;13718:38;13729:4;:26;;;-1:-1:-1;;;;;13718:38:5;:6;:10;;:38;;;;:::i;:::-;:59;;;;;13685:21;;13718:59;;13685:25;:94::i;:::-;13667:15;;;:112;13803:11;;:23;;13819:6;13803:15;:23::i;:::-;13789:37;;13861:41;-1:-1:-1;;;;;13861:4:5;:17;13879:2;13883:18;13861:17;:41::i;:::-;13913:19;13935:8;13944:3;13935:13;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13935:13:5;;-1:-1:-1;13962:32:5;;13958:145;;14080:11;;14010:82;;-1:-1:-1;;;14010:82:5;;-1:-1:-1;;;;;14010:28:5;;;;;:82;;14039:3;;14044:10;;14056:2;;14060:18;;14080:11;14010:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13958:145;14113:37;14139:2;14143:6;14113:7;14121:3;14113:12;;;;;;;:37;14200:2;-1:-1:-1;;;;;14166:37:5;14187:3;14175:10;-1:-1:-1;;;;;14166:37:5;;14192:6;14166:37;;;;;;:::i;:::-;;;;;;;;14238:3;14226:10;-1:-1:-1;;;;;14218:44:5;;14243:18;14218:44;;;;;;:::i;:::-;;;;;;;;13248:1021;;;;;;;;:::o;1260:554:0:-;1343:23;;1451:5;-1:-1:-1;;;;;1440:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1440:24:0;-1:-1:-1;1428:36:0;-1:-1:-1;1497:5:0;-1:-1:-1;;;;;1485:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1475:35;;1526:9;1521:286;1541:16;;;1521:286;;;1580:12;1594:19;1625:4;1644:5;;1650:1;1644:8;;;;;;;;;;;;;;;;;;:::i;:::-;1617:36;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1579:74;;;;1676:7;:24;;;;1688:12;1687:13;1676:24;1702:21;1716:6;1702:13;:21::i;:::-;1668:56;;;;;-1:-1:-1;;;1668:56:0;;;;;;;;:::i;:::-;;1754:7;1739:9;1749:1;1739:12;;;;;;;;;;;;;:22;;;;;;;;;;;1789:6;1776:7;1784:1;1776:10;;;;;;;;;;;;;;;;;:19;-1:-1:-1;;1559:3:0;;1521:286;;;;1260:554;;;;;;:::o;397:27:1:-;;;-1:-1:-1;;;;;397:27:1;;:::o;1885:38:5:-;;;:::o;1971:28::-;;;:::o;7704:835::-;7783:15;7810:20;;:::i;:::-;7833:8;7842:4;7833:14;;;;;;;;;;;;;;;;7810:37;;;;;;;;7833:14;;;;7810:37;-1:-1:-1;;;;;7810:37:5;;;;;-1:-1:-1;;;;;;;;7810:37:5;;;;;;;;-1:-1:-1;;;7810:37:5;;;;;;;;;;7881:14;;;:8;:14;;;;;-1:-1:-1;;;;;7881:21:5;;;;;;;;;;7944:26;;7999:7;:13;;7810:37;;-1:-1:-1;7881:21:5;;7912:58;;;7890:4;;7999:13;;;;;;;;;;;;;;;;:38;;-1:-1:-1;;;7999:38:5;;-1:-1:-1;;;;;7999:13:5;;;;:23;;:38;;8031:4;;7999:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7980:57;;8066:4;:20;;;-1:-1:-1;;;;;8051:35:5;:12;:35;:52;;;;-1:-1:-1;8090:13:5;;;8051:52;8047:366;;;8119:14;8136:38;8153:4;:20;;;-1:-1:-1;;;;;8136:38:5;:12;:16;;:38;;;;:::i;:::-;8119:55;;8188:24;8271:15;;8215:53;8252:4;:15;;;-1:-1:-1;;;;;8215:53:5;:32;8226:20;:18;:20::i;8215:53::-;:71;;;;;;;-1:-1:-1;8324:78:5;8393:8;8350:40;8215:71;2865:4;8350:20;:40::i;:::-;:51;;;;;8324:21;;8350:51;;8324:25;:78::i;:::-;8300:102;;8047:366;;;8504:15;;;;8439:11;;8432:100;;:88;;2865:4;;8439:38;;8455:21;8439:15;:38::i;:::-;:59;;;;;;;8432:71;:88::i;:100::-;8422:110;7704:835;-1:-1:-1;;;;;;;7704:835:5:o;470:137:4:-;528:9;548:6;;;:28;;-1:-1:-1;;563:5:4;;;575:1;570;563:5;570:1;558:13;;;;;:18;548:28;540:65;;;;-1:-1:-1;;;540:65:4;;;;;;;:::i;:::-;470:137;;;;:::o;1895:213:9:-;1951:6;1980:5;;;2004:6;;;;;;:16;;;2019:1;2014;:6;;2004:16;2003:38;;;;2030:1;2026;:5;:14;;;;;2039:1;2035;:5;2026:14;1995:87;;;;-1:-1:-1;;;1995:87:9;;;;;;;:::i;:::-;2100:1;1895:213;-1:-1:-1;;;1895:213:9:o;342:122:4:-;425:5;;;420:16;;;;412:50;;;;-1:-1:-1;;;412:50:4;;;;;;;:::i;951:304:3:-;1036:12;1050:17;1079:5;-1:-1:-1;;;;;1071:19:3;1114:10;1126:2;1130:6;1091:46;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1091:46:3;;;;;;;;;;;1071:67;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1035:103;;;;1157:7;:57;;;;-1:-1:-1;1169:11:3;;:16;;:44;;;1200:4;1189:24;;;;;;;;;;;;:::i;:::-;1149:98;;;;-1:-1:-1;;;1149:98:3;;;;;;;:::i;:::-;951:304;;;;;:::o;2557:135:9:-;2609:7;2641:1;2636;:6;;2628:30;;;;-1:-1:-1;;;2628:30:9;;;;;;;:::i;:::-;-1:-1:-1;2683:1:9;2557:135::o;1263:332:3:-;1366:12;1380:17;1409:5;-1:-1:-1;;;;;1401:19:3;1444:10;1456:4;1462:2;1466:6;1421:52;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1421:52:3;;;;;;;;;;;1401:73;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1365:109;;;;1493:7;:57;;;;-1:-1:-1;1505:11:3;;:16;;:44;;;1536:4;1525:24;;;;;;;;;;;;:::i;:::-;1485:102;;;;-1:-1:-1;;;1485:102:3;;;;;;;:::i;:::-;1263:332;;;;;;:::o;613:161:4:-;662:9;-1:-1:-1;;;;;692:16:4;;;684:57;;;;-1:-1:-1;;;684:57:4;;;;;;;:::i;1134:125::-;1217:5;;;-1:-1:-1;;;;;1212:16:4;;;;;;;;1204:53;;;;-1:-1:-1;;;1204:53:4;;;;;;;:::i;780:156::-;828:8;-1:-1:-1;;;;;857:15:4;;;849:55;;;;-1:-1:-1;;;849:55:4;;;;;;;:::i;211:125::-;294:5;;;289:16;;;;281:53;;;;-1:-1:-1;;;281:53:4;;;;;;;:::i;2341:210:9:-;2397:6;2426:5;;;2450:6;;;;;;:16;;;2465:1;2460;:6;;2450:16;2449:38;;;;2476:1;2472;:5;:14;;;;;2485:1;2481;:5;2472:14;2441:84;;;;-1:-1:-1;;;2441:84:9;;;;;;;:::i;304:496:0:-;376:13;539:2;518:11;:18;:23;514:67;;;-1:-1:-1;543:38:0;;;;;;;;;;;;;;;;;;;514:67;685:4;672:11;668:22;653:37;;729:11;718:33;;;;;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;158:363::-;;;299:3;292:4;284:6;280:17;276:27;266:2;;-1:-1;;307:12;266:2;-1:-1;337:20;;-1:-1;;;;;366:30;;363:2;;;-1:-1;;399:12;363:2;443:4;435:6;431:17;419:29;;494:3;443:4;;478:6;474:17;435:6;460:32;;457:41;454:2;;;511:1;;501:12;454:2;259:262;;;;;:::o;3764:479::-;;;;3896:2;3884:9;3875:7;3871:23;3867:32;3864:2;;;-1:-1;;3902:12;3864:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;3954:63;-1:-1;4054:2;4090:22;;971:20;996:30;971:20;996:30;:::i;:::-;4062:60;-1:-1;4159:2;4195:22;;971:20;996:30;971:20;996:30;:::i;:::-;4167:60;;;;3858:385;;;;;:::o;4250:538::-;;;;4414:2;4402:9;4393:7;4389:23;4385:32;4382:2;;;-1:-1;;4420:12;4382:2;4478:17;4465:31;-1:-1;;;;;4508:6;4505:30;4502:2;;;-1:-1;;4538:12;4502:2;4576:91;4659:7;4650:6;4639:9;4635:22;4576:91;:::i;:::-;4558:109;;-1:-1;4558:109;-1:-1;;4704:2;4740:22;;971:20;996:30;971:20;996:30;:::i;4795:397::-;;;4934:2;4922:9;4913:7;4909:23;4905:32;4902:2;;;-1:-1;;4940:12;4902:2;4998:17;4985:31;-1:-1;;;;;5028:6;5025:30;5022:2;;;-1:-1;;5058:12;5022:2;5096:80;5168:7;5159:6;5148:9;5144:22;5096:80;:::i;:::-;5078:98;;;;-1:-1;4896:296;-1:-1;;;;4896:296::o;5199:257::-;;5311:2;5299:9;5290:7;5286:23;5282:32;5279:2;;;-1:-1;;5317:12;5279:2;1119:6;1113:13;1131:30;1155:5;1131:30;:::i;5463:269::-;;5581:2;5569:9;5560:7;5556:23;5552:32;5549:2;;;-1:-1;;5587:12;5549:2;1404:6;1391:20;1416:47;1457:5;1416:47;:::i;5739:291::-;;5868:2;5856:9;5847:7;5843:23;5839:32;5836:2;;;-1:-1;;5874:12;5836:2;1573:6;1567:13;1585:47;1626:5;1585:47;:::i;6037:1145::-;;;;;;;;;6272:3;6260:9;6251:7;6247:23;6243:33;6240:2;;;-1:-1;;6279:12;6240:2;1404:6;1391:20;1416:47;1457:5;1416:47;:::i;:::-;6331:77;-1:-1;6445:2;6484:22;;72:20;97:33;72:20;97:33;:::i;:::-;6453:63;-1:-1;6553:2;6592:22;;72:20;97:33;72:20;97:33;:::i;:::-;6561:63;-1:-1;6661:2;6700:22;;3420:20;;-1:-1;6769:3;6809:22;;3420:20;;-1:-1;6878:3;6916:22;;3696:20;44264:4;44253:16;;47652:33;;47642:2;;-1:-1;;47689:12;47642:2;6234:948;;;;-1:-1;6234:948;;;;;;6887:61;;-1:-1;;;6985:3;7025:22;;1240:20;;7094:3;7134:22;1240:20;;6234:948::o;7481:362::-;;7606:2;7594:9;7585:7;7581:23;7577:32;7574:2;;;-1:-1;;7612:12;7574:2;7663:17;7657:24;-1:-1;;;;;7701:18;7693:6;7690:30;7687:2;;;-1:-1;;7723:12;7687:2;7810:6;7799:9;7795:22;;;2112:3;2105:4;2097:6;2093:17;2089:27;2079:2;;-1:-1;;2120:12;2079:2;2160:6;2154:13;7701:18;40900:6;40897:30;40894:2;;;-1:-1;;40930:12;40894:2;2182:65;41003:9;40984:17;;-1:-1;;40980:33;7606:2;41061:15;2182:65;:::i;:::-;2173:74;;2267:6;2260:5;2253:21;2371:3;7606:2;2362:6;2295;2353:16;;2350:25;2347:2;;;-1:-1;;2378:12;2347:2;2398:39;2430:6;7606:2;2329:5;2325:16;7606:2;2295:6;2291:17;2398:39;:::i;:::-;-1:-1;7743:84;7568:275;-1:-1;;;;7568:275::o;7850:316::-;;7991:3;7979:9;7970:7;7966:23;7962:33;7959:2;;;-1:-1;;7998:12;7959:2;2646:20;7991:3;2646:20;:::i;:::-;1573:6;1567:13;1585:47;1626:5;1585:47;:::i;:::-;2751:74;2733:16;2726:100;;2893:2;2962:9;2958:22;3568:13;2893:2;2912:5;2908:16;2901:86;3059:2;3128:9;3124:22;3568:13;3059:2;3078:5;3074:16;3067:86;3231:2;3300:9;3296:22;3568:13;3231:2;3250:5;3246:16;3239:86;8050:100;;;;7953:213;;;;:::o;8173:241::-;;8277:2;8265:9;8256:7;8252:23;8248:32;8245:2;;;-1:-1;;8283:12;8245:2;-1:-1;3420:20;;8239:175;-1:-1;8239:175::o;8421:263::-;;8536:2;8524:9;8515:7;8511:23;8507:32;8504:2;;;-1:-1;;8542:12;8504:2;-1:-1;3568:13;;8498:186;-1:-1;8498:186::o;8691:366::-;;;8812:2;8800:9;8791:7;8787:23;8783:32;8780:2;;;-1:-1;;8818:12;8780:2;3433:6;3420:20;8870:63;;8970:2;9013:9;9009:22;72:20;97:33;124:5;97:33;:::i;:::-;8978:63;;;;8774:283;;;;;:::o;9064:555::-;;;;9234:2;9222:9;9213:7;9209:23;9205:32;9202:2;;;-1:-1;;9240:12;9202:2;3433:6;3420:20;9292:63;;9392:2;9449:9;9445:22;1391:20;1416:47;1457:5;1416:47;:::i;:::-;9400:77;-1:-1;9514:2;9571:22;;1910:20;1935:51;1910:20;1935:51;:::i;9626:491::-;;;;9764:2;9752:9;9743:7;9739:23;9735:32;9732:2;;;-1:-1;;9770:12;9732:2;3433:6;3420:20;9822:63;;9922:2;9965:9;9961:22;3420:20;9930:63;;10030:2;10073:9;10069:22;72:20;97:33;124:5;97:33;:::i;10124:647::-;;;;;10294:3;10282:9;10273:7;10269:23;10265:33;10262:2;;;-1:-1;;10301:12;10262:2;3433:6;3420:20;10353:63;;10453:2;10496:9;10492:22;3420:20;10461:63;;10561:2;10622:9;10618:22;1910:20;1935:51;1980:5;1935:51;:::i;:::-;10569:81;-1:-1;10687:2;10723:22;;971:20;996:30;971:20;996:30;:::i;:::-;10256:515;;;;-1:-1;10256:515;;-1:-1;;10256:515::o;13742:323::-;;13874:5;41515:12;42330:6;42325:3;42318:19;13957:52;14002:6;42367:4;42362:3;42358:14;42367:4;13983:5;13979:16;13957:52;:::i;:::-;41003:9;46588:14;-1:-1;;46584:28;14021:39;;;;42367:4;14021:39;;13822:243;-1:-1;;13822:243::o;22829:291::-;;46171:6;46166:3;46161;46148:30;46209:16;;46202:27;;;46209:16;22973:147;-1:-1;22973:147::o;23127:271::-;;14232:5;41515:12;14343:52;14388:6;14383:3;14376:4;14369:5;14365:16;14343:52;:::i;:::-;14407:16;;;;;23261:137;-1:-1;;23261:137::o;23405:222::-;-1:-1;;;;;43945:54;;;;11366:37;;23532:2;23517:18;;23503:124::o;23879:444::-;-1:-1;;;;;43945:54;;;11366:37;;43945:54;;;;24226:2;24211:18;;11366:37;24309:2;24294:18;;13352:37;;;;24062:2;24047:18;;24033:290::o;24330:884::-;-1:-1;;;;;43945:54;;;11366:37;;43945:54;;;;24786:2;24771:18;;11366:37;24869:2;24854:18;;13352:37;;;;24952:2;24937:18;;13352:37;;;;44264:4;44253:16;25031:3;25016:19;;22782:35;43956:42;25100:19;;13352:37;25199:3;25184:19;;13352:37;;;;24621:3;24606:19;;24592:622::o;25221:333::-;-1:-1;;;;;43945:54;;;;11366:37;;25540:2;25525:18;;13352:37;25376:2;25361:18;;25347:207::o;25561:653::-;25828:2;25842:47;;;41515:12;;25813:18;;;42318:19;;;25561:653;;42367:4;;42358:14;;;;41205;;;25561:653;11833:251;11858:6;11855:1;11852:13;11833:251;;;11919:13;;43232;43225:21;13124:34;;10920:14;;;;42052;;;;11880:1;11873:9;11833:251;;;11837:14;;;26053:9;26047:4;26043:20;42367:4;26027:9;26023:18;26016:48;26078:126;12361:5;41515:12;12380:95;12468:6;12463:3;12380:95;:::i;:::-;12373:102;;;;;42367:4;12532:6;12528:17;12523:3;12519:27;42367:4;12626:5;41205:14;-1:-1;12665:357;12690:6;12687:1;12684:13;12665:357;;;12752:9;12746:4;12742:20;12737:3;12730:33;11068:64;11128:3;12797:6;12791:13;11068:64;:::i;:::-;13001:14;;;;12811:90;-1:-1;42052:14;;;;11880:1;12705:9;12665:357;;;-1:-1;26070:134;;25799:415;-1:-1;;;;;;;;;25799:415::o;27283:310::-;;27430:2;27451:17;27444:47;27505:78;27430:2;27419:9;27415:18;27569:6;27505:78;:::i;27600:416::-;27800:2;27814:47;;;15958:2;27785:18;;;42318:19;-1:-1;;;42358:14;;;15974:44;16037:12;;;27771:245::o;28023:416::-;28223:2;28237:47;;;16288:2;28208:18;;;42318:19;-1:-1;;;42358:14;;;16304:34;16357:12;;;28194:245::o;28446:416::-;28646:2;28660:47;;;16608:2;28631:18;;;42318:19;16644:30;42358:14;;;16624:51;16694:12;;;28617:245::o;28869:416::-;29069:2;29083:47;;;16945:2;29054:18;;;42318:19;16981:34;42358:14;;;16961:55;-1:-1;;;17036:12;;;17029:26;17074:12;;;29040:245::o;29292:416::-;29492:2;29506:47;;;17325:2;29477:18;;;42318:19;17361:34;42358:14;;;17341:55;-1:-1;;;17416:12;;;17409:25;17453:12;;;29463:245::o;29715:416::-;29915:2;29929:47;;;17704:2;29900:18;;;42318:19;-1:-1;;;42358:14;;;17720:44;17783:12;;;29886:245::o;30138:416::-;30338:2;30352:47;;;18034:2;30323:18;;;42318:19;18070:30;42358:14;;;18050:51;18120:12;;;30309:245::o;30561:416::-;30761:2;30775:47;;;18371:2;30746:18;;;42318:19;18407:26;42358:14;;;18387:47;18453:12;;;30732:245::o;30984:416::-;31184:2;31198:47;;;31169:18;;;42318:19;18740:34;42358:14;;;18720:55;18794:12;;;31155:245::o;31407:416::-;31607:2;31621:47;;;19045:2;31592:18;;;42318:19;19081:30;42358:14;;;19061:51;19131:12;;;31578:245::o;31830:416::-;32030:2;32044:47;;;32015:18;;;42318:19;19418:34;42358:14;;;19398:55;19472:12;;;32001:245::o;32253:416::-;32453:2;32467:47;;;19723:2;32438:18;;;42318:19;19759:29;42358:14;;;19739:50;19808:12;;;32424:245::o;32676:416::-;32876:2;32890:47;;;20059:2;32861:18;;;42318:19;20095:34;42358:14;;;20075:55;-1:-1;;;20150:12;;;20143:28;20190:12;;;32847:245::o;33099:416::-;33299:2;33313:47;;;33284:18;;;42318:19;20477:34;42358:14;;;20457:55;20531:12;;;33270:245::o;33522:416::-;33722:2;33736:47;;;20782:2;33707:18;;;42318:19;20818:26;42358:14;;;20798:47;20864:12;;;33693:245::o;33945:416::-;34145:2;34159:47;;;21115:2;34130:18;;;42318:19;21151:34;42358:14;;;21131:55;-1:-1;;;21206:12;;;21199:32;21250:12;;;34116:245::o;34368:322::-;21567:23;;-1:-1;;;;;43825:46;22069:37;;21749:4;21738:16;;;21732:23;-1:-1;;;;;44151:30;;;21807:14;;;22550:36;;;;21907:4;21896:16;;;21890:23;44151:30;21965:14;;;22550:36;;;;34545:2;34530:18;;34516:174::o;34697:436::-;-1:-1;;;;;43825:46;;;;22069:37;;-1:-1;;;;;44151:30;;;35038:2;35023:18;;22550:36;44151:30;35119:2;35104:18;;22550:36;34876:2;34861:18;;34847:286::o;35140:222::-;13352:37;;;35267:2;35252:18;;35238:124::o;35369:716::-;13352:37;;;-1:-1;;;;;43945:54;;;35805:2;35790:18;;11225:58;43945:54;;;;35888:2;35873:18;;11366:37;35979:2;35964:18;;15309:58;;;;36070:3;36055:19;;15309:58;35632:3;35617:19;;35603:482::o;38181:321::-;13352:37;;;43232:13;43225:21;38488:2;38473:18;;13124:34;38330:2;38315:18;;38301:201::o;38509:329::-;13352:37;;;38824:2;38809:18;;13352:37;38662:2;38647:18;;38633:205::o;39541:440::-;-1:-1;;;;;44151:30;;;;22550:36;;39884:2;39869:18;;13352:37;;;;-1:-1;;;;;43825:46;39967:2;39952:18;;22309:50;39722:2;39707:18;;39693:288::o;39988:506::-;;;40123:11;40110:25;40174:48;;40198:8;40182:14;40178:29;40174:48;40154:18;40150:73;40140:2;;-1:-1;;40227:12;40140:2;40254:33;;40308:18;;;-1:-1;;;;;;40335:30;;40332:2;;;-1:-1;;40368:12;40332:2;40213:4;40396:13;;-1:-1;40182:14;40428:38;;;40418:49;;40415:2;;;40480:1;;40470:12;40501:256;40563:2;40557:9;40589:17;;;-1:-1;;;;;40649:34;;40685:22;;;40646:62;40643:2;;;40721:1;;40711:12;40643:2;40563;40730:22;40541:216;;-1:-1;40541:216::o;46244:268::-;46309:1;46316:101;46330:6;46327:1;46324:13;46316:101;;;46397:11;;;46391:18;46378:11;;;46371:39;46352:2;46345:10;46316:101;;;46432:6;46429:1;46426:13;46423:2;;;-1:-1;;46309:1;46479:16;;46472:27;46293:219::o;46625:117::-;-1:-1;;;;;43945:54;;46684:35;;46674:2;;46733:1;;46723:12;46674:2;46668:74;:::o;46749:111::-;46830:5;43232:13;43225:21;46808:5;46805:32;46795:2;;46851:1;;46841:12"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "2475400",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "GOLD_MINER()": "infinite",
                "GOLD_PID()": "infinite",
                "GOLN()": "infinite",
                "add(uint256,address,address)": "infinite",
                "batch(bytes[],bool)": "infinite",
                "claimOwnership()": "45111",
                "deposit(uint256,uint256,address)": "infinite",
                "emergencyWithdraw(uint256,address)": "infinite",
                "goldnuggetPerBlock()": "infinite",
                "harvest(uint256,address)": "infinite",
                "harvestFromGoldMiner()": "infinite",
                "init(address)": "infinite",
                "lpToken(uint256)": "2106",
                "massUpdatePools(uint256[])": "infinite",
                "migrate(uint256)": "infinite",
                "migrator()": "1182",
                "owner()": "1137",
                "pendingGoldNugget(uint256,address)": "infinite",
                "pendingOwner()": "1114",
                "permitToken(address,address,address,uint256,uint256,uint8,bytes32,bytes32)": "infinite",
                "poolInfo(uint256)": "2211",
                "poolLength()": "1097",
                "rewarder(uint256)": "2105",
                "set(uint256,uint256,address,bool)": "infinite",
                "setMigrator(address)": "22051",
                "totalAllocPoint()": "1096",
                "transferOwnership(address,bool,bool)": "infinite",
                "updatePool(uint256)": "infinite",
                "userInfo(uint256,address)": "2293",
                "withdraw(uint256,uint256,address)": "infinite",
                "withdrawAndHarvest(uint256,uint256,address)": "infinite"
              }
            },
            "methodIdentifiers": {
              "GOLD_MINER()": "ecdad3fb",
              "GOLD_PID()": "24fc3ea4",
              "GOLN()": "fe4fc140",
              "add(uint256,address,address)": "ab7de098",
              "batch(bytes[],bool)": "d2423b51",
              "claimOwnership()": "4e71e0c8",
              "deposit(uint256,uint256,address)": "8dbdbe6d",
              "emergencyWithdraw(uint256,address)": "2f940c70",
              "goldnuggetPerBlock()": "3550db2d",
              "harvest(uint256,address)": "18fccc76",
              "harvestFromGoldMiner()": "35c5c625",
              "init(address)": "19ab453c",
              "lpToken(uint256)": "78ed5d1f",
              "massUpdatePools(uint256[])": "57a5b58c",
              "migrate(uint256)": "454b0608",
              "migrator()": "7cd07e47",
              "owner()": "8da5cb5b",
              "pendingGoldNugget(uint256,address)": "ffb6c9ec",
              "pendingOwner()": "e30c3978",
              "permitToken(address,address,address,uint256,uint256,uint8,bytes32,bytes32)": "7c516e94",
              "poolInfo(uint256)": "1526fe27",
              "poolLength()": "081e3eda",
              "rewarder(uint256)": "c346253d",
              "set(uint256,uint256,address,bool)": "88bba42f",
              "setMigrator(address)": "23cf3118",
              "totalAllocPoint()": "17caf6f1",
              "transferOwnership(address,bool,bool)": "078dfbe7",
              "updatePool(uint256)": "51eb05a6",
              "userInfo(uint256,address)": "93f1a40b",
              "withdraw(uint256,uint256,address)": "0ad58d2f",
              "withdrawAndHarvest(uint256,uint256,address)": "d1abb907"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IGoldMiner\",\"name\":\"_GOLD_MINER\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"_goldnugget\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_GOLD_PID\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"EmergencyWithdraw\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Harvest\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"LogInit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"allocPoint\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"lpToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IRewarder\",\"name\":\"rewarder\",\"type\":\"address\"}],\"name\":\"LogPoolAddition\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"allocPoint\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"contract IRewarder\",\"name\":\"rewarder\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"overwrite\",\"type\":\"bool\"}],\"name\":\"LogSetPool\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"lastRewardBlock\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"accGoldNuggetPerShare\",\"type\":\"uint256\"}],\"name\":\"LogUpdatePool\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"GOLD_MINER\",\"outputs\":[{\"internalType\":\"contract IGoldMiner\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GOLD_PID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GOLN\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"allocPoint\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC20\",\"name\":\"_lpToken\",\"type\":\"address\"},{\"internalType\":\"contract IRewarder\",\"name\":\"_rewarder\",\"type\":\"address\"}],\"name\":\"add\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"calls\",\"type\":\"bytes[]\"},{\"internalType\":\"bool\",\"name\":\"revertOnFail\",\"type\":\"bool\"}],\"name\":\"batch\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"successes\",\"type\":\"bool[]\"},{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"emergencyWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"goldnuggetPerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"harvest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"harvestFromGoldMiner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"dummyToken\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"lpToken\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"pids\",\"type\":\"uint256[]\"}],\"name\":\"massUpdatePools\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"}],\"name\":\"migrate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"migrator\",\"outputs\":[{\"internalType\":\"contract IMigratorMiner\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"pendingGoldNugget\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"pending\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"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\":\"permitToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"poolInfo\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"accGoldNuggetPerShare\",\"type\":\"uint128\"},{\"internalType\":\"uint64\",\"name\":\"lastRewardBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"allocPoint\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"poolLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"pools\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"rewarder\",\"outputs\":[{\"internalType\":\"contract IRewarder\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_allocPoint\",\"type\":\"uint256\"},{\"internalType\":\"contract IRewarder\",\"name\":\"_rewarder\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"overwrite\",\"type\":\"bool\"}],\"name\":\"set\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IMigratorMiner\",\"name\":\"_migrator\",\"type\":\"address\"}],\"name\":\"setMigrator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalAllocPoint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"direct\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"renounce\",\"type\":\"bool\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"}],\"name\":\"updatePool\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"accGoldNuggetPerShare\",\"type\":\"uint128\"},{\"internalType\":\"uint64\",\"name\":\"lastRewardBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"allocPoint\",\"type\":\"uint64\"}],\"internalType\":\"struct GoldMinerV2.PoolInfo\",\"name\":\"pool\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"userInfo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"rewardDebt\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdrawAndHarvest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"add(uint256,address,address)\":{\"params\":{\"_lpToken\":\"Address of the LP ERC-20 token.\",\"_rewarder\":\"Address of the rewarder delegate.\",\"allocPoint\":\"AP of the new pool.\"}},\"constructor\":{\"params\":{\"_GOLD_MINER\":\"The LuckySwap MCV1 contract address.\",\"_GOLD_PID\":\"The pool ID of the dummy token on the base MCV1 contract.\",\"_goldnugget\":\"The GOLN token contract address.\"}},\"deposit(uint256,uint256,address)\":{\"params\":{\"amount\":\"LP token amount to deposit.\",\"pid\":\"The index of the pool. See `poolInfo`.\",\"to\":\"The receiver of `amount` deposit benefit.\"}},\"emergencyWithdraw(uint256,address)\":{\"params\":{\"pid\":\"The index of the pool. See `poolInfo`.\",\"to\":\"Receiver of the LP tokens.\"}},\"harvest(uint256,address)\":{\"params\":{\"pid\":\"The index of the pool. See `poolInfo`.\",\"to\":\"Receiver of GOLN rewards.\"}},\"init(address)\":{\"params\":{\"dummyToken\":\"The address of the ERC-20 token to deposit into MCV1.\"}},\"massUpdatePools(uint256[])\":{\"params\":{\"pids\":\"Pool IDs of all to be updated. Make sure to update all active pools.\"}},\"migrate(uint256)\":{\"params\":{\"_pid\":\"The index of the pool. See `poolInfo`.\"}},\"pendingGoldNugget(uint256,address)\":{\"params\":{\"_pid\":\"The index of the pool. See `poolInfo`.\",\"_user\":\"Address of user.\"},\"returns\":{\"pending\":\"GOLN reward for a given user.\"}},\"set(uint256,uint256,address,bool)\":{\"params\":{\"_allocPoint\":\"New AP of the pool.\",\"_pid\":\"The index of the pool. See `poolInfo`.\",\"_rewarder\":\"Address of the rewarder delegate.\",\"overwrite\":\"True if _rewarder should be `set`. Otherwise `_rewarder` is ignored.\"}},\"setMigrator(address)\":{\"params\":{\"_migrator\":\"The contract address to set.\"}},\"updatePool(uint256)\":{\"params\":{\"pid\":\"The index of the pool. See `poolInfo`.\"},\"returns\":{\"pool\":\"Returns the pool that was updated.\"}},\"withdraw(uint256,uint256,address)\":{\"params\":{\"amount\":\"LP token amount to withdraw.\",\"pid\":\"The index of the pool. See `poolInfo`.\",\"to\":\"Receiver of the LP tokens.\"}},\"withdrawAndHarvest(uint256,uint256,address)\":{\"params\":{\"amount\":\"LP token amount to withdraw.\",\"pid\":\"The index of the pool. See `poolInfo`.\",\"to\":\"Receiver of the LP tokens and GOLN rewards.\"}}},\"stateVariables\":{\"totalAllocPoint\":{\"details\":\"Total allocation points. Must be the sum of all allocation points in all pools.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"GOLD_MINER()\":{\"notice\":\"Address of MCV1 contract.\"},\"GOLD_PID()\":{\"notice\":\"The index of MCV2 master pool in MCV1.\"},\"GOLN()\":{\"notice\":\"Address of GOLN contract.\"},\"add(uint256,address,address)\":{\"notice\":\"Add a new LP to the pool. Can only be called by the owner. DO NOT add the same LP token more than once. Rewards will be messed up if you do.\"},\"deposit(uint256,uint256,address)\":{\"notice\":\"Deposit LP tokens to MCV2 for GOLN allocation.\"},\"emergencyWithdraw(uint256,address)\":{\"notice\":\"Withdraw without caring about rewards. EMERGENCY ONLY.\"},\"goldnuggetPerBlock()\":{\"notice\":\"Calculates and returns the `amount` of GOLN per block.\"},\"harvest(uint256,address)\":{\"notice\":\"Harvest proceeds for transaction sender to `to`.\"},\"harvestFromGoldMiner()\":{\"notice\":\"Harvests GOLN from `GOLD_MINER` MCV1 and pool `GOLD_PID` to this MCV2 contract.\"},\"init(address)\":{\"notice\":\"Deposits a dummy token to `GOLD_MINER` MCV1. This is required because MCV1 holds the minting rights for GOLN. Any balance of transaction sender in `dummyToken` is transferred. The allocation point for the pool on MCV1 is the total allocation point for all pools that receive double incentives.\"},\"lpToken(uint256)\":{\"notice\":\"Address of the LP token for each MCV2 pool.\"},\"massUpdatePools(uint256[])\":{\"notice\":\"Update reward variables for all pools. Be careful of gas spending!\"},\"migrate(uint256)\":{\"notice\":\"Migrate LP token to another LP contract through the `migrator` contract.\"},\"pendingGoldNugget(uint256,address)\":{\"notice\":\"View function to see pending GOLN on frontend.\"},\"poolInfo(uint256)\":{\"notice\":\"Info of each MCV2 pool.\"},\"poolLength()\":{\"notice\":\"Returns the number of MCV2 pools.\"},\"rewarder(uint256)\":{\"notice\":\"Address of each `IRewarder` contract in MCV2.\"},\"set(uint256,uint256,address,bool)\":{\"notice\":\"Update the given pool's GOLN allocation point and `IRewarder` contract. Can only be called by the owner.\"},\"setMigrator(address)\":{\"notice\":\"Set the `migrator` contract. Can only be called by the owner.\"},\"updatePool(uint256)\":{\"notice\":\"Update reward variables of the given pool.\"},\"userInfo(uint256,address)\":{\"notice\":\"Info of each user that stakes LP tokens.\"},\"withdraw(uint256,uint256,address)\":{\"notice\":\"Withdraw LP tokens from MCV2.\"},\"withdrawAndHarvest(uint256,uint256,address)\":{\"notice\":\"Withdraw LP tokens from MCV2 and harvest proceeds for transaction sender to `to`.\"}},\"notice\":\"The (older) GoldMiner contract gives out a constant number of GOLN tokens per block. It is the only address with minting rights for GOLN. The idea for this GoldMiner V2 (MCV2) contract is therefore to be the owner of a dummy token that is deposited into the GoldMiner V1 (MCV1) contract. The allocation point for this pool on MCV1 is the total allocation point for all pools that receive double incentives.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/GoldMinerV2.sol\":\"GoldMinerV2\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@boringcrypto/boring-solidity/contracts/BoringBatchable.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\r\\n// Audit on 5-Jan-2021 by Keno and BoringCrypto\\r\\n\\r\\n// P1 - P3: OK\\r\\npragma solidity 0.6.12;\\r\\npragma experimental ABIEncoderV2;\\r\\n// solhint-disable avoid-low-level-calls\\r\\n\\r\\nimport \\\"./libraries/BoringERC20.sol\\\";\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BaseBoringBatchable {\\r\\n    function _getRevertMsg(bytes memory _returnData) internal pure returns (string memory) {\\r\\n        // If the _res length is less than 68, then the transaction failed silently (without a revert message)\\r\\n        if (_returnData.length < 68) return \\\"Transaction reverted silently\\\";\\r\\n\\r\\n        assembly {\\r\\n            // Slice the sighash.\\r\\n            _returnData := add(_returnData, 0x04)\\r\\n        }\\r\\n        return abi.decode(_returnData, (string)); // All that remains is the revert string\\r\\n    }    \\r\\n    \\r\\n    // F3 - F9: OK\\r\\n    // F1: External is ok here because this is the batch function, adding it to a batch makes no sense\\r\\n    // F2: Calls in the batch may be payable, delegatecall operates in the same context, so each call in the batch has access to msg.value\\r\\n    // C1 - C21: OK\\r\\n    // C3: The length of the loop is fully under user control, so can't be exploited\\r\\n    // C7: Delegatecall is only used on the same contract, so it's safe\\r\\n    function batch(bytes[] calldata calls, bool revertOnFail) external payable returns(bool[] memory successes, bytes[] memory results) {\\r\\n        // Interactions\\r\\n        successes = new bool[](calls.length);\\r\\n        results = new bytes[](calls.length);\\r\\n        for (uint256 i = 0; i < calls.length; i++) {\\r\\n            (bool success, bytes memory result) = address(this).delegatecall(calls[i]);\\r\\n            require(success || !revertOnFail, _getRevertMsg(result));\\r\\n            successes[i] = success;\\r\\n            results[i] = result;\\r\\n        }\\r\\n    }\\r\\n}\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BoringBatchable is BaseBoringBatchable {\\r\\n    // F1 - F9: OK\\r\\n    // F6: Parameters can be used front-run the permit and the user's permit will fail (due to nonce or other revert)\\r\\n    //     if part of a batch this could be used to grief once as the second call would not need the permit\\r\\n    // C1 - C21: OK\\r\\n    function permitToken(IERC20 token, address from, address to, uint256 amount, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {\\r\\n        // Interactions\\r\\n        // X1 - X5\\r\\n        token.permit(from, to, amount, deadline, v, r, s);\\r\\n    }\\r\\n}\",\"keccak256\":\"0xe0b0316b015447ee28c6b7d96c4347b410a66e5d26e922ef3bcccc22f3b4d590\",\"license\":\"UNLICENSED\"},\"@boringcrypto/boring-solidity/contracts/BoringOwnable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\n// Audit on 5-Jan-2021 by Keno and BoringCrypto\\r\\n\\r\\n// P1 - P3: OK\\r\\npragma solidity 0.6.12;\\r\\n\\r\\n// Source: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol + Claimable.sol\\r\\n// Edited by BoringCrypto\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BoringOwnableData {\\r\\n    // V1 - V5: OK\\r\\n    address public owner;\\r\\n    // V1 - V5: OK\\r\\n    address public pendingOwner;\\r\\n}\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BoringOwnable is BoringOwnableData {\\r\\n    // E1: OK\\r\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\r\\n\\r\\n    constructor () public {\\r\\n        owner = msg.sender;\\r\\n        emit OwnershipTransferred(address(0), msg.sender);\\r\\n    }\\r\\n\\r\\n    // F1 - F9: OK\\r\\n    // C1 - C21: OK\\r\\n    function transferOwnership(address newOwner, bool direct, bool renounce) public onlyOwner {\\r\\n        if (direct) {\\r\\n            // Checks\\r\\n            require(newOwner != address(0) || renounce, \\\"Ownable: zero address\\\");\\r\\n\\r\\n            // Effects\\r\\n            emit OwnershipTransferred(owner, newOwner);\\r\\n            owner = newOwner;\\r\\n            pendingOwner = address(0);\\r\\n        } else {\\r\\n            // Effects\\r\\n            pendingOwner = newOwner;\\r\\n        }\\r\\n    }\\r\\n\\r\\n    // F1 - F9: OK\\r\\n    // C1 - C21: OK\\r\\n    function claimOwnership() public {\\r\\n        address _pendingOwner = pendingOwner;\\r\\n        \\r\\n        // Checks\\r\\n        require(msg.sender == _pendingOwner, \\\"Ownable: caller != pending owner\\\");\\r\\n\\r\\n        // Effects\\r\\n        emit OwnershipTransferred(owner, _pendingOwner);\\r\\n        owner = _pendingOwner;\\r\\n        pendingOwner = address(0);\\r\\n    }\\r\\n\\r\\n    // M1 - M5: OK\\r\\n    // C1 - C21: OK\\r\\n    modifier onlyOwner() {\\r\\n        require(msg.sender == owner, \\\"Ownable: caller is not the owner\\\");\\r\\n        _;\\r\\n    }\\r\\n}\",\"keccak256\":\"0xfafb586b248c1c697227f5745397562cfe5be2f04e19fb80fc79fc94e3afaba1\",\"license\":\"MIT\"},\"@boringcrypto/boring-solidity/contracts/interfaces/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity 0.6.12;\\r\\n\\r\\ninterface IERC20 {\\r\\n    function totalSupply() external view returns (uint256);\\r\\n    function balanceOf(address account) external view returns (uint256);\\r\\n    function allowance(address owner, address spender) external view returns (uint256);\\r\\n    function approve(address spender, uint256 amount) external returns (bool);\\r\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\r\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\r\\n\\r\\n    // EIP 2612\\r\\n    function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;\\r\\n}\",\"keccak256\":\"0x8004f86e4536cca55b8eeb2621fe18e1ee57d779396ddef50bce5bf70fb59867\",\"license\":\"MIT\"},\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\r\\npragma solidity 0.6.12;\\r\\n\\r\\nimport \\\"../interfaces/IERC20.sol\\\";\\r\\n\\r\\nlibrary BoringERC20 {\\r\\n    function safeSymbol(IERC20 token) internal view returns(string memory) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x95d89b41));\\r\\n        return success && data.length > 0 ? abi.decode(data, (string)) : \\\"???\\\";\\r\\n    }\\r\\n\\r\\n    function safeName(IERC20 token) internal view returns(string memory) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x06fdde03));\\r\\n        return success && data.length > 0 ? abi.decode(data, (string)) : \\\"???\\\";\\r\\n    }\\r\\n\\r\\n    function safeDecimals(IERC20 token) internal view returns (uint8) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x313ce567));\\r\\n        return success && data.length == 32 ? abi.decode(data, (uint8)) : 18;\\r\\n    }\\r\\n\\r\\n    function safeTransfer(IERC20 token, address to, uint256 amount) internal {\\r\\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0xa9059cbb, to, amount));\\r\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"BoringERC20: Transfer failed\\\");\\r\\n    }\\r\\n\\r\\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 amount) internal {\\r\\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0x23b872dd, from, to, amount));\\r\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"BoringERC20: TransferFrom failed\\\");\\r\\n    }\\r\\n}\",\"keccak256\":\"0x69f1ccf716991e5d6d64dc0e3bc3828fd1990bc18400d680b1aa1960675daaaa\",\"license\":\"UNLICENSED\"},\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity 0.6.12;\\r\\n// a library for performing overflow-safe math, updated with awesomeness from of DappHub (https://github.com/dapphub/ds-math)\\r\\nlibrary BoringMath {\\r\\n    function add(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {require(b == 0 || (c = a * b)/b == a, \\\"BoringMath: Mul Overflow\\\");}\\r\\n    function to128(uint256 a) internal pure returns (uint128 c) {\\r\\n        require(a <= uint128(-1), \\\"BoringMath: uint128 Overflow\\\");\\r\\n        c = uint128(a);\\r\\n    }\\r\\n    function to64(uint256 a) internal pure returns (uint64 c) {\\r\\n        require(a <= uint64(-1), \\\"BoringMath: uint64 Overflow\\\");\\r\\n        c = uint64(a);\\r\\n    }\\r\\n    function to32(uint256 a) internal pure returns (uint32 c) {\\r\\n        require(a <= uint32(-1), \\\"BoringMath: uint32 Overflow\\\");\\r\\n        c = uint32(a);\\r\\n    }\\r\\n}\\r\\n\\r\\nlibrary BoringMath128 {\\r\\n    function add(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\\r\\n\\r\\nlibrary BoringMath64 {\\r\\n    function add(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\\r\\n\\r\\nlibrary BoringMath32 {\\r\\n    function add(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\",\"keccak256\":\"0x2d0e99483c5618251d4b52e8551918253bf044c63e0d09a2f1f652671f9ff762\",\"license\":\"MIT\"},\"contracts/GoldMinerV2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.6.12;\\npragma experimental ABIEncoderV2;\\n\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\\\";\\nimport \\\"@boringcrypto/boring-solidity/contracts/BoringBatchable.sol\\\";\\nimport \\\"@boringcrypto/boring-solidity/contracts/BoringOwnable.sol\\\";\\nimport \\\"./libraries/SignedSafeMath.sol\\\";\\nimport \\\"./interfaces/IRewarder.sol\\\";\\nimport \\\"./interfaces/IGoldMiner.sol\\\";\\n\\ninterface IMigratorMiner {\\n    // Take the current LP token address and return the new LP token address.\\n    // Migrator should have full access to the caller's LP token.\\n    function migrate(IERC20 token) external returns (IERC20);\\n}\\n\\n/// @notice The (older) GoldMiner contract gives out a constant number of GOLN tokens per block.\\n/// It is the only address with minting rights for GOLN.\\n/// The idea for this GoldMiner V2 (MCV2) contract is therefore to be the owner of a dummy token\\n/// that is deposited into the GoldMiner V1 (MCV1) contract.\\n/// The allocation point for this pool on MCV1 is the total allocation point for all pools that receive double incentives.\\ncontract GoldMinerV2 is BoringOwnable, BoringBatchable {\\n    using BoringMath for uint256;\\n    using BoringMath128 for uint128;\\n    using BoringERC20 for IERC20;\\n    using SignedSafeMath for int256;\\n\\n    /// @notice Info of each MCV2 user.\\n    /// `amount` LP token amount the user has provided.\\n    /// `rewardDebt` The amount of GOLN entitled to the user.\\n    struct UserInfo {\\n        uint256 amount;\\n        int256 rewardDebt;\\n    }\\n\\n    /// @notice Info of each MCV2 pool.\\n    /// `allocPoint` The amount of allocation points assigned to the pool.\\n    /// Also known as the amount of GOLN to distribute per block.\\n    struct PoolInfo {\\n        uint128 accGoldNuggetPerShare;\\n        uint64 lastRewardBlock;\\n        uint64 allocPoint;\\n    }\\n\\n    /// @notice Address of MCV1 contract.\\n    IGoldMiner public immutable GOLD_MINER;\\n    /// @notice Address of GOLN contract.\\n    IERC20 public immutable GOLN;\\n    /// @notice The index of MCV2 master pool in MCV1.\\n    uint256 public immutable GOLD_PID;\\n    // @notice The migrator contract. It has a lot of power. Can only be set through governance (owner).\\n    IMigratorMiner public migrator;\\n\\n    /// @notice Info of each MCV2 pool.\\n    PoolInfo[] public poolInfo;\\n    /// @notice Address of the LP token for each MCV2 pool.\\n    IERC20[] public lpToken;\\n    /// @notice Address of each `IRewarder` contract in MCV2.\\n    IRewarder[] public rewarder;\\n\\n    /// @notice Info of each user that stakes LP tokens.\\n    mapping (uint256 => mapping (address => UserInfo)) public userInfo;\\n    /// @dev Total allocation points. Must be the sum of all allocation points in all pools.\\n    uint256 public totalAllocPoint;\\n\\n    uint256 private constant GOLDMINER_GOLN_PER_BLOCK = 1e20;\\n    uint256 private constant ACC_GOLN_PRECISION = 1e12;\\n\\n    event Deposit(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\\n    event Withdraw(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\\n    event EmergencyWithdraw(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\\n    event Harvest(address indexed user, uint256 indexed pid, uint256 amount);\\n    event LogPoolAddition(uint256 indexed pid, uint256 allocPoint, IERC20 indexed lpToken, IRewarder indexed rewarder);\\n    event LogSetPool(uint256 indexed pid, uint256 allocPoint, IRewarder indexed rewarder, bool overwrite);\\n    event LogUpdatePool(uint256 indexed pid, uint64 lastRewardBlock, uint256 lpSupply, uint256 accGoldNuggetPerShare);\\n    event LogInit();\\n\\n    /// @param _GOLD_MINER The LuckySwap MCV1 contract address.\\n    /// @param _goldnugget The GOLN token contract address.\\n    /// @param _GOLD_PID The pool ID of the dummy token on the base MCV1 contract.\\n    constructor(IGoldMiner _GOLD_MINER, IERC20 _goldnugget, uint256 _GOLD_PID) public {\\n        GOLD_MINER = _GOLD_MINER;\\n        GOLN = _goldnugget;\\n        GOLD_PID = _GOLD_PID;\\n    }\\n\\n    /// @notice Deposits a dummy token to `GOLD_MINER` MCV1. This is required because MCV1 holds the minting rights for GOLN.\\n    /// Any balance of transaction sender in `dummyToken` is transferred.\\n    /// The allocation point for the pool on MCV1 is the total allocation point for all pools that receive double incentives.\\n    /// @param dummyToken The address of the ERC-20 token to deposit into MCV1.\\n    function init(IERC20 dummyToken) external {\\n        uint256 balance = dummyToken.balanceOf(msg.sender);\\n        require(balance != 0, \\\"GoldMinerV2: Balance must exceed 0\\\");\\n        dummyToken.safeTransferFrom(msg.sender, address(this), balance);\\n        dummyToken.approve(address(GOLD_MINER), balance);\\n        GOLD_MINER.deposit(GOLD_PID, balance);\\n        emit LogInit();\\n    }\\n\\n    /// @notice Returns the number of MCV2 pools.\\n    function poolLength() public view returns (uint256 pools) {\\n        pools = poolInfo.length;\\n    }\\n\\n    /// @notice Add a new LP to the pool. Can only be called by the owner.\\n    /// DO NOT add the same LP token more than once. Rewards will be messed up if you do.\\n    /// @param allocPoint AP of the new pool.\\n    /// @param _lpToken Address of the LP ERC-20 token.\\n    /// @param _rewarder Address of the rewarder delegate.\\n    function add(uint256 allocPoint, IERC20 _lpToken, IRewarder _rewarder) public onlyOwner {\\n        uint256 lastRewardBlock = block.number;\\n        totalAllocPoint = totalAllocPoint.add(allocPoint);\\n        lpToken.push(_lpToken);\\n        rewarder.push(_rewarder);\\n\\n        poolInfo.push(PoolInfo({\\n            allocPoint: allocPoint.to64(),\\n            lastRewardBlock: lastRewardBlock.to64(),\\n            accGoldNuggetPerShare: 0\\n        }));\\n        emit LogPoolAddition(lpToken.length.sub(1), allocPoint, _lpToken, _rewarder);\\n    }\\n\\n    /// @notice Update the given pool's GOLN allocation point and `IRewarder` contract. Can only be called by the owner.\\n    /// @param _pid The index of the pool. See `poolInfo`.\\n    /// @param _allocPoint New AP of the pool.\\n    /// @param _rewarder Address of the rewarder delegate.\\n    /// @param overwrite True if _rewarder should be `set`. Otherwise `_rewarder` is ignored.\\n    function set(uint256 _pid, uint256 _allocPoint, IRewarder _rewarder, bool overwrite) public onlyOwner {\\n        totalAllocPoint = totalAllocPoint.sub(poolInfo[_pid].allocPoint).add(_allocPoint);\\n        poolInfo[_pid].allocPoint = _allocPoint.to64();\\n        if (overwrite) { rewarder[_pid] = _rewarder; }\\n        emit LogSetPool(_pid, _allocPoint, overwrite ? _rewarder : rewarder[_pid], overwrite);\\n    }\\n\\n    /// @notice Set the `migrator` contract. Can only be called by the owner.\\n    /// @param _migrator The contract address to set.\\n    function setMigrator(IMigratorMiner _migrator) public onlyOwner {\\n        migrator = _migrator;\\n    }\\n\\n    /// @notice Migrate LP token to another LP contract through the `migrator` contract.\\n    /// @param _pid The index of the pool. See `poolInfo`.\\n    function migrate(uint256 _pid) public {\\n        require(address(migrator) != address(0), \\\"GoldMinerV2: no migrator set\\\");\\n        IERC20 _lpToken = lpToken[_pid];\\n        uint256 bal = _lpToken.balanceOf(address(this));\\n        _lpToken.approve(address(migrator), bal);\\n        IERC20 newLpToken = migrator.migrate(_lpToken);\\n        require(bal == newLpToken.balanceOf(address(this)), \\\"GoldMinerV2: migrated balance must match\\\");\\n        lpToken[_pid] = newLpToken;\\n    }\\n\\n    /// @notice View function to see pending GOLN on frontend.\\n    /// @param _pid The index of the pool. See `poolInfo`.\\n    /// @param _user Address of user.\\n    /// @return pending GOLN reward for a given user.\\n    function pendingGoldNugget(uint256 _pid, address _user) external view returns (uint256 pending) {\\n        PoolInfo memory pool = poolInfo[_pid];\\n        UserInfo storage user = userInfo[_pid][_user];\\n        uint256 accGoldNuggetPerShare = pool.accGoldNuggetPerShare;\\n        uint256 lpSupply = lpToken[_pid].balanceOf(address(this));\\n        if (block.number > pool.lastRewardBlock && lpSupply != 0) {\\n            uint256 blocks = block.number.sub(pool.lastRewardBlock);\\n            uint256 goldnuggetReward = blocks.mul(goldnuggetPerBlock()).mul(pool.allocPoint) / totalAllocPoint;\\n            accGoldNuggetPerShare = accGoldNuggetPerShare.add(goldnuggetReward.mul(ACC_GOLN_PRECISION) / lpSupply);\\n        }\\n        pending = int256(user.amount.mul(accGoldNuggetPerShare) / ACC_GOLN_PRECISION).sub(user.rewardDebt).toUInt256();\\n    }\\n\\n    /// @notice Update reward variables for all pools. Be careful of gas spending!\\n    /// @param pids Pool IDs of all to be updated. Make sure to update all active pools.\\n    function massUpdatePools(uint256[] calldata pids) external {\\n        uint256 len = pids.length;\\n        for (uint256 i = 0; i < len; ++i) {\\n            updatePool(pids[i]);\\n        }\\n    }\\n\\n    /// @notice Calculates and returns the `amount` of GOLN per block.\\n    function goldnuggetPerBlock() public view returns (uint256 amount) {\\n        amount = uint256(GOLDMINER_GOLN_PER_BLOCK)\\n            .mul(GOLD_MINER.poolInfo(GOLD_PID).allocPoint) / GOLD_MINER.totalAllocPoint();\\n    }\\n\\n    /// @notice Update reward variables of the given pool.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @return pool Returns the pool that was updated.\\n    function updatePool(uint256 pid) public returns (PoolInfo memory pool) {\\n        pool = poolInfo[pid];\\n        if (block.number > pool.lastRewardBlock) {\\n            uint256 lpSupply = lpToken[pid].balanceOf(address(this));\\n            if (lpSupply > 0) {\\n                uint256 blocks = block.number.sub(pool.lastRewardBlock);\\n                uint256 goldnuggetReward = blocks.mul(goldnuggetPerBlock()).mul(pool.allocPoint) / totalAllocPoint;\\n                pool.accGoldNuggetPerShare = pool.accGoldNuggetPerShare.add((goldnuggetReward.mul(ACC_GOLN_PRECISION) / lpSupply).to128());\\n            }\\n            pool.lastRewardBlock = block.number.to64();\\n            poolInfo[pid] = pool;\\n            emit LogUpdatePool(pid, pool.lastRewardBlock, lpSupply, pool.accGoldNuggetPerShare);\\n        }\\n    }\\n\\n    /// @notice Deposit LP tokens to MCV2 for GOLN allocation.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param amount LP token amount to deposit.\\n    /// @param to The receiver of `amount` deposit benefit.\\n    function deposit(uint256 pid, uint256 amount, address to) public {\\n        PoolInfo memory pool = updatePool(pid);\\n        UserInfo storage user = userInfo[pid][to];\\n\\n        // Effects\\n        user.amount = user.amount.add(amount);\\n        user.rewardDebt = user.rewardDebt.add(int256(amount.mul(pool.accGoldNuggetPerShare) / ACC_GOLN_PRECISION));\\n\\n        // Interactions\\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onGoldNuggetReward(pid, to, to, 0, user.amount);\\n        }\\n\\n        lpToken[pid].safeTransferFrom(msg.sender, address(this), amount);\\n\\n        emit Deposit(msg.sender, pid, amount, to);\\n    }\\n\\n    /// @notice Withdraw LP tokens from MCV2.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param amount LP token amount to withdraw.\\n    /// @param to Receiver of the LP tokens.\\n    function withdraw(uint256 pid, uint256 amount, address to) public {\\n        PoolInfo memory pool = updatePool(pid);\\n        UserInfo storage user = userInfo[pid][msg.sender];\\n\\n        // Effects\\n        user.rewardDebt = user.rewardDebt.sub(int256(amount.mul(pool.accGoldNuggetPerShare) / ACC_GOLN_PRECISION));\\n        user.amount = user.amount.sub(amount);\\n\\n        // Interactions\\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onGoldNuggetReward(pid, msg.sender, to, 0, user.amount);\\n        }\\n\\n        lpToken[pid].safeTransfer(to, amount);\\n\\n        emit Withdraw(msg.sender, pid, amount, to);\\n    }\\n\\n    /// @notice Harvest proceeds for transaction sender to `to`.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param to Receiver of GOLN rewards.\\n    function harvest(uint256 pid, address to) public {\\n        PoolInfo memory pool = updatePool(pid);\\n        UserInfo storage user = userInfo[pid][msg.sender];\\n        int256 accumulatedGoldNugget = int256(user.amount.mul(pool.accGoldNuggetPerShare) / ACC_GOLN_PRECISION);\\n        uint256 _pendingGoldNugget = accumulatedGoldNugget.sub(user.rewardDebt).toUInt256();\\n\\n        // Effects\\n        user.rewardDebt = accumulatedGoldNugget;\\n\\n        // Interactions\\n        if (_pendingGoldNugget != 0) {\\n            GOLN.safeTransfer(to, _pendingGoldNugget);\\n        }\\n\\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onGoldNuggetReward( pid, msg.sender, to, _pendingGoldNugget, user.amount);\\n        }\\n\\n        emit Harvest(msg.sender, pid, _pendingGoldNugget);\\n    }\\n\\n    /// @notice Withdraw LP tokens from MCV2 and harvest proceeds for transaction sender to `to`.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param amount LP token amount to withdraw.\\n    /// @param to Receiver of the LP tokens and GOLN rewards.\\n    function withdrawAndHarvest(uint256 pid, uint256 amount, address to) public {\\n        PoolInfo memory pool = updatePool(pid);\\n        UserInfo storage user = userInfo[pid][msg.sender];\\n        int256 accumulatedGoldNugget = int256(user.amount.mul(pool.accGoldNuggetPerShare) / ACC_GOLN_PRECISION);\\n        uint256 _pendingGoldNugget = accumulatedGoldNugget.sub(user.rewardDebt).toUInt256();\\n\\n        // Effects\\n        user.rewardDebt = accumulatedGoldNugget.sub(int256(amount.mul(pool.accGoldNuggetPerShare) / ACC_GOLN_PRECISION));\\n        user.amount = user.amount.sub(amount);\\n\\n        // Interactions\\n        GOLN.safeTransfer(to, _pendingGoldNugget);\\n\\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onGoldNuggetReward(pid, msg.sender, to, _pendingGoldNugget, user.amount);\\n        }\\n\\n        lpToken[pid].safeTransfer(to, amount);\\n\\n        emit Withdraw(msg.sender, pid, amount, to);\\n        emit Harvest(msg.sender, pid, _pendingGoldNugget);\\n    }\\n\\n    /// @notice Harvests GOLN from `GOLD_MINER` MCV1 and pool `GOLD_PID` to this MCV2 contract.\\n    function harvestFromGoldMiner() public {\\n        GOLD_MINER.deposit(GOLD_PID, 0);\\n    }\\n\\n    /// @notice Withdraw without caring about rewards. EMERGENCY ONLY.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param to Receiver of the LP tokens.\\n    function emergencyWithdraw(uint256 pid, address to) public {\\n        UserInfo storage user = userInfo[pid][msg.sender];\\n        uint256 amount = user.amount;\\n        user.amount = 0;\\n        user.rewardDebt = 0;\\n\\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onGoldNuggetReward(pid, msg.sender, to, 0, 0);\\n        }\\n\\n        // Note: transfer can fail or succeed if `amount` is zero.\\n        lpToken[pid].safeTransfer(to, amount);\\n        emit EmergencyWithdraw(msg.sender, pid, amount, to);\\n    }\\n}\\n\",\"keccak256\":\"0xfc23639df5c42593066a6bce649c0e034e5f35289c903ad4d854798807c4914a\",\"license\":\"MIT\"},\"contracts/interfaces/IGoldMiner.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity 0.6.12;\\npragma experimental ABIEncoderV2;\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\\\";\\n\\ninterface IGoldMiner {\\n    using BoringERC20 for IERC20;\\n    struct UserInfo {\\n        uint256 amount;     // How many LP tokens the user has provided.\\n        uint256 rewardDebt; // Reward debt. See explanation below.\\n    }\\n\\n    struct PoolInfo {\\n        IERC20 lpToken;           // Address of LP token contract.\\n        uint256 allocPoint;       // How many allocation points assigned to this pool. GOLN to distribute per block.\\n        uint256 lastRewardBlock;  // Last block number that GOLN distribution occurs.\\n        uint256 accGoldNuggetPerShare; // Accumulated GOLN per share, times 1e12. See below.\\n    }\\n\\n    function poolInfo(uint256 pid) external view returns (IGoldMiner.PoolInfo memory);\\n    function totalAllocPoint() external view returns (uint256);\\n    function deposit(uint256 _pid, uint256 _amount) external;\\n}\\n\",\"keccak256\":\"0xe6ba2f319be5134738042eb6e1e104324752729a4582177ef88350856b4a7280\",\"license\":\"MIT\"},\"contracts/interfaces/IRewarder.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.6.12;\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\\\";\\ninterface IRewarder {\\n    using BoringERC20 for IERC20;\\n    function onGoldNuggetReward(uint256 pid, address user, address recipient, uint256 goldnuggetAmount, uint256 newLpAmount) external;\\n    function pendingTokens(uint256 pid, address user, uint256 goldnuggetAmount) external view returns (IERC20[] memory, uint256[] memory);\\n}\\n\",\"keccak256\":\"0x92579e172bd0f29fd768cf7c6ccd1a8a74204d8bac7d7ae95538370d1265ac5c\",\"license\":\"MIT\"},\"contracts/libraries/SignedSafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.6.12;\\n\\nlibrary SignedSafeMath {\\n    int256 constant private _INT256_MIN = -2**255;\\n\\n    /**\\n     * @dev Returns the multiplication of two signed integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `*` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Multiplication cannot overflow.\\n     */\\n    function mul(int256 a, int256 b) internal pure returns (int256) {\\n        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\\n        // benefit is lost if 'b' is also tested.\\n        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\\n        if (a == 0) {\\n            return 0;\\n        }\\n\\n        require(!(a == -1 && b == _INT256_MIN), \\\"SignedSafeMath: multiplication overflow\\\");\\n\\n        int256 c = a * b;\\n        require(c / a == b, \\\"SignedSafeMath: multiplication overflow\\\");\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Returns the integer division of two signed integers. Reverts on\\n     * division by zero. The result is rounded towards zero.\\n     *\\n     * Counterpart to Solidity's `/` operator. Note: this function uses a\\n     * `revert` opcode (which leaves remaining gas untouched) while Solidity\\n     * uses an invalid opcode to revert (consuming all remaining gas).\\n     *\\n     * Requirements:\\n     *\\n     * - The divisor cannot be zero.\\n     */\\n    function div(int256 a, int256 b) internal pure returns (int256) {\\n        require(b != 0, \\\"SignedSafeMath: division by zero\\\");\\n        require(!(b == -1 && a == _INT256_MIN), \\\"SignedSafeMath: division overflow\\\");\\n\\n        int256 c = a / b;\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Returns the subtraction of two signed integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `-` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Subtraction cannot overflow.\\n     */\\n    function sub(int256 a, int256 b) internal pure returns (int256) {\\n        int256 c = a - b;\\n        require((b >= 0 && c <= a) || (b < 0 && c > a), \\\"SignedSafeMath: subtraction overflow\\\");\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Returns the addition of two signed integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `+` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Addition cannot overflow.\\n     */\\n    function add(int256 a, int256 b) internal pure returns (int256) {\\n        int256 c = a + b;\\n        require((b >= 0 && c >= a) || (b < 0 && c < a), \\\"SignedSafeMath: addition overflow\\\");\\n\\n        return c;\\n    }\\n\\n    function toUInt256(int256 a) internal pure returns (uint256) {\\n        require(a >= 0, \\\"Integer < 0\\\");\\n        return uint256(a);\\n    }\\n}\",\"keccak256\":\"0x4991beb21b224dfcdc3d251e0a60fdc304d4f6b699b2c35d08f3974e5b84c86a\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 149,
                "contract": "contracts/GoldMinerV2.sol:GoldMinerV2",
                "label": "owner",
                "offset": 0,
                "slot": "0",
                "type": "t_address"
              },
              {
                "astId": 151,
                "contract": "contracts/GoldMinerV2.sol:GoldMinerV2",
                "label": "pendingOwner",
                "offset": 0,
                "slot": "1",
                "type": "t_address"
              },
              {
                "astId": 898,
                "contract": "contracts/GoldMinerV2.sol:GoldMinerV2",
                "label": "migrator",
                "offset": 0,
                "slot": "2",
                "type": "t_contract(IMigratorMiner)858"
              },
              {
                "astId": 902,
                "contract": "contracts/GoldMinerV2.sol:GoldMinerV2",
                "label": "poolInfo",
                "offset": 0,
                "slot": "3",
                "type": "t_array(t_struct(PoolInfo)887_storage)dyn_storage"
              },
              {
                "astId": 906,
                "contract": "contracts/GoldMinerV2.sol:GoldMinerV2",
                "label": "lpToken",
                "offset": 0,
                "slot": "4",
                "type": "t_array(t_contract(IERC20)337)dyn_storage"
              },
              {
                "astId": 910,
                "contract": "contracts/GoldMinerV2.sol:GoldMinerV2",
                "label": "rewarder",
                "offset": 0,
                "slot": "5",
                "type": "t_array(t_contract(IRewarder)3320)dyn_storage"
              },
              {
                "astId": 917,
                "contract": "contracts/GoldMinerV2.sol:GoldMinerV2",
                "label": "userInfo",
                "offset": 0,
                "slot": "6",
                "type": "t_mapping(t_uint256,t_mapping(t_address,t_struct(UserInfo)880_storage))"
              },
              {
                "astId": 920,
                "contract": "contracts/GoldMinerV2.sol:GoldMinerV2",
                "label": "totalAllocPoint",
                "offset": 0,
                "slot": "7",
                "type": "t_uint256"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_array(t_contract(IERC20)337)dyn_storage": {
                "base": "t_contract(IERC20)337",
                "encoding": "dynamic_array",
                "label": "contract IERC20[]",
                "numberOfBytes": "32"
              },
              "t_array(t_contract(IRewarder)3320)dyn_storage": {
                "base": "t_contract(IRewarder)3320",
                "encoding": "dynamic_array",
                "label": "contract IRewarder[]",
                "numberOfBytes": "32"
              },
              "t_array(t_struct(PoolInfo)887_storage)dyn_storage": {
                "base": "t_struct(PoolInfo)887_storage",
                "encoding": "dynamic_array",
                "label": "struct GoldMinerV2.PoolInfo[]",
                "numberOfBytes": "32"
              },
              "t_contract(IERC20)337": {
                "encoding": "inplace",
                "label": "contract IERC20",
                "numberOfBytes": "20"
              },
              "t_contract(IMigratorMiner)858": {
                "encoding": "inplace",
                "label": "contract IMigratorMiner",
                "numberOfBytes": "20"
              },
              "t_contract(IRewarder)3320": {
                "encoding": "inplace",
                "label": "contract IRewarder",
                "numberOfBytes": "20"
              },
              "t_int256": {
                "encoding": "inplace",
                "label": "int256",
                "numberOfBytes": "32"
              },
              "t_mapping(t_address,t_struct(UserInfo)880_storage)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => struct GoldMinerV2.UserInfo)",
                "numberOfBytes": "32",
                "value": "t_struct(UserInfo)880_storage"
              },
              "t_mapping(t_uint256,t_mapping(t_address,t_struct(UserInfo)880_storage))": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => mapping(address => struct GoldMinerV2.UserInfo))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_address,t_struct(UserInfo)880_storage)"
              },
              "t_struct(PoolInfo)887_storage": {
                "encoding": "inplace",
                "label": "struct GoldMinerV2.PoolInfo",
                "members": [
                  {
                    "astId": 882,
                    "contract": "contracts/GoldMinerV2.sol:GoldMinerV2",
                    "label": "accGoldNuggetPerShare",
                    "offset": 0,
                    "slot": "0",
                    "type": "t_uint128"
                  },
                  {
                    "astId": 884,
                    "contract": "contracts/GoldMinerV2.sol:GoldMinerV2",
                    "label": "lastRewardBlock",
                    "offset": 16,
                    "slot": "0",
                    "type": "t_uint64"
                  },
                  {
                    "astId": 886,
                    "contract": "contracts/GoldMinerV2.sol:GoldMinerV2",
                    "label": "allocPoint",
                    "offset": 24,
                    "slot": "0",
                    "type": "t_uint64"
                  }
                ],
                "numberOfBytes": "32"
              },
              "t_struct(UserInfo)880_storage": {
                "encoding": "inplace",
                "label": "struct GoldMinerV2.UserInfo",
                "members": [
                  {
                    "astId": 877,
                    "contract": "contracts/GoldMinerV2.sol:GoldMinerV2",
                    "label": "amount",
                    "offset": 0,
                    "slot": "0",
                    "type": "t_uint256"
                  },
                  {
                    "astId": 879,
                    "contract": "contracts/GoldMinerV2.sol:GoldMinerV2",
                    "label": "rewardDebt",
                    "offset": 0,
                    "slot": "1",
                    "type": "t_int256"
                  }
                ],
                "numberOfBytes": "64"
              },
              "t_uint128": {
                "encoding": "inplace",
                "label": "uint128",
                "numberOfBytes": "16"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              },
              "t_uint64": {
                "encoding": "inplace",
                "label": "uint64",
                "numberOfBytes": "8"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "GOLD_MINER()": {
                "notice": "Address of MCV1 contract."
              },
              "GOLD_PID()": {
                "notice": "The index of MCV2 master pool in MCV1."
              },
              "GOLN()": {
                "notice": "Address of GOLN contract."
              },
              "add(uint256,address,address)": {
                "notice": "Add a new LP to the pool. Can only be called by the owner. DO NOT add the same LP token more than once. Rewards will be messed up if you do."
              },
              "deposit(uint256,uint256,address)": {
                "notice": "Deposit LP tokens to MCV2 for GOLN allocation."
              },
              "emergencyWithdraw(uint256,address)": {
                "notice": "Withdraw without caring about rewards. EMERGENCY ONLY."
              },
              "goldnuggetPerBlock()": {
                "notice": "Calculates and returns the `amount` of GOLN per block."
              },
              "harvest(uint256,address)": {
                "notice": "Harvest proceeds for transaction sender to `to`."
              },
              "harvestFromGoldMiner()": {
                "notice": "Harvests GOLN from `GOLD_MINER` MCV1 and pool `GOLD_PID` to this MCV2 contract."
              },
              "init(address)": {
                "notice": "Deposits a dummy token to `GOLD_MINER` MCV1. This is required because MCV1 holds the minting rights for GOLN. Any balance of transaction sender in `dummyToken` is transferred. The allocation point for the pool on MCV1 is the total allocation point for all pools that receive double incentives."
              },
              "lpToken(uint256)": {
                "notice": "Address of the LP token for each MCV2 pool."
              },
              "massUpdatePools(uint256[])": {
                "notice": "Update reward variables for all pools. Be careful of gas spending!"
              },
              "migrate(uint256)": {
                "notice": "Migrate LP token to another LP contract through the `migrator` contract."
              },
              "pendingGoldNugget(uint256,address)": {
                "notice": "View function to see pending GOLN on frontend."
              },
              "poolInfo(uint256)": {
                "notice": "Info of each MCV2 pool."
              },
              "poolLength()": {
                "notice": "Returns the number of MCV2 pools."
              },
              "rewarder(uint256)": {
                "notice": "Address of each `IRewarder` contract in MCV2."
              },
              "set(uint256,uint256,address,bool)": {
                "notice": "Update the given pool's GOLN allocation point and `IRewarder` contract. Can only be called by the owner."
              },
              "setMigrator(address)": {
                "notice": "Set the `migrator` contract. Can only be called by the owner."
              },
              "updatePool(uint256)": {
                "notice": "Update reward variables of the given pool."
              },
              "userInfo(uint256,address)": {
                "notice": "Info of each user that stakes LP tokens."
              },
              "withdraw(uint256,uint256,address)": {
                "notice": "Withdraw LP tokens from MCV2."
              },
              "withdrawAndHarvest(uint256,uint256,address)": {
                "notice": "Withdraw LP tokens from MCV2 and harvest proceeds for transaction sender to `to`."
              }
            },
            "notice": "The (older) GoldMiner contract gives out a constant number of GOLN tokens per block. It is the only address with minting rights for GOLN. The idea for this GoldMiner V2 (MCV2) contract is therefore to be the owner of a dummy token that is deposited into the GoldMiner V1 (MCV1) contract. The allocation point for this pool on MCV1 is the total allocation point for all pools that receive double incentives.",
            "version": 1
          }
        },
        "IMigratorMiner": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "token",
                  "type": "address"
                }
              ],
              "name": "migrate",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "migrate(address)": "ce5494bb"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"migrate\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/GoldMinerV2.sol\":\"IMigratorMiner\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@boringcrypto/boring-solidity/contracts/BoringBatchable.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\r\\n// Audit on 5-Jan-2021 by Keno and BoringCrypto\\r\\n\\r\\n// P1 - P3: OK\\r\\npragma solidity 0.6.12;\\r\\npragma experimental ABIEncoderV2;\\r\\n// solhint-disable avoid-low-level-calls\\r\\n\\r\\nimport \\\"./libraries/BoringERC20.sol\\\";\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BaseBoringBatchable {\\r\\n    function _getRevertMsg(bytes memory _returnData) internal pure returns (string memory) {\\r\\n        // If the _res length is less than 68, then the transaction failed silently (without a revert message)\\r\\n        if (_returnData.length < 68) return \\\"Transaction reverted silently\\\";\\r\\n\\r\\n        assembly {\\r\\n            // Slice the sighash.\\r\\n            _returnData := add(_returnData, 0x04)\\r\\n        }\\r\\n        return abi.decode(_returnData, (string)); // All that remains is the revert string\\r\\n    }    \\r\\n    \\r\\n    // F3 - F9: OK\\r\\n    // F1: External is ok here because this is the batch function, adding it to a batch makes no sense\\r\\n    // F2: Calls in the batch may be payable, delegatecall operates in the same context, so each call in the batch has access to msg.value\\r\\n    // C1 - C21: OK\\r\\n    // C3: The length of the loop is fully under user control, so can't be exploited\\r\\n    // C7: Delegatecall is only used on the same contract, so it's safe\\r\\n    function batch(bytes[] calldata calls, bool revertOnFail) external payable returns(bool[] memory successes, bytes[] memory results) {\\r\\n        // Interactions\\r\\n        successes = new bool[](calls.length);\\r\\n        results = new bytes[](calls.length);\\r\\n        for (uint256 i = 0; i < calls.length; i++) {\\r\\n            (bool success, bytes memory result) = address(this).delegatecall(calls[i]);\\r\\n            require(success || !revertOnFail, _getRevertMsg(result));\\r\\n            successes[i] = success;\\r\\n            results[i] = result;\\r\\n        }\\r\\n    }\\r\\n}\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BoringBatchable is BaseBoringBatchable {\\r\\n    // F1 - F9: OK\\r\\n    // F6: Parameters can be used front-run the permit and the user's permit will fail (due to nonce or other revert)\\r\\n    //     if part of a batch this could be used to grief once as the second call would not need the permit\\r\\n    // C1 - C21: OK\\r\\n    function permitToken(IERC20 token, address from, address to, uint256 amount, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {\\r\\n        // Interactions\\r\\n        // X1 - X5\\r\\n        token.permit(from, to, amount, deadline, v, r, s);\\r\\n    }\\r\\n}\",\"keccak256\":\"0xe0b0316b015447ee28c6b7d96c4347b410a66e5d26e922ef3bcccc22f3b4d590\",\"license\":\"UNLICENSED\"},\"@boringcrypto/boring-solidity/contracts/BoringOwnable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\n// Audit on 5-Jan-2021 by Keno and BoringCrypto\\r\\n\\r\\n// P1 - P3: OK\\r\\npragma solidity 0.6.12;\\r\\n\\r\\n// Source: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol + Claimable.sol\\r\\n// Edited by BoringCrypto\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BoringOwnableData {\\r\\n    // V1 - V5: OK\\r\\n    address public owner;\\r\\n    // V1 - V5: OK\\r\\n    address public pendingOwner;\\r\\n}\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BoringOwnable is BoringOwnableData {\\r\\n    // E1: OK\\r\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\r\\n\\r\\n    constructor () public {\\r\\n        owner = msg.sender;\\r\\n        emit OwnershipTransferred(address(0), msg.sender);\\r\\n    }\\r\\n\\r\\n    // F1 - F9: OK\\r\\n    // C1 - C21: OK\\r\\n    function transferOwnership(address newOwner, bool direct, bool renounce) public onlyOwner {\\r\\n        if (direct) {\\r\\n            // Checks\\r\\n            require(newOwner != address(0) || renounce, \\\"Ownable: zero address\\\");\\r\\n\\r\\n            // Effects\\r\\n            emit OwnershipTransferred(owner, newOwner);\\r\\n            owner = newOwner;\\r\\n            pendingOwner = address(0);\\r\\n        } else {\\r\\n            // Effects\\r\\n            pendingOwner = newOwner;\\r\\n        }\\r\\n    }\\r\\n\\r\\n    // F1 - F9: OK\\r\\n    // C1 - C21: OK\\r\\n    function claimOwnership() public {\\r\\n        address _pendingOwner = pendingOwner;\\r\\n        \\r\\n        // Checks\\r\\n        require(msg.sender == _pendingOwner, \\\"Ownable: caller != pending owner\\\");\\r\\n\\r\\n        // Effects\\r\\n        emit OwnershipTransferred(owner, _pendingOwner);\\r\\n        owner = _pendingOwner;\\r\\n        pendingOwner = address(0);\\r\\n    }\\r\\n\\r\\n    // M1 - M5: OK\\r\\n    // C1 - C21: OK\\r\\n    modifier onlyOwner() {\\r\\n        require(msg.sender == owner, \\\"Ownable: caller is not the owner\\\");\\r\\n        _;\\r\\n    }\\r\\n}\",\"keccak256\":\"0xfafb586b248c1c697227f5745397562cfe5be2f04e19fb80fc79fc94e3afaba1\",\"license\":\"MIT\"},\"@boringcrypto/boring-solidity/contracts/interfaces/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity 0.6.12;\\r\\n\\r\\ninterface IERC20 {\\r\\n    function totalSupply() external view returns (uint256);\\r\\n    function balanceOf(address account) external view returns (uint256);\\r\\n    function allowance(address owner, address spender) external view returns (uint256);\\r\\n    function approve(address spender, uint256 amount) external returns (bool);\\r\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\r\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\r\\n\\r\\n    // EIP 2612\\r\\n    function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;\\r\\n}\",\"keccak256\":\"0x8004f86e4536cca55b8eeb2621fe18e1ee57d779396ddef50bce5bf70fb59867\",\"license\":\"MIT\"},\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\r\\npragma solidity 0.6.12;\\r\\n\\r\\nimport \\\"../interfaces/IERC20.sol\\\";\\r\\n\\r\\nlibrary BoringERC20 {\\r\\n    function safeSymbol(IERC20 token) internal view returns(string memory) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x95d89b41));\\r\\n        return success && data.length > 0 ? abi.decode(data, (string)) : \\\"???\\\";\\r\\n    }\\r\\n\\r\\n    function safeName(IERC20 token) internal view returns(string memory) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x06fdde03));\\r\\n        return success && data.length > 0 ? abi.decode(data, (string)) : \\\"???\\\";\\r\\n    }\\r\\n\\r\\n    function safeDecimals(IERC20 token) internal view returns (uint8) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x313ce567));\\r\\n        return success && data.length == 32 ? abi.decode(data, (uint8)) : 18;\\r\\n    }\\r\\n\\r\\n    function safeTransfer(IERC20 token, address to, uint256 amount) internal {\\r\\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0xa9059cbb, to, amount));\\r\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"BoringERC20: Transfer failed\\\");\\r\\n    }\\r\\n\\r\\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 amount) internal {\\r\\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0x23b872dd, from, to, amount));\\r\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"BoringERC20: TransferFrom failed\\\");\\r\\n    }\\r\\n}\",\"keccak256\":\"0x69f1ccf716991e5d6d64dc0e3bc3828fd1990bc18400d680b1aa1960675daaaa\",\"license\":\"UNLICENSED\"},\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity 0.6.12;\\r\\n// a library for performing overflow-safe math, updated with awesomeness from of DappHub (https://github.com/dapphub/ds-math)\\r\\nlibrary BoringMath {\\r\\n    function add(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {require(b == 0 || (c = a * b)/b == a, \\\"BoringMath: Mul Overflow\\\");}\\r\\n    function to128(uint256 a) internal pure returns (uint128 c) {\\r\\n        require(a <= uint128(-1), \\\"BoringMath: uint128 Overflow\\\");\\r\\n        c = uint128(a);\\r\\n    }\\r\\n    function to64(uint256 a) internal pure returns (uint64 c) {\\r\\n        require(a <= uint64(-1), \\\"BoringMath: uint64 Overflow\\\");\\r\\n        c = uint64(a);\\r\\n    }\\r\\n    function to32(uint256 a) internal pure returns (uint32 c) {\\r\\n        require(a <= uint32(-1), \\\"BoringMath: uint32 Overflow\\\");\\r\\n        c = uint32(a);\\r\\n    }\\r\\n}\\r\\n\\r\\nlibrary BoringMath128 {\\r\\n    function add(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\\r\\n\\r\\nlibrary BoringMath64 {\\r\\n    function add(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\\r\\n\\r\\nlibrary BoringMath32 {\\r\\n    function add(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\",\"keccak256\":\"0x2d0e99483c5618251d4b52e8551918253bf044c63e0d09a2f1f652671f9ff762\",\"license\":\"MIT\"},\"contracts/GoldMinerV2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.6.12;\\npragma experimental ABIEncoderV2;\\n\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\\\";\\nimport \\\"@boringcrypto/boring-solidity/contracts/BoringBatchable.sol\\\";\\nimport \\\"@boringcrypto/boring-solidity/contracts/BoringOwnable.sol\\\";\\nimport \\\"./libraries/SignedSafeMath.sol\\\";\\nimport \\\"./interfaces/IRewarder.sol\\\";\\nimport \\\"./interfaces/IGoldMiner.sol\\\";\\n\\ninterface IMigratorMiner {\\n    // Take the current LP token address and return the new LP token address.\\n    // Migrator should have full access to the caller's LP token.\\n    function migrate(IERC20 token) external returns (IERC20);\\n}\\n\\n/// @notice The (older) GoldMiner contract gives out a constant number of GOLN tokens per block.\\n/// It is the only address with minting rights for GOLN.\\n/// The idea for this GoldMiner V2 (MCV2) contract is therefore to be the owner of a dummy token\\n/// that is deposited into the GoldMiner V1 (MCV1) contract.\\n/// The allocation point for this pool on MCV1 is the total allocation point for all pools that receive double incentives.\\ncontract GoldMinerV2 is BoringOwnable, BoringBatchable {\\n    using BoringMath for uint256;\\n    using BoringMath128 for uint128;\\n    using BoringERC20 for IERC20;\\n    using SignedSafeMath for int256;\\n\\n    /// @notice Info of each MCV2 user.\\n    /// `amount` LP token amount the user has provided.\\n    /// `rewardDebt` The amount of GOLN entitled to the user.\\n    struct UserInfo {\\n        uint256 amount;\\n        int256 rewardDebt;\\n    }\\n\\n    /// @notice Info of each MCV2 pool.\\n    /// `allocPoint` The amount of allocation points assigned to the pool.\\n    /// Also known as the amount of GOLN to distribute per block.\\n    struct PoolInfo {\\n        uint128 accGoldNuggetPerShare;\\n        uint64 lastRewardBlock;\\n        uint64 allocPoint;\\n    }\\n\\n    /// @notice Address of MCV1 contract.\\n    IGoldMiner public immutable GOLD_MINER;\\n    /// @notice Address of GOLN contract.\\n    IERC20 public immutable GOLN;\\n    /// @notice The index of MCV2 master pool in MCV1.\\n    uint256 public immutable GOLD_PID;\\n    // @notice The migrator contract. It has a lot of power. Can only be set through governance (owner).\\n    IMigratorMiner public migrator;\\n\\n    /// @notice Info of each MCV2 pool.\\n    PoolInfo[] public poolInfo;\\n    /// @notice Address of the LP token for each MCV2 pool.\\n    IERC20[] public lpToken;\\n    /// @notice Address of each `IRewarder` contract in MCV2.\\n    IRewarder[] public rewarder;\\n\\n    /// @notice Info of each user that stakes LP tokens.\\n    mapping (uint256 => mapping (address => UserInfo)) public userInfo;\\n    /// @dev Total allocation points. Must be the sum of all allocation points in all pools.\\n    uint256 public totalAllocPoint;\\n\\n    uint256 private constant GOLDMINER_GOLN_PER_BLOCK = 1e20;\\n    uint256 private constant ACC_GOLN_PRECISION = 1e12;\\n\\n    event Deposit(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\\n    event Withdraw(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\\n    event EmergencyWithdraw(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\\n    event Harvest(address indexed user, uint256 indexed pid, uint256 amount);\\n    event LogPoolAddition(uint256 indexed pid, uint256 allocPoint, IERC20 indexed lpToken, IRewarder indexed rewarder);\\n    event LogSetPool(uint256 indexed pid, uint256 allocPoint, IRewarder indexed rewarder, bool overwrite);\\n    event LogUpdatePool(uint256 indexed pid, uint64 lastRewardBlock, uint256 lpSupply, uint256 accGoldNuggetPerShare);\\n    event LogInit();\\n\\n    /// @param _GOLD_MINER The LuckySwap MCV1 contract address.\\n    /// @param _goldnugget The GOLN token contract address.\\n    /// @param _GOLD_PID The pool ID of the dummy token on the base MCV1 contract.\\n    constructor(IGoldMiner _GOLD_MINER, IERC20 _goldnugget, uint256 _GOLD_PID) public {\\n        GOLD_MINER = _GOLD_MINER;\\n        GOLN = _goldnugget;\\n        GOLD_PID = _GOLD_PID;\\n    }\\n\\n    /// @notice Deposits a dummy token to `GOLD_MINER` MCV1. This is required because MCV1 holds the minting rights for GOLN.\\n    /// Any balance of transaction sender in `dummyToken` is transferred.\\n    /// The allocation point for the pool on MCV1 is the total allocation point for all pools that receive double incentives.\\n    /// @param dummyToken The address of the ERC-20 token to deposit into MCV1.\\n    function init(IERC20 dummyToken) external {\\n        uint256 balance = dummyToken.balanceOf(msg.sender);\\n        require(balance != 0, \\\"GoldMinerV2: Balance must exceed 0\\\");\\n        dummyToken.safeTransferFrom(msg.sender, address(this), balance);\\n        dummyToken.approve(address(GOLD_MINER), balance);\\n        GOLD_MINER.deposit(GOLD_PID, balance);\\n        emit LogInit();\\n    }\\n\\n    /// @notice Returns the number of MCV2 pools.\\n    function poolLength() public view returns (uint256 pools) {\\n        pools = poolInfo.length;\\n    }\\n\\n    /// @notice Add a new LP to the pool. Can only be called by the owner.\\n    /// DO NOT add the same LP token more than once. Rewards will be messed up if you do.\\n    /// @param allocPoint AP of the new pool.\\n    /// @param _lpToken Address of the LP ERC-20 token.\\n    /// @param _rewarder Address of the rewarder delegate.\\n    function add(uint256 allocPoint, IERC20 _lpToken, IRewarder _rewarder) public onlyOwner {\\n        uint256 lastRewardBlock = block.number;\\n        totalAllocPoint = totalAllocPoint.add(allocPoint);\\n        lpToken.push(_lpToken);\\n        rewarder.push(_rewarder);\\n\\n        poolInfo.push(PoolInfo({\\n            allocPoint: allocPoint.to64(),\\n            lastRewardBlock: lastRewardBlock.to64(),\\n            accGoldNuggetPerShare: 0\\n        }));\\n        emit LogPoolAddition(lpToken.length.sub(1), allocPoint, _lpToken, _rewarder);\\n    }\\n\\n    /// @notice Update the given pool's GOLN allocation point and `IRewarder` contract. Can only be called by the owner.\\n    /// @param _pid The index of the pool. See `poolInfo`.\\n    /// @param _allocPoint New AP of the pool.\\n    /// @param _rewarder Address of the rewarder delegate.\\n    /// @param overwrite True if _rewarder should be `set`. Otherwise `_rewarder` is ignored.\\n    function set(uint256 _pid, uint256 _allocPoint, IRewarder _rewarder, bool overwrite) public onlyOwner {\\n        totalAllocPoint = totalAllocPoint.sub(poolInfo[_pid].allocPoint).add(_allocPoint);\\n        poolInfo[_pid].allocPoint = _allocPoint.to64();\\n        if (overwrite) { rewarder[_pid] = _rewarder; }\\n        emit LogSetPool(_pid, _allocPoint, overwrite ? _rewarder : rewarder[_pid], overwrite);\\n    }\\n\\n    /// @notice Set the `migrator` contract. Can only be called by the owner.\\n    /// @param _migrator The contract address to set.\\n    function setMigrator(IMigratorMiner _migrator) public onlyOwner {\\n        migrator = _migrator;\\n    }\\n\\n    /// @notice Migrate LP token to another LP contract through the `migrator` contract.\\n    /// @param _pid The index of the pool. See `poolInfo`.\\n    function migrate(uint256 _pid) public {\\n        require(address(migrator) != address(0), \\\"GoldMinerV2: no migrator set\\\");\\n        IERC20 _lpToken = lpToken[_pid];\\n        uint256 bal = _lpToken.balanceOf(address(this));\\n        _lpToken.approve(address(migrator), bal);\\n        IERC20 newLpToken = migrator.migrate(_lpToken);\\n        require(bal == newLpToken.balanceOf(address(this)), \\\"GoldMinerV2: migrated balance must match\\\");\\n        lpToken[_pid] = newLpToken;\\n    }\\n\\n    /// @notice View function to see pending GOLN on frontend.\\n    /// @param _pid The index of the pool. See `poolInfo`.\\n    /// @param _user Address of user.\\n    /// @return pending GOLN reward for a given user.\\n    function pendingGoldNugget(uint256 _pid, address _user) external view returns (uint256 pending) {\\n        PoolInfo memory pool = poolInfo[_pid];\\n        UserInfo storage user = userInfo[_pid][_user];\\n        uint256 accGoldNuggetPerShare = pool.accGoldNuggetPerShare;\\n        uint256 lpSupply = lpToken[_pid].balanceOf(address(this));\\n        if (block.number > pool.lastRewardBlock && lpSupply != 0) {\\n            uint256 blocks = block.number.sub(pool.lastRewardBlock);\\n            uint256 goldnuggetReward = blocks.mul(goldnuggetPerBlock()).mul(pool.allocPoint) / totalAllocPoint;\\n            accGoldNuggetPerShare = accGoldNuggetPerShare.add(goldnuggetReward.mul(ACC_GOLN_PRECISION) / lpSupply);\\n        }\\n        pending = int256(user.amount.mul(accGoldNuggetPerShare) / ACC_GOLN_PRECISION).sub(user.rewardDebt).toUInt256();\\n    }\\n\\n    /// @notice Update reward variables for all pools. Be careful of gas spending!\\n    /// @param pids Pool IDs of all to be updated. Make sure to update all active pools.\\n    function massUpdatePools(uint256[] calldata pids) external {\\n        uint256 len = pids.length;\\n        for (uint256 i = 0; i < len; ++i) {\\n            updatePool(pids[i]);\\n        }\\n    }\\n\\n    /// @notice Calculates and returns the `amount` of GOLN per block.\\n    function goldnuggetPerBlock() public view returns (uint256 amount) {\\n        amount = uint256(GOLDMINER_GOLN_PER_BLOCK)\\n            .mul(GOLD_MINER.poolInfo(GOLD_PID).allocPoint) / GOLD_MINER.totalAllocPoint();\\n    }\\n\\n    /// @notice Update reward variables of the given pool.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @return pool Returns the pool that was updated.\\n    function updatePool(uint256 pid) public returns (PoolInfo memory pool) {\\n        pool = poolInfo[pid];\\n        if (block.number > pool.lastRewardBlock) {\\n            uint256 lpSupply = lpToken[pid].balanceOf(address(this));\\n            if (lpSupply > 0) {\\n                uint256 blocks = block.number.sub(pool.lastRewardBlock);\\n                uint256 goldnuggetReward = blocks.mul(goldnuggetPerBlock()).mul(pool.allocPoint) / totalAllocPoint;\\n                pool.accGoldNuggetPerShare = pool.accGoldNuggetPerShare.add((goldnuggetReward.mul(ACC_GOLN_PRECISION) / lpSupply).to128());\\n            }\\n            pool.lastRewardBlock = block.number.to64();\\n            poolInfo[pid] = pool;\\n            emit LogUpdatePool(pid, pool.lastRewardBlock, lpSupply, pool.accGoldNuggetPerShare);\\n        }\\n    }\\n\\n    /// @notice Deposit LP tokens to MCV2 for GOLN allocation.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param amount LP token amount to deposit.\\n    /// @param to The receiver of `amount` deposit benefit.\\n    function deposit(uint256 pid, uint256 amount, address to) public {\\n        PoolInfo memory pool = updatePool(pid);\\n        UserInfo storage user = userInfo[pid][to];\\n\\n        // Effects\\n        user.amount = user.amount.add(amount);\\n        user.rewardDebt = user.rewardDebt.add(int256(amount.mul(pool.accGoldNuggetPerShare) / ACC_GOLN_PRECISION));\\n\\n        // Interactions\\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onGoldNuggetReward(pid, to, to, 0, user.amount);\\n        }\\n\\n        lpToken[pid].safeTransferFrom(msg.sender, address(this), amount);\\n\\n        emit Deposit(msg.sender, pid, amount, to);\\n    }\\n\\n    /// @notice Withdraw LP tokens from MCV2.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param amount LP token amount to withdraw.\\n    /// @param to Receiver of the LP tokens.\\n    function withdraw(uint256 pid, uint256 amount, address to) public {\\n        PoolInfo memory pool = updatePool(pid);\\n        UserInfo storage user = userInfo[pid][msg.sender];\\n\\n        // Effects\\n        user.rewardDebt = user.rewardDebt.sub(int256(amount.mul(pool.accGoldNuggetPerShare) / ACC_GOLN_PRECISION));\\n        user.amount = user.amount.sub(amount);\\n\\n        // Interactions\\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onGoldNuggetReward(pid, msg.sender, to, 0, user.amount);\\n        }\\n\\n        lpToken[pid].safeTransfer(to, amount);\\n\\n        emit Withdraw(msg.sender, pid, amount, to);\\n    }\\n\\n    /// @notice Harvest proceeds for transaction sender to `to`.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param to Receiver of GOLN rewards.\\n    function harvest(uint256 pid, address to) public {\\n        PoolInfo memory pool = updatePool(pid);\\n        UserInfo storage user = userInfo[pid][msg.sender];\\n        int256 accumulatedGoldNugget = int256(user.amount.mul(pool.accGoldNuggetPerShare) / ACC_GOLN_PRECISION);\\n        uint256 _pendingGoldNugget = accumulatedGoldNugget.sub(user.rewardDebt).toUInt256();\\n\\n        // Effects\\n        user.rewardDebt = accumulatedGoldNugget;\\n\\n        // Interactions\\n        if (_pendingGoldNugget != 0) {\\n            GOLN.safeTransfer(to, _pendingGoldNugget);\\n        }\\n\\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onGoldNuggetReward( pid, msg.sender, to, _pendingGoldNugget, user.amount);\\n        }\\n\\n        emit Harvest(msg.sender, pid, _pendingGoldNugget);\\n    }\\n\\n    /// @notice Withdraw LP tokens from MCV2 and harvest proceeds for transaction sender to `to`.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param amount LP token amount to withdraw.\\n    /// @param to Receiver of the LP tokens and GOLN rewards.\\n    function withdrawAndHarvest(uint256 pid, uint256 amount, address to) public {\\n        PoolInfo memory pool = updatePool(pid);\\n        UserInfo storage user = userInfo[pid][msg.sender];\\n        int256 accumulatedGoldNugget = int256(user.amount.mul(pool.accGoldNuggetPerShare) / ACC_GOLN_PRECISION);\\n        uint256 _pendingGoldNugget = accumulatedGoldNugget.sub(user.rewardDebt).toUInt256();\\n\\n        // Effects\\n        user.rewardDebt = accumulatedGoldNugget.sub(int256(amount.mul(pool.accGoldNuggetPerShare) / ACC_GOLN_PRECISION));\\n        user.amount = user.amount.sub(amount);\\n\\n        // Interactions\\n        GOLN.safeTransfer(to, _pendingGoldNugget);\\n\\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onGoldNuggetReward(pid, msg.sender, to, _pendingGoldNugget, user.amount);\\n        }\\n\\n        lpToken[pid].safeTransfer(to, amount);\\n\\n        emit Withdraw(msg.sender, pid, amount, to);\\n        emit Harvest(msg.sender, pid, _pendingGoldNugget);\\n    }\\n\\n    /// @notice Harvests GOLN from `GOLD_MINER` MCV1 and pool `GOLD_PID` to this MCV2 contract.\\n    function harvestFromGoldMiner() public {\\n        GOLD_MINER.deposit(GOLD_PID, 0);\\n    }\\n\\n    /// @notice Withdraw without caring about rewards. EMERGENCY ONLY.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param to Receiver of the LP tokens.\\n    function emergencyWithdraw(uint256 pid, address to) public {\\n        UserInfo storage user = userInfo[pid][msg.sender];\\n        uint256 amount = user.amount;\\n        user.amount = 0;\\n        user.rewardDebt = 0;\\n\\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onGoldNuggetReward(pid, msg.sender, to, 0, 0);\\n        }\\n\\n        // Note: transfer can fail or succeed if `amount` is zero.\\n        lpToken[pid].safeTransfer(to, amount);\\n        emit EmergencyWithdraw(msg.sender, pid, amount, to);\\n    }\\n}\\n\",\"keccak256\":\"0xfc23639df5c42593066a6bce649c0e034e5f35289c903ad4d854798807c4914a\",\"license\":\"MIT\"},\"contracts/interfaces/IGoldMiner.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity 0.6.12;\\npragma experimental ABIEncoderV2;\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\\\";\\n\\ninterface IGoldMiner {\\n    using BoringERC20 for IERC20;\\n    struct UserInfo {\\n        uint256 amount;     // How many LP tokens the user has provided.\\n        uint256 rewardDebt; // Reward debt. See explanation below.\\n    }\\n\\n    struct PoolInfo {\\n        IERC20 lpToken;           // Address of LP token contract.\\n        uint256 allocPoint;       // How many allocation points assigned to this pool. GOLN to distribute per block.\\n        uint256 lastRewardBlock;  // Last block number that GOLN distribution occurs.\\n        uint256 accGoldNuggetPerShare; // Accumulated GOLN per share, times 1e12. See below.\\n    }\\n\\n    function poolInfo(uint256 pid) external view returns (IGoldMiner.PoolInfo memory);\\n    function totalAllocPoint() external view returns (uint256);\\n    function deposit(uint256 _pid, uint256 _amount) external;\\n}\\n\",\"keccak256\":\"0xe6ba2f319be5134738042eb6e1e104324752729a4582177ef88350856b4a7280\",\"license\":\"MIT\"},\"contracts/interfaces/IRewarder.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.6.12;\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\\\";\\ninterface IRewarder {\\n    using BoringERC20 for IERC20;\\n    function onGoldNuggetReward(uint256 pid, address user, address recipient, uint256 goldnuggetAmount, uint256 newLpAmount) external;\\n    function pendingTokens(uint256 pid, address user, uint256 goldnuggetAmount) external view returns (IERC20[] memory, uint256[] memory);\\n}\\n\",\"keccak256\":\"0x92579e172bd0f29fd768cf7c6ccd1a8a74204d8bac7d7ae95538370d1265ac5c\",\"license\":\"MIT\"},\"contracts/libraries/SignedSafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.6.12;\\n\\nlibrary SignedSafeMath {\\n    int256 constant private _INT256_MIN = -2**255;\\n\\n    /**\\n     * @dev Returns the multiplication of two signed integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `*` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Multiplication cannot overflow.\\n     */\\n    function mul(int256 a, int256 b) internal pure returns (int256) {\\n        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\\n        // benefit is lost if 'b' is also tested.\\n        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\\n        if (a == 0) {\\n            return 0;\\n        }\\n\\n        require(!(a == -1 && b == _INT256_MIN), \\\"SignedSafeMath: multiplication overflow\\\");\\n\\n        int256 c = a * b;\\n        require(c / a == b, \\\"SignedSafeMath: multiplication overflow\\\");\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Returns the integer division of two signed integers. Reverts on\\n     * division by zero. The result is rounded towards zero.\\n     *\\n     * Counterpart to Solidity's `/` operator. Note: this function uses a\\n     * `revert` opcode (which leaves remaining gas untouched) while Solidity\\n     * uses an invalid opcode to revert (consuming all remaining gas).\\n     *\\n     * Requirements:\\n     *\\n     * - The divisor cannot be zero.\\n     */\\n    function div(int256 a, int256 b) internal pure returns (int256) {\\n        require(b != 0, \\\"SignedSafeMath: division by zero\\\");\\n        require(!(b == -1 && a == _INT256_MIN), \\\"SignedSafeMath: division overflow\\\");\\n\\n        int256 c = a / b;\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Returns the subtraction of two signed integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `-` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Subtraction cannot overflow.\\n     */\\n    function sub(int256 a, int256 b) internal pure returns (int256) {\\n        int256 c = a - b;\\n        require((b >= 0 && c <= a) || (b < 0 && c > a), \\\"SignedSafeMath: subtraction overflow\\\");\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Returns the addition of two signed integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `+` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Addition cannot overflow.\\n     */\\n    function add(int256 a, int256 b) internal pure returns (int256) {\\n        int256 c = a + b;\\n        require((b >= 0 && c >= a) || (b < 0 && c < a), \\\"SignedSafeMath: addition overflow\\\");\\n\\n        return c;\\n    }\\n\\n    function toUInt256(int256 a) internal pure returns (uint256) {\\n        require(a >= 0, \\\"Integer < 0\\\");\\n        return uint256(a);\\n    }\\n}\",\"keccak256\":\"0x4991beb21b224dfcdc3d251e0a60fdc304d4f6b699b2c35d08f3974e5b84c86a\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/MiniMinerV2.sol": {
        "IMigratorMiner": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "token",
                  "type": "address"
                }
              ],
              "name": "migrate",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "migrate(address)": "ce5494bb"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"migrate\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/MiniMinerV2.sol\":\"IMigratorMiner\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@boringcrypto/boring-solidity/contracts/BoringBatchable.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\r\\n// Audit on 5-Jan-2021 by Keno and BoringCrypto\\r\\n\\r\\n// P1 - P3: OK\\r\\npragma solidity 0.6.12;\\r\\npragma experimental ABIEncoderV2;\\r\\n// solhint-disable avoid-low-level-calls\\r\\n\\r\\nimport \\\"./libraries/BoringERC20.sol\\\";\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BaseBoringBatchable {\\r\\n    function _getRevertMsg(bytes memory _returnData) internal pure returns (string memory) {\\r\\n        // If the _res length is less than 68, then the transaction failed silently (without a revert message)\\r\\n        if (_returnData.length < 68) return \\\"Transaction reverted silently\\\";\\r\\n\\r\\n        assembly {\\r\\n            // Slice the sighash.\\r\\n            _returnData := add(_returnData, 0x04)\\r\\n        }\\r\\n        return abi.decode(_returnData, (string)); // All that remains is the revert string\\r\\n    }    \\r\\n    \\r\\n    // F3 - F9: OK\\r\\n    // F1: External is ok here because this is the batch function, adding it to a batch makes no sense\\r\\n    // F2: Calls in the batch may be payable, delegatecall operates in the same context, so each call in the batch has access to msg.value\\r\\n    // C1 - C21: OK\\r\\n    // C3: The length of the loop is fully under user control, so can't be exploited\\r\\n    // C7: Delegatecall is only used on the same contract, so it's safe\\r\\n    function batch(bytes[] calldata calls, bool revertOnFail) external payable returns(bool[] memory successes, bytes[] memory results) {\\r\\n        // Interactions\\r\\n        successes = new bool[](calls.length);\\r\\n        results = new bytes[](calls.length);\\r\\n        for (uint256 i = 0; i < calls.length; i++) {\\r\\n            (bool success, bytes memory result) = address(this).delegatecall(calls[i]);\\r\\n            require(success || !revertOnFail, _getRevertMsg(result));\\r\\n            successes[i] = success;\\r\\n            results[i] = result;\\r\\n        }\\r\\n    }\\r\\n}\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BoringBatchable is BaseBoringBatchable {\\r\\n    // F1 - F9: OK\\r\\n    // F6: Parameters can be used front-run the permit and the user's permit will fail (due to nonce or other revert)\\r\\n    //     if part of a batch this could be used to grief once as the second call would not need the permit\\r\\n    // C1 - C21: OK\\r\\n    function permitToken(IERC20 token, address from, address to, uint256 amount, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {\\r\\n        // Interactions\\r\\n        // X1 - X5\\r\\n        token.permit(from, to, amount, deadline, v, r, s);\\r\\n    }\\r\\n}\",\"keccak256\":\"0xe0b0316b015447ee28c6b7d96c4347b410a66e5d26e922ef3bcccc22f3b4d590\",\"license\":\"UNLICENSED\"},\"@boringcrypto/boring-solidity/contracts/BoringOwnable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\n// Audit on 5-Jan-2021 by Keno and BoringCrypto\\r\\n\\r\\n// P1 - P3: OK\\r\\npragma solidity 0.6.12;\\r\\n\\r\\n// Source: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol + Claimable.sol\\r\\n// Edited by BoringCrypto\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BoringOwnableData {\\r\\n    // V1 - V5: OK\\r\\n    address public owner;\\r\\n    // V1 - V5: OK\\r\\n    address public pendingOwner;\\r\\n}\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BoringOwnable is BoringOwnableData {\\r\\n    // E1: OK\\r\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\r\\n\\r\\n    constructor () public {\\r\\n        owner = msg.sender;\\r\\n        emit OwnershipTransferred(address(0), msg.sender);\\r\\n    }\\r\\n\\r\\n    // F1 - F9: OK\\r\\n    // C1 - C21: OK\\r\\n    function transferOwnership(address newOwner, bool direct, bool renounce) public onlyOwner {\\r\\n        if (direct) {\\r\\n            // Checks\\r\\n            require(newOwner != address(0) || renounce, \\\"Ownable: zero address\\\");\\r\\n\\r\\n            // Effects\\r\\n            emit OwnershipTransferred(owner, newOwner);\\r\\n            owner = newOwner;\\r\\n            pendingOwner = address(0);\\r\\n        } else {\\r\\n            // Effects\\r\\n            pendingOwner = newOwner;\\r\\n        }\\r\\n    }\\r\\n\\r\\n    // F1 - F9: OK\\r\\n    // C1 - C21: OK\\r\\n    function claimOwnership() public {\\r\\n        address _pendingOwner = pendingOwner;\\r\\n        \\r\\n        // Checks\\r\\n        require(msg.sender == _pendingOwner, \\\"Ownable: caller != pending owner\\\");\\r\\n\\r\\n        // Effects\\r\\n        emit OwnershipTransferred(owner, _pendingOwner);\\r\\n        owner = _pendingOwner;\\r\\n        pendingOwner = address(0);\\r\\n    }\\r\\n\\r\\n    // M1 - M5: OK\\r\\n    // C1 - C21: OK\\r\\n    modifier onlyOwner() {\\r\\n        require(msg.sender == owner, \\\"Ownable: caller is not the owner\\\");\\r\\n        _;\\r\\n    }\\r\\n}\",\"keccak256\":\"0xfafb586b248c1c697227f5745397562cfe5be2f04e19fb80fc79fc94e3afaba1\",\"license\":\"MIT\"},\"@boringcrypto/boring-solidity/contracts/interfaces/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity 0.6.12;\\r\\n\\r\\ninterface IERC20 {\\r\\n    function totalSupply() external view returns (uint256);\\r\\n    function balanceOf(address account) external view returns (uint256);\\r\\n    function allowance(address owner, address spender) external view returns (uint256);\\r\\n    function approve(address spender, uint256 amount) external returns (bool);\\r\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\r\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\r\\n\\r\\n    // EIP 2612\\r\\n    function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;\\r\\n}\",\"keccak256\":\"0x8004f86e4536cca55b8eeb2621fe18e1ee57d779396ddef50bce5bf70fb59867\",\"license\":\"MIT\"},\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\r\\npragma solidity 0.6.12;\\r\\n\\r\\nimport \\\"../interfaces/IERC20.sol\\\";\\r\\n\\r\\nlibrary BoringERC20 {\\r\\n    function safeSymbol(IERC20 token) internal view returns(string memory) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x95d89b41));\\r\\n        return success && data.length > 0 ? abi.decode(data, (string)) : \\\"???\\\";\\r\\n    }\\r\\n\\r\\n    function safeName(IERC20 token) internal view returns(string memory) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x06fdde03));\\r\\n        return success && data.length > 0 ? abi.decode(data, (string)) : \\\"???\\\";\\r\\n    }\\r\\n\\r\\n    function safeDecimals(IERC20 token) internal view returns (uint8) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x313ce567));\\r\\n        return success && data.length == 32 ? abi.decode(data, (uint8)) : 18;\\r\\n    }\\r\\n\\r\\n    function safeTransfer(IERC20 token, address to, uint256 amount) internal {\\r\\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0xa9059cbb, to, amount));\\r\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"BoringERC20: Transfer failed\\\");\\r\\n    }\\r\\n\\r\\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 amount) internal {\\r\\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0x23b872dd, from, to, amount));\\r\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"BoringERC20: TransferFrom failed\\\");\\r\\n    }\\r\\n}\",\"keccak256\":\"0x69f1ccf716991e5d6d64dc0e3bc3828fd1990bc18400d680b1aa1960675daaaa\",\"license\":\"UNLICENSED\"},\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity 0.6.12;\\r\\n// a library for performing overflow-safe math, updated with awesomeness from of DappHub (https://github.com/dapphub/ds-math)\\r\\nlibrary BoringMath {\\r\\n    function add(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {require(b == 0 || (c = a * b)/b == a, \\\"BoringMath: Mul Overflow\\\");}\\r\\n    function to128(uint256 a) internal pure returns (uint128 c) {\\r\\n        require(a <= uint128(-1), \\\"BoringMath: uint128 Overflow\\\");\\r\\n        c = uint128(a);\\r\\n    }\\r\\n    function to64(uint256 a) internal pure returns (uint64 c) {\\r\\n        require(a <= uint64(-1), \\\"BoringMath: uint64 Overflow\\\");\\r\\n        c = uint64(a);\\r\\n    }\\r\\n    function to32(uint256 a) internal pure returns (uint32 c) {\\r\\n        require(a <= uint32(-1), \\\"BoringMath: uint32 Overflow\\\");\\r\\n        c = uint32(a);\\r\\n    }\\r\\n}\\r\\n\\r\\nlibrary BoringMath128 {\\r\\n    function add(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\\r\\n\\r\\nlibrary BoringMath64 {\\r\\n    function add(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\\r\\n\\r\\nlibrary BoringMath32 {\\r\\n    function add(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\",\"keccak256\":\"0x2d0e99483c5618251d4b52e8551918253bf044c63e0d09a2f1f652671f9ff762\",\"license\":\"MIT\"},\"contracts/MiniMinerV2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.6.12;\\npragma experimental ABIEncoderV2;\\n\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\\\";\\nimport \\\"@boringcrypto/boring-solidity/contracts/BoringBatchable.sol\\\";\\nimport \\\"@boringcrypto/boring-solidity/contracts/BoringOwnable.sol\\\";\\nimport \\\"./libraries/SignedSafeMath.sol\\\";\\nimport \\\"./interfaces/IRewarder.sol\\\";\\nimport \\\"./interfaces/IGoldMiner.sol\\\";\\n\\ninterface IMigratorMiner {\\n    // Take the current LP token address and return the new LP token address.\\n    // Migrator should have full access to the caller's LP token.\\n    function migrate(IERC20 token) external returns (IERC20);\\n}\\n\\n/// @notice The (older) GoldMiner contract gives out a constant number of GOLN tokens per block.\\n/// It is the only address with minting rights for GOLN.\\n/// The idea for this GoldMiner V2 (MCV2) contract is therefore to be the owner of a dummy token\\n/// that is deposited into the GoldMiner V1 (MCV1) contract.\\n/// The allocation point for this pool on MCV1 is the total allocation point for all pools that receive double incentives.\\ncontract MiniMinerV2 is BoringOwnable, BoringBatchable {\\n    using BoringMath for uint256;\\n    using BoringMath128 for uint128;\\n    using BoringERC20 for IERC20;\\n    using SignedSafeMath for int256;\\n\\n    /// @notice Info of each MCV2 user.\\n    /// `amount` LP token amount the user has provided.\\n    /// `rewardDebt` The amount of GOLN entitled to the user.\\n    struct UserInfo {\\n        uint256 amount;\\n        int256 rewardDebt;\\n    }\\n\\n    /// @notice Info of each MCV2 pool.\\n    /// `allocPoint` The amount of allocation points assigned to the pool.\\n    /// Also known as the amount of GOLN to distribute per block.\\n    struct PoolInfo {\\n        uint128 accGoldNuggetPerShare;\\n        uint64 lastRewardTime;\\n        uint64 allocPoint;\\n    }\\n\\n    /// @notice Address of GOLN contract.\\n    IERC20 public immutable GOLN;\\n    // @notice The migrator contract. It has a lot of power. Can only be set through governance (owner).\\n    IMigratorMiner public migrator;\\n\\n    /// @notice Info of each MCV2 pool.\\n    PoolInfo[] public poolInfo;\\n    /// @notice Address of the LP token for each MCV2 pool.\\n    IERC20[] public lpToken;\\n    /// @notice Address of each `IRewarder` contract in MCV2.\\n    IRewarder[] public rewarder;\\n\\n    /// @notice Info of each user that stakes LP tokens.\\n    mapping (uint256 => mapping (address => UserInfo)) public userInfo;\\n    /// @dev Total allocation points. Must be the sum of all allocation points in all pools.\\n    uint256 public totalAllocPoint;\\n\\n    uint256 public goldnuggetPerSecond;\\n    uint256 private constant ACC_GOLN_PRECISION = 1e12;\\n\\n    event Deposit(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\\n    event Withdraw(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\\n    event EmergencyWithdraw(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\\n    event Harvest(address indexed user, uint256 indexed pid, uint256 amount);\\n    event LogPoolAddition(uint256 indexed pid, uint256 allocPoint, IERC20 indexed lpToken, IRewarder indexed rewarder);\\n    event LogSetPool(uint256 indexed pid, uint256 allocPoint, IRewarder indexed rewarder, bool overwrite);\\n    event LogUpdatePool(uint256 indexed pid, uint64 lastRewardTime, uint256 lpSupply, uint256 accGoldNuggetPerShare);\\n    event LogGoldNuggetPerSecond(uint256 goldnuggetPerSecond);\\n\\n    /// @param _goldnugget The GOLN token contract address.\\n    constructor(IERC20 _goldnugget) public {\\n        GOLN = _goldnugget;\\n    }\\n\\n    /// @notice Returns the number of MCV2 pools.\\n    function poolLength() public view returns (uint256 pools) {\\n        pools = poolInfo.length;\\n    }\\n\\n    /// @notice Add a new LP to the pool. Can only be called by the owner.\\n    /// DO NOT add the same LP token more than once. Rewards will be messed up if you do.\\n    /// @param allocPoint AP of the new pool.\\n    /// @param _lpToken Address of the LP ERC-20 token.\\n    /// @param _rewarder Address of the rewarder delegate.\\n    function add(uint256 allocPoint, IERC20 _lpToken, IRewarder _rewarder) public onlyOwner {\\n        totalAllocPoint = totalAllocPoint.add(allocPoint);\\n        lpToken.push(_lpToken);\\n        rewarder.push(_rewarder);\\n\\n        poolInfo.push(PoolInfo({\\n            allocPoint: allocPoint.to64(),\\n            lastRewardTime: block.timestamp.to64(),\\n            accGoldNuggetPerShare: 0\\n        }));\\n        emit LogPoolAddition(lpToken.length.sub(1), allocPoint, _lpToken, _rewarder);\\n    }\\n\\n    /// @notice Update the given pool's GOLN allocation point and `IRewarder` contract. Can only be called by the owner.\\n    /// @param _pid The index of the pool. See `poolInfo`.\\n    /// @param _allocPoint New AP of the pool.\\n    /// @param _rewarder Address of the rewarder delegate.\\n    /// @param overwrite True if _rewarder should be `set`. Otherwise `_rewarder` is ignored.\\n    function set(uint256 _pid, uint256 _allocPoint, IRewarder _rewarder, bool overwrite) public onlyOwner {\\n        totalAllocPoint = totalAllocPoint.sub(poolInfo[_pid].allocPoint).add(_allocPoint);\\n        poolInfo[_pid].allocPoint = _allocPoint.to64();\\n        if (overwrite) { rewarder[_pid] = _rewarder; }\\n        emit LogSetPool(_pid, _allocPoint, overwrite ? _rewarder : rewarder[_pid], overwrite);\\n    }\\n\\n    /// @notice Sets the goldnugget per second to be distributed. Can only be called by the owner.\\n    /// @param _goldnuggetPerSecond The amount of GoldNugget to be distributed per second.\\n    function setGoldNuggetPerSecond(uint256 _goldnuggetPerSecond) public onlyOwner {\\n        goldnuggetPerSecond = _goldnuggetPerSecond;\\n        emit LogGoldNuggetPerSecond(_goldnuggetPerSecond);\\n    }\\n\\n    /// @notice Set the `migrator` contract. Can only be called by the owner.\\n    /// @param _migrator The contract address to set.\\n    function setMigrator(IMigratorMiner _migrator) public onlyOwner {\\n        migrator = _migrator;\\n    }\\n\\n    /// @notice Migrate LP token to another LP contract through the `migrator` contract.\\n    /// @param _pid The index of the pool. See `poolInfo`.\\n    function migrate(uint256 _pid) public {\\n        require(address(migrator) != address(0), \\\"GoldMinerV2: no migrator set\\\");\\n        IERC20 _lpToken = lpToken[_pid];\\n        uint256 bal = _lpToken.balanceOf(address(this));\\n        _lpToken.approve(address(migrator), bal);\\n        IERC20 newLpToken = migrator.migrate(_lpToken);\\n        require(bal == newLpToken.balanceOf(address(this)), \\\"GoldMinerV2: migrated balance must match\\\");\\n        lpToken[_pid] = newLpToken;\\n    }\\n\\n    /// @notice View function to see pending GOLN on frontend.\\n    /// @param _pid The index of the pool. See `poolInfo`.\\n    /// @param _user Address of user.\\n    /// @return pending GOLN reward for a given user.\\n    function pendingGoldNugget(uint256 _pid, address _user) external view returns (uint256 pending) {\\n        PoolInfo memory pool = poolInfo[_pid];\\n        UserInfo storage user = userInfo[_pid][_user];\\n        uint256 accGoldNuggetPerShare = pool.accGoldNuggetPerShare;\\n        uint256 lpSupply = lpToken[_pid].balanceOf(address(this));\\n        if (block.timestamp > pool.lastRewardTime && lpSupply != 0) {\\n            uint256 time = block.timestamp.sub(pool.lastRewardTime);\\n            uint256 goldnuggetReward = time.mul(goldnuggetPerSecond).mul(pool.allocPoint) / totalAllocPoint;\\n            accGoldNuggetPerShare = accGoldNuggetPerShare.add(goldnuggetReward.mul(ACC_GOLN_PRECISION) / lpSupply);\\n        }\\n        pending = int256(user.amount.mul(accGoldNuggetPerShare) / ACC_GOLN_PRECISION).sub(user.rewardDebt).toUInt256();\\n    }\\n\\n    /// @notice Update reward variables for all pools. Be careful of gas spending!\\n    /// @param pids Pool IDs of all to be updated. Make sure to update all active pools.\\n    function massUpdatePools(uint256[] calldata pids) external {\\n        uint256 len = pids.length;\\n        for (uint256 i = 0; i < len; ++i) {\\n            updatePool(pids[i]);\\n        }\\n    }\\n\\n    /// @notice Update reward variables of the given pool.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @return pool Returns the pool that was updated.\\n    function updatePool(uint256 pid) public returns (PoolInfo memory pool) {\\n        pool = poolInfo[pid];\\n        if (block.timestamp > pool.lastRewardTime) {\\n            uint256 lpSupply = lpToken[pid].balanceOf(address(this));\\n            if (lpSupply > 0) {\\n                uint256 time = block.timestamp.sub(pool.lastRewardTime);\\n                uint256 goldnuggetReward = time.mul(goldnuggetPerSecond).mul(pool.allocPoint) / totalAllocPoint;\\n                pool.accGoldNuggetPerShare = pool.accGoldNuggetPerShare.add((goldnuggetReward.mul(ACC_GOLN_PRECISION) / lpSupply).to128());\\n            }\\n            pool.lastRewardTime = block.timestamp.to64();\\n            poolInfo[pid] = pool;\\n            emit LogUpdatePool(pid, pool.lastRewardTime, lpSupply, pool.accGoldNuggetPerShare);\\n        }\\n    }\\n\\n    /// @notice Deposit LP tokens to MCV2 for GOLN allocation.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param amount LP token amount to deposit.\\n    /// @param to The receiver of `amount` deposit benefit.\\n    function deposit(uint256 pid, uint256 amount, address to) public {\\n        PoolInfo memory pool = updatePool(pid);\\n        UserInfo storage user = userInfo[pid][to];\\n\\n        // Effects\\n        user.amount = user.amount.add(amount);\\n        user.rewardDebt = user.rewardDebt.add(int256(amount.mul(pool.accGoldNuggetPerShare) / ACC_GOLN_PRECISION));\\n\\n        // Interactions\\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onGoldNuggetReward(pid, to, to, 0, user.amount);\\n        }\\n\\n        lpToken[pid].safeTransferFrom(msg.sender, address(this), amount);\\n\\n        emit Deposit(msg.sender, pid, amount, to);\\n    }\\n\\n    /// @notice Withdraw LP tokens from MCV2.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param amount LP token amount to withdraw.\\n    /// @param to Receiver of the LP tokens.\\n    function withdraw(uint256 pid, uint256 amount, address to) public {\\n        PoolInfo memory pool = updatePool(pid);\\n        UserInfo storage user = userInfo[pid][msg.sender];\\n\\n        // Effects\\n        user.rewardDebt = user.rewardDebt.sub(int256(amount.mul(pool.accGoldNuggetPerShare) / ACC_GOLN_PRECISION));\\n        user.amount = user.amount.sub(amount);\\n\\n        // Interactions\\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onGoldNuggetReward(pid, msg.sender, to, 0, user.amount);\\n        }\\n        \\n        lpToken[pid].safeTransfer(to, amount);\\n\\n        emit Withdraw(msg.sender, pid, amount, to);\\n    }\\n\\n    /// @notice Harvest proceeds for transaction sender to `to`.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param to Receiver of GOLN rewards.\\n    function harvest(uint256 pid, address to) public {\\n        PoolInfo memory pool = updatePool(pid);\\n        UserInfo storage user = userInfo[pid][msg.sender];\\n        int256 accumulatedGoldNugget = int256(user.amount.mul(pool.accGoldNuggetPerShare) / ACC_GOLN_PRECISION);\\n        uint256 _pendingGoldNugget = accumulatedGoldNugget.sub(user.rewardDebt).toUInt256();\\n\\n        // Effects\\n        user.rewardDebt = accumulatedGoldNugget;\\n\\n        // Interactions\\n        if (_pendingGoldNugget != 0) {\\n            GOLN.safeTransfer(to, _pendingGoldNugget);\\n        }\\n        \\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onGoldNuggetReward( pid, msg.sender, to, _pendingGoldNugget, user.amount);\\n        }\\n\\n        emit Harvest(msg.sender, pid, _pendingGoldNugget);\\n    }\\n    \\n    /// @notice Withdraw LP tokens from MCV2 and harvest proceeds for transaction sender to `to`.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param amount LP token amount to withdraw.\\n    /// @param to Receiver of the LP tokens and GOLN rewards.\\n    function withdrawAndHarvest(uint256 pid, uint256 amount, address to) public {\\n        PoolInfo memory pool = updatePool(pid);\\n        UserInfo storage user = userInfo[pid][msg.sender];\\n        int256 accumulatedGoldNugget = int256(user.amount.mul(pool.accGoldNuggetPerShare) / ACC_GOLN_PRECISION);\\n        uint256 _pendingGoldNugget = accumulatedGoldNugget.sub(user.rewardDebt).toUInt256();\\n\\n        // Effects\\n        user.rewardDebt = accumulatedGoldNugget.sub(int256(amount.mul(pool.accGoldNuggetPerShare) / ACC_GOLN_PRECISION));\\n        user.amount = user.amount.sub(amount);\\n        \\n        // Interactions\\n        GOLN.safeTransfer(to, _pendingGoldNugget);\\n\\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onGoldNuggetReward(pid, msg.sender, to, _pendingGoldNugget, user.amount);\\n        }\\n\\n        lpToken[pid].safeTransfer(to, amount);\\n\\n        emit Withdraw(msg.sender, pid, amount, to);\\n        emit Harvest(msg.sender, pid, _pendingGoldNugget);\\n    }\\n\\n    /// @notice Withdraw without caring about rewards. EMERGENCY ONLY.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param to Receiver of the LP tokens.\\n    function emergencyWithdraw(uint256 pid, address to) public {\\n        UserInfo storage user = userInfo[pid][msg.sender];\\n        uint256 amount = user.amount;\\n        user.amount = 0;\\n        user.rewardDebt = 0;\\n\\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onGoldNuggetReward(pid, msg.sender, to, 0, 0);\\n        }\\n\\n        // Note: transfer can fail or succeed if `amount` is zero.\\n        lpToken[pid].safeTransfer(to, amount);\\n        emit EmergencyWithdraw(msg.sender, pid, amount, to);\\n    }\\n}\\n\",\"keccak256\":\"0xadbc050755c7498e79c847e252cdb706cafe38a4d385355ac0ce1c6f6f961e53\",\"license\":\"MIT\"},\"contracts/interfaces/IGoldMiner.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity 0.6.12;\\npragma experimental ABIEncoderV2;\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\\\";\\n\\ninterface IGoldMiner {\\n    using BoringERC20 for IERC20;\\n    struct UserInfo {\\n        uint256 amount;     // How many LP tokens the user has provided.\\n        uint256 rewardDebt; // Reward debt. See explanation below.\\n    }\\n\\n    struct PoolInfo {\\n        IERC20 lpToken;           // Address of LP token contract.\\n        uint256 allocPoint;       // How many allocation points assigned to this pool. GOLN to distribute per block.\\n        uint256 lastRewardBlock;  // Last block number that GOLN distribution occurs.\\n        uint256 accGoldNuggetPerShare; // Accumulated GOLN per share, times 1e12. See below.\\n    }\\n\\n    function poolInfo(uint256 pid) external view returns (IGoldMiner.PoolInfo memory);\\n    function totalAllocPoint() external view returns (uint256);\\n    function deposit(uint256 _pid, uint256 _amount) external;\\n}\\n\",\"keccak256\":\"0xe6ba2f319be5134738042eb6e1e104324752729a4582177ef88350856b4a7280\",\"license\":\"MIT\"},\"contracts/interfaces/IRewarder.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.6.12;\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\\\";\\ninterface IRewarder {\\n    using BoringERC20 for IERC20;\\n    function onGoldNuggetReward(uint256 pid, address user, address recipient, uint256 goldnuggetAmount, uint256 newLpAmount) external;\\n    function pendingTokens(uint256 pid, address user, uint256 goldnuggetAmount) external view returns (IERC20[] memory, uint256[] memory);\\n}\\n\",\"keccak256\":\"0x92579e172bd0f29fd768cf7c6ccd1a8a74204d8bac7d7ae95538370d1265ac5c\",\"license\":\"MIT\"},\"contracts/libraries/SignedSafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.6.12;\\n\\nlibrary SignedSafeMath {\\n    int256 constant private _INT256_MIN = -2**255;\\n\\n    /**\\n     * @dev Returns the multiplication of two signed integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `*` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Multiplication cannot overflow.\\n     */\\n    function mul(int256 a, int256 b) internal pure returns (int256) {\\n        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\\n        // benefit is lost if 'b' is also tested.\\n        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\\n        if (a == 0) {\\n            return 0;\\n        }\\n\\n        require(!(a == -1 && b == _INT256_MIN), \\\"SignedSafeMath: multiplication overflow\\\");\\n\\n        int256 c = a * b;\\n        require(c / a == b, \\\"SignedSafeMath: multiplication overflow\\\");\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Returns the integer division of two signed integers. Reverts on\\n     * division by zero. The result is rounded towards zero.\\n     *\\n     * Counterpart to Solidity's `/` operator. Note: this function uses a\\n     * `revert` opcode (which leaves remaining gas untouched) while Solidity\\n     * uses an invalid opcode to revert (consuming all remaining gas).\\n     *\\n     * Requirements:\\n     *\\n     * - The divisor cannot be zero.\\n     */\\n    function div(int256 a, int256 b) internal pure returns (int256) {\\n        require(b != 0, \\\"SignedSafeMath: division by zero\\\");\\n        require(!(b == -1 && a == _INT256_MIN), \\\"SignedSafeMath: division overflow\\\");\\n\\n        int256 c = a / b;\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Returns the subtraction of two signed integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `-` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Subtraction cannot overflow.\\n     */\\n    function sub(int256 a, int256 b) internal pure returns (int256) {\\n        int256 c = a - b;\\n        require((b >= 0 && c <= a) || (b < 0 && c > a), \\\"SignedSafeMath: subtraction overflow\\\");\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Returns the addition of two signed integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `+` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Addition cannot overflow.\\n     */\\n    function add(int256 a, int256 b) internal pure returns (int256) {\\n        int256 c = a + b;\\n        require((b >= 0 && c >= a) || (b < 0 && c < a), \\\"SignedSafeMath: addition overflow\\\");\\n\\n        return c;\\n    }\\n\\n    function toUInt256(int256 a) internal pure returns (uint256) {\\n        require(a >= 0, \\\"Integer < 0\\\");\\n        return uint256(a);\\n    }\\n}\",\"keccak256\":\"0x4991beb21b224dfcdc3d251e0a60fdc304d4f6b699b2c35d08f3974e5b84c86a\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        },
        "MiniMinerV2": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "_goldnugget",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "Deposit",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "EmergencyWithdraw",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "Harvest",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "goldnuggetPerSecond",
                  "type": "uint256"
                }
              ],
              "name": "LogGoldNuggetPerSecond",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "allocPoint",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "contract IERC20",
                  "name": "lpToken",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "contract IRewarder",
                  "name": "rewarder",
                  "type": "address"
                }
              ],
              "name": "LogPoolAddition",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "allocPoint",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "contract IRewarder",
                  "name": "rewarder",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "overwrite",
                  "type": "bool"
                }
              ],
              "name": "LogSetPool",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint64",
                  "name": "lastRewardTime",
                  "type": "uint64"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "lpSupply",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "accGoldNuggetPerShare",
                  "type": "uint256"
                }
              ],
              "name": "LogUpdatePool",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "Withdraw",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "GOLN",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "allocPoint",
                  "type": "uint256"
                },
                {
                  "internalType": "contract IERC20",
                  "name": "_lpToken",
                  "type": "address"
                },
                {
                  "internalType": "contract IRewarder",
                  "name": "_rewarder",
                  "type": "address"
                }
              ],
              "name": "add",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes[]",
                  "name": "calls",
                  "type": "bytes[]"
                },
                {
                  "internalType": "bool",
                  "name": "revertOnFail",
                  "type": "bool"
                }
              ],
              "name": "batch",
              "outputs": [
                {
                  "internalType": "bool[]",
                  "name": "successes",
                  "type": "bool[]"
                },
                {
                  "internalType": "bytes[]",
                  "name": "results",
                  "type": "bytes[]"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "claimOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "deposit",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "emergencyWithdraw",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "goldnuggetPerSecond",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "harvest",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "lpToken",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256[]",
                  "name": "pids",
                  "type": "uint256[]"
                }
              ],
              "name": "massUpdatePools",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_pid",
                  "type": "uint256"
                }
              ],
              "name": "migrate",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "migrator",
              "outputs": [
                {
                  "internalType": "contract IMigratorMiner",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_pid",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_user",
                  "type": "address"
                }
              ],
              "name": "pendingGoldNugget",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "pending",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "pendingOwner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "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": "permitToken",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "poolInfo",
              "outputs": [
                {
                  "internalType": "uint128",
                  "name": "accGoldNuggetPerShare",
                  "type": "uint128"
                },
                {
                  "internalType": "uint64",
                  "name": "lastRewardTime",
                  "type": "uint64"
                },
                {
                  "internalType": "uint64",
                  "name": "allocPoint",
                  "type": "uint64"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "poolLength",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "pools",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "rewarder",
              "outputs": [
                {
                  "internalType": "contract IRewarder",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_pid",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_allocPoint",
                  "type": "uint256"
                },
                {
                  "internalType": "contract IRewarder",
                  "name": "_rewarder",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "overwrite",
                  "type": "bool"
                }
              ],
              "name": "set",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_goldnuggetPerSecond",
                  "type": "uint256"
                }
              ],
              "name": "setGoldNuggetPerSecond",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "contract IMigratorMiner",
                  "name": "_migrator",
                  "type": "address"
                }
              ],
              "name": "setMigrator",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalAllocPoint",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "direct",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "renounce",
                  "type": "bool"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                }
              ],
              "name": "updatePool",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "uint128",
                      "name": "accGoldNuggetPerShare",
                      "type": "uint128"
                    },
                    {
                      "internalType": "uint64",
                      "name": "lastRewardTime",
                      "type": "uint64"
                    },
                    {
                      "internalType": "uint64",
                      "name": "allocPoint",
                      "type": "uint64"
                    }
                  ],
                  "internalType": "struct MiniMinerV2.PoolInfo",
                  "name": "pool",
                  "type": "tuple"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "userInfo",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "int256",
                  "name": "rewardDebt",
                  "type": "int256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "withdraw",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "withdrawAndHarvest",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "add(uint256,address,address)": {
                "params": {
                  "_lpToken": "Address of the LP ERC-20 token.",
                  "_rewarder": "Address of the rewarder delegate.",
                  "allocPoint": "AP of the new pool."
                }
              },
              "constructor": {
                "params": {
                  "_goldnugget": "The GOLN token contract address."
                }
              },
              "deposit(uint256,uint256,address)": {
                "params": {
                  "amount": "LP token amount to deposit.",
                  "pid": "The index of the pool. See `poolInfo`.",
                  "to": "The receiver of `amount` deposit benefit."
                }
              },
              "emergencyWithdraw(uint256,address)": {
                "params": {
                  "pid": "The index of the pool. See `poolInfo`.",
                  "to": "Receiver of the LP tokens."
                }
              },
              "harvest(uint256,address)": {
                "params": {
                  "pid": "The index of the pool. See `poolInfo`.",
                  "to": "Receiver of GOLN rewards."
                }
              },
              "massUpdatePools(uint256[])": {
                "params": {
                  "pids": "Pool IDs of all to be updated. Make sure to update all active pools."
                }
              },
              "migrate(uint256)": {
                "params": {
                  "_pid": "The index of the pool. See `poolInfo`."
                }
              },
              "pendingGoldNugget(uint256,address)": {
                "params": {
                  "_pid": "The index of the pool. See `poolInfo`.",
                  "_user": "Address of user."
                },
                "returns": {
                  "pending": "GOLN reward for a given user."
                }
              },
              "set(uint256,uint256,address,bool)": {
                "params": {
                  "_allocPoint": "New AP of the pool.",
                  "_pid": "The index of the pool. See `poolInfo`.",
                  "_rewarder": "Address of the rewarder delegate.",
                  "overwrite": "True if _rewarder should be `set`. Otherwise `_rewarder` is ignored."
                }
              },
              "setGoldNuggetPerSecond(uint256)": {
                "params": {
                  "_goldnuggetPerSecond": "The amount of GoldNugget to be distributed per second."
                }
              },
              "setMigrator(address)": {
                "params": {
                  "_migrator": "The contract address to set."
                }
              },
              "updatePool(uint256)": {
                "params": {
                  "pid": "The index of the pool. See `poolInfo`."
                },
                "returns": {
                  "pool": "Returns the pool that was updated."
                }
              },
              "withdraw(uint256,uint256,address)": {
                "params": {
                  "amount": "LP token amount to withdraw.",
                  "pid": "The index of the pool. See `poolInfo`.",
                  "to": "Receiver of the LP tokens."
                }
              },
              "withdrawAndHarvest(uint256,uint256,address)": {
                "params": {
                  "amount": "LP token amount to withdraw.",
                  "pid": "The index of the pool. See `poolInfo`.",
                  "to": "Receiver of the LP tokens and GOLN rewards."
                }
              }
            },
            "stateVariables": {
              "totalAllocPoint": {
                "details": "Total allocation points. Must be the sum of all allocation points in all pools."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60a06040523480156200001157600080fd5b5060405162002c2f38038062002c2f833981016040819052620000349162000089565b600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a360601b6001600160601b031916608052620000b9565b6000602082840312156200009b578081fd5b81516001600160a01b0381168114620000b2578182fd5b9392505050565b60805160601c612b4e620000e16000398061089552806117f15280611afd5250612b4e6000f3fe6080604052600436106101b75760003560e01c80637cd07e47116100ec578063cac435dc1161008a578063e30c397811610064578063e30c3978146104d5578063ea63f9ff146104ea578063fe4fc140146104ff578063ffb6c9ec14610514576101b7565b8063cac435dc14610474578063d1abb90714610494578063d2423b51146104b4576101b7565b80638dbdbe6d116100c65780638dbdbe6d146103e657806393f1a40b14610406578063ab7de09814610434578063c346253d14610454576101b7565b80637cd07e471461039c57806388bba42f146103b15780638da5cb5b146103d1576101b7565b80632f940c701161015957806351eb05a61161013357806351eb05a61461030257806357a5b58c1461032f57806378ed5d1f1461034f5780637c516e941461037c576101b7565b80632f940c70146102ad578063454b0608146102cd5780634e71e0c8146102ed576101b7565b80631526fe27116101955780631526fe271461022957806317caf6f11461025857806318fccc761461026d57806323cf31181461028d576101b7565b8063078dfbe7146101bc578063081e3eda146101de5780630ad58d2f14610209575b600080fd5b3480156101c857600080fd5b506101dc6101d736600461217d565b610534565b005b3480156101ea57600080fd5b506101f3610623565b6040516102009190612a02565b60405180910390f35b34801561021557600080fd5b506101dc610224366004612459565b610629565b34801561023557600080fd5b506102496102443660046123c4565b6107b9565b604051610200939291906129d8565b34801561026457600080fd5b506101f36107fb565b34801561027957600080fd5b506101dc6102883660046123f4565b610801565b34801561029957600080fd5b506101dc6102a836600461230e565b61099b565b3480156102b957600080fd5b506101dc6102c83660046123f4565b6109e7565b3480156102d957600080fd5b506101dc6102e83660046123c4565b610b08565b3480156102f957600080fd5b506101dc610db4565b34801561030e57600080fd5b5061032261031d3660046123c4565b610e41565b604051610200919061299f565b34801561033b57600080fd5b506101dc61034a366004612210565b6110cb565b34801561035b57600080fd5b5061036f61036a3660046123c4565b611101565b6040516102009190612527565b34801561038857600080fd5b506101dc610397366004612287565b611128565b3480156103a857600080fd5b5061036f61119c565b3480156103bd57600080fd5b506101dc6103cc366004612486565b6111ab565b3480156103dd57600080fd5b5061036f611318565b3480156103f257600080fd5b506101dc610401366004612459565b611327565b34801561041257600080fd5b506104266104213660046123f4565b6114b2565b604051610200929190612a4a565b34801561044057600080fd5b506101dc61044f366004612423565b6114d6565b34801561046057600080fd5b5061036f61046f3660046123c4565b6116ac565b34801561048057600080fd5b506101dc61048f3660046123c4565b6116b9565b3480156104a057600080fd5b506101dc6104af366004612459565b611723565b6104c76104c23660046121c7565b611956565b6040516102009291906125b9565b3480156104e157600080fd5b5061036f611ae6565b3480156104f657600080fd5b506101f3611af5565b34801561050b57600080fd5b5061036f611afb565b34801561052057600080fd5b506101f361052f3660046123f4565b611b1f565b6000546001600160a01b031633146105675760405162461bcd60e51b815260040161055e906127cf565b60405180910390fd5b8115610602576001600160a01b0383161515806105815750805b61059d5760405162461bcd60e51b815260040161055e90612732565b600080546040516001600160a01b03808716939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0385166001600160a01b03199182161790915560018054909116905561061e565b600180546001600160a01b0319166001600160a01b0385161790555b505050565b60035490565b610631612115565b61063a84610e41565b6000858152600660209081526040808320338452909152902081519192509061068c9064e8d4a51000906106789087906001600160801b0316611d19565b8161067f57fe5b6001840154919004611d56565b6001820155805461069d9085611da3565b81556005805460009190879081106106b157fe5b6000918252602090912001546001600160a01b03169050801561073757815460405163051ec19960e51b81526001600160a01b0383169163a3d8332091610704918a9133918a9160009190600401612a0b565b600060405180830381600087803b15801561071e57600080fd5b505af1158015610732573d6000803e3d6000fd5b505050505b61076584866004898154811061074957fe5b6000918252602090912001546001600160a01b03169190611dc6565b836001600160a01b031686336001600160a01b03167f8166bf25f8a2b7ed3c85049207da4358d16edbed977d23fa2ee6f0dde3ec2132886040516107a99190612a02565b60405180910390a4505050505050565b600381815481106107c657fe5b6000918252602090912001546001600160801b03811691506001600160401b03600160801b8204811691600160c01b90041683565b60075481565b610809612115565b61081283610e41565b6000848152600660209081526040808320338452909152812082518154939450909264e8d4a510009161084e91906001600160801b0316611d19565b8161085557fe5b0490506000610879610874846001015484611d5690919063ffffffff16565b611eb4565b60018401839055905080156108bc576108bc6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168683611dc6565b6000600587815481106108cb57fe5b6000918252602090912001546001600160a01b03169050801561095057835460405163051ec19960e51b81526001600160a01b0383169163a3d833209161091d918b9133918c91899190600401612a0b565b600060405180830381600087803b15801561093757600080fd5b505af115801561094b573d6000803e3d6000fd5b505050505b86336001600160a01b03167f71bab65ced2e5750775a0613be067df48ef06cf92a496ebf7663ae06609249548460405161098a9190612a02565b60405180910390a350505050505050565b6000546001600160a01b031633146109c55760405162461bcd60e51b815260040161055e906127cf565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b60008281526006602090815260408083203384529091528120805482825560018201839055600580549293919286908110610a1e57fe5b6000918252602090912001546001600160a01b031690508015610aa35760405163051ec19960e51b81526001600160a01b0382169063a3d8332090610a70908890339089906000908190600401612a0b565b600060405180830381600087803b158015610a8a57600080fd5b505af1158015610a9e573d6000803e3d6000fd5b505050505b610ab584836004888154811061074957fe5b836001600160a01b031685336001600160a01b03167f2cac5e20e1541d836381527a43f651851e302817b71dc8e810284e69210c1c6b85604051610af99190612a02565b60405180910390a45050505050565b6002546001600160a01b0316610b305760405162461bcd60e51b815260040161055e90612804565b600060048281548110610b3f57fe5b60009182526020822001546040516370a0823160e01b81526001600160a01b03909116925082906370a0823190610b7a903090600401612527565b60206040518083038186803b158015610b9257600080fd5b505afa158015610ba6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bca91906123dc565b60025460405163095ea7b360e01b81529192506001600160a01b038085169263095ea7b392610bff92169085906004016125a0565b602060405180830381600087803b158015610c1957600080fd5b505af1158015610c2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c51919061224f565b5060025460405163ce5494bb60e01b81526000916001600160a01b03169063ce5494bb90610c83908690600401612527565b602060405180830381600087803b158015610c9d57600080fd5b505af1158015610cb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd5919061226b565b6040516370a0823160e01b81529091506001600160a01b038216906370a0823190610d04903090600401612527565b60206040518083038186803b158015610d1c57600080fd5b505afa158015610d30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5491906123dc565b8214610d725760405162461bcd60e51b815260040161055e90612957565b8060048581548110610d8057fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050505050565b6001546001600160a01b0316338114610ddf5760405162461bcd60e51b815260040161055e9061283b565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b610e49612115565b60038281548110610e5657fe5b60009182526020918290206040805160608101825292909101546001600160801b03811683526001600160401b03600160801b82048116948401859052600160c01b909104169082015291504211156110c657600060048381548110610eb857fe5b6000918252602090912001546040516370a0823160e01b81526001600160a01b03909116906370a0823190610ef1903090600401612527565b60206040518083038186803b158015610f0957600080fd5b505afa158015610f1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4191906123dc565b90508015610fea576000610f6b83602001516001600160401b031642611da390919063ffffffff16565b90506000600754610f9e85604001516001600160401b0316610f9860085486611d1990919063ffffffff16565b90611d19565b81610fa557fe5b049050610fdc610fcb84610fbe8464e8d4a51000611d19565b81610fc557fe5b04611eda565b85516001600160801b031690611f03565b6001600160801b0316845250505b610ff342611f32565b6001600160401b03166020830152600380548391908590811061101257fe5b6000918252602091829020835191018054848401516040958601516001600160801b03199092166001600160801b039094169390931767ffffffffffffffff60801b1916600160801b6001600160401b0394851602176001600160c01b0316600160c01b93909116929092029190911790558301518351915185927f0fc9545022a542541ad085d091fb09a2ab36fee366a4576ab63714ea907ad353926110bc9290918691612a58565b60405180910390a2505b919050565b8060005b818110156110fb576110f28484838181106110e657fe5b90506020020135610e41565b506001016110cf565b50505050565b6004818154811061110e57fe5b6000918252602090912001546001600160a01b0316905081565b60405163d505accf60e01b81526001600160a01b0389169063d505accf90611160908a908a908a908a908a908a908a9060040161255f565b600060405180830381600087803b15801561117a57600080fd5b505af115801561118e573d6000803e3d6000fd5b505050505050505050505050565b6002546001600160a01b031681565b6000546001600160a01b031633146111d55760405162461bcd60e51b815260040161055e906127cf565b6112148361120e600387815481106111e957fe5b60009182526020909120015460075490600160c01b90046001600160401b0316611da3565b90611f5b565b60075561122083611f32565b6003858154811061122d57fe5b9060005260206000200160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555080156112a157816005858154811061127257fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b806112cd57600584815481106112b357fe5b6000918252602090912001546001600160a01b03166112cf565b815b6001600160a01b0316847f95895a6ab1df54420d241b55243258a33e61b2194db66c1179ec521aae8e1865858460405161130a929190612a3a565b60405180910390a350505050565b6000546001600160a01b031681565b61132f612115565b61133884610e41565b60008581526006602090815260408083206001600160a01b0387168452909152902080549192509061136a9085611f5b565b815581516113a19064e8d4a510009061138d9087906001600160801b0316611d19565b8161139457fe5b6001840154919004611f7e565b81600101819055506000600586815481106113b857fe5b6000918252602090912001546001600160a01b03169050801561143e57815460405163051ec19960e51b81526001600160a01b0383169163a3d833209161140b918a918991829160009190600401612a0b565b600060405180830381600087803b15801561142557600080fd5b505af1158015611439573d6000803e3d6000fd5b505050505b61146e33308760048a8154811061145157fe5b6000918252602090912001546001600160a01b0316929190611fc4565b836001600160a01b031686336001600160a01b03167f02d7e648dd130fc184d383e55bb126ac4c9c60e8f94bf05acdf557ba2d540b47886040516107a99190612a02565b60066020908152600092835260408084209091529082529020805460019091015482565b6000546001600160a01b031633146115005760405162461bcd60e51b815260040161055e906127cf565b60075461150d9084611f5b565b6007556004805460018181019092557f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b038086166001600160a01b03199283161790925560058054938401815560009081527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db09093018054928516929091169190911790556040805160608101909152908152600390602081016115ba42611f32565b6001600160401b031681526020016115d186611f32565b6001600160401b039081169091528254600181810185556000948552602094859020845192018054958501516040909501518416600160c01b026001600160c01b0395909416600160801b0267ffffffffffffffff60801b196001600160801b039094166001600160801b0319909716969096179290921694909417929092161790556004546001600160a01b03808416929085169161167091611da3565b7f81ee0f8c5c46e2cb41984886f77a84181724abb86c32a5f6de539b07509d45e58660405161169f9190612a02565b60405180910390a4505050565b6005818154811061110e57fe5b6000546001600160a01b031633146116e35760405162461bcd60e51b815260040161055e906127cf565b60088190556040517fb11a039948f057594b76e3fa8c4a6479b7f2a19a3fa6d6c44b0a367eb74354c990611718908390612a02565b60405180910390a150565b61172b612115565b61173484610e41565b6000858152600660209081526040808320338452909152812082518154939450909264e8d4a510009161177091906001600160801b0316611d19565b8161177757fe5b0490506000611796610874846001015484611d5690919063ffffffff16565b90506117d164e8d4a510006117c186600001516001600160801b031689611d1990919063ffffffff16565b816117c857fe5b84919004611d56565b600184015582546117e29087611da3565b83556118186001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168683611dc6565b60006005888154811061182757fe5b6000918252602090912001546001600160a01b0316905080156118ac57835460405163051ec19960e51b81526001600160a01b0383169163a3d8332091611879918c9133918c91899190600401612a0b565b600060405180830381600087803b15801561189357600080fd5b505af11580156118a7573d6000803e3d6000fd5b505050505b6118be868860048b8154811061074957fe5b856001600160a01b031688336001600160a01b03167f8166bf25f8a2b7ed3c85049207da4358d16edbed977d23fa2ee6f0dde3ec21328a6040516119029190612a02565b60405180910390a487336001600160a01b03167f71bab65ced2e5750775a0613be067df48ef06cf92a496ebf7663ae0660924954846040516119449190612a02565b60405180910390a35050505050505050565b606080836001600160401b038111801561196f57600080fd5b50604051908082528060200260200182016040528015611999578160200160208202803683370190505b509150836001600160401b03811180156119b257600080fd5b506040519080825280602002602001820160405280156119e657816020015b60608152602001906001900390816119d15790505b50905060005b84811015611add576000606030888885818110611a0557fe5b9050602002810190611a179190612a82565b604051611a259291906124fb565b600060405180830381855af49150503d8060008114611a60576040519150601f19603f3d011682016040523d82523d6000602084013e611a65565b606091505b50915091508180611a74575085155b611a7d826120b5565b90611a9b5760405162461bcd60e51b815260040161055e9190612653565b5081858481518110611aa957fe5b60200260200101901515908115158152505080848481518110611ac857fe5b602090810291909101015250506001016119ec565b50935093915050565b6001546001600160a01b031681565b60085481565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000611b29612115565b60038481548110611b3657fe5b600091825260208083206040805160608101825291909301546001600160801b0380821683526001600160401b03600160801b8304811684860152600160c01b90920490911682850152888552600683528385206001600160a01b0389168652909252918320825160048054949650919492169288908110611bb457fe5b6000918252602090912001546040516370a0823160e01b81526001600160a01b03909116906370a0823190611bed903090600401612527565b60206040518083038186803b158015611c0557600080fd5b505afa158015611c19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c3d91906123dc565b905083602001516001600160401b031642118015611c5a57508015155b15611ce0576000611c8185602001516001600160401b031642611da390919063ffffffff16565b90506000600754611cae87604001516001600160401b0316610f9860085486611d1990919063ffffffff16565b81611cb557fe5b049050611cdb83611ccb8364e8d4a51000611d19565b81611cd257fe5b86919004611f5b565b935050505b60018301548354611d0e916108749164e8d4a5100090611d009087611d19565b81611d0757fe5b0490611d56565b979650505050505050565b6000811580611d3457505080820282828281611d3157fe5b04145b611d505760405162461bcd60e51b815260040161055e90612920565b92915050565b6000818303818312801590611d6b5750838113155b80611d805750600083128015611d8057508381135b611d9c5760405162461bcd60e51b815260040161055e906128a7565b9392505050565b80820382811115611d505760405162461bcd60e51b815260040161055e90612666565b60006060846001600160a01b031663a9059cbb8585604051602401611dec9291906125a0565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050604051611e25919061250b565b6000604051808303816000865af19150503d8060008114611e62576040519150601f19603f3d011682016040523d82523d6000602084013e611e67565b606091505b5091509150818015611e91575080511580611e91575080806020019051810190611e91919061224f565b611ead5760405162461bcd60e51b815260040161055e906126ba565b5050505050565b600080821215611ed65760405162461bcd60e51b815260040161055e90612695565b5090565b60006001600160801b03821115611ed65760405162461bcd60e51b815260040161055e90612761565b8181016001600160801b038083169082161015611d505760405162461bcd60e51b815260040161055e90612798565b60006001600160401b03821115611ed65760405162461bcd60e51b815260040161055e90612870565b81810181811015611d505760405162461bcd60e51b815260040161055e90612798565b6000828201818312801590611f935750838112155b80611fa85750600083128015611fa857508381125b611d9c5760405162461bcd60e51b815260040161055e906126f1565b60006060856001600160a01b03166323b872dd868686604051602401611fec9392919061253b565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050604051612025919061250b565b6000604051808303816000865af19150503d8060008114612062576040519150601f19603f3d011682016040523d82523d6000602084013e612067565b606091505b5091509150818015612091575080511580612091575080806020019051810190612091919061224f565b6120ad5760405162461bcd60e51b815260040161055e906128eb565b505050505050565b60606044825110156120fb575060408051808201909152601d81527f5472616e73616374696f6e2072657665727465642073696c656e746c7900000060208201526110c6565b60048201915081806020019051810190611d50919061232a565b604080516060810182526000808252602082018190529181019190915290565b60008083601f840112612146578182fd5b5081356001600160401b0381111561215c578182fd5b602083019150836020808302850101111561217657600080fd5b9250929050565b600080600060608486031215612191578283fd5b833561219c81612af2565b925060208401356121ac81612b0a565b915060408401356121bc81612b0a565b809150509250925092565b6000806000604084860312156121db578283fd5b83356001600160401b038111156121f0578384fd5b6121fc86828701612135565b90945092505060208401356121bc81612b0a565b60008060208385031215612222578182fd5b82356001600160401b03811115612237578283fd5b61224385828601612135565b90969095509350505050565b600060208284031215612260578081fd5b8151611d9c81612b0a565b60006020828403121561227c578081fd5b8151611d9c81612af2565b600080600080600080600080610100898b0312156122a3578384fd5b88356122ae81612af2565b975060208901356122be81612af2565b965060408901356122ce81612af2565b9550606089013594506080890135935060a089013560ff811681146122f1578384fd5b979a969950949793969295929450505060c08201359160e0013590565b60006020828403121561231f578081fd5b8135611d9c81612af2565b60006020828403121561233b578081fd5b81516001600160401b0380821115612351578283fd5b818401915084601f830112612364578283fd5b815181811115612372578384fd5b604051601f8201601f191681016020018381118282101715612392578586fd5b6040528181528382016020018710156123a9578485fd5b6123ba826020830160208701612ac6565b9695505050505050565b6000602082840312156123d5578081fd5b5035919050565b6000602082840312156123ed578081fd5b5051919050565b60008060408385031215612406578182fd5b82359150602083013561241881612af2565b809150509250929050565b600080600060608486031215612437578081fd5b83359250602084013561244981612af2565b915060408401356121bc81612af2565b60008060006060848603121561246d578081fd5b833592506020840135915060408401356121bc81612af2565b6000806000806080858703121561249b578182fd5b843593506020850135925060408501356124b481612af2565b915060608501356124c481612b0a565b939692955090935050565b600081518084526124e7816020860160208601612ac6565b601f01601f19169290920160200192915050565b6000828483379101908152919050565b6000825161251d818460208701612ac6565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b03929092168252602082015260400190565b604080825283519082018190526000906020906060840190828701845b828110156125f45781511515845292840192908401906001016125d6565b5050508381038285015280855161260b8184612a02565b91508192508381028201848801865b838110156126445785830385526126328383516124cf565b9487019492509086019060010161261a565b50909998505050505050505050565b600060208252611d9c60208301846124cf565b602080825260159082015274426f72696e674d6174683a20556e646572666c6f7760581b604082015260600190565b6020808252600b908201526a0496e7465676572203c20360ac1b604082015260600190565b6020808252601c908201527f426f72696e6745524332303a205472616e73666572206661696c656400000000604082015260600190565b60208082526021908201527f5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252601590820152744f776e61626c653a207a65726f206164647265737360581b604082015260600190565b6020808252601c908201527f426f72696e674d6174683a2075696e74313238204f766572666c6f7700000000604082015260600190565b60208082526018908201527f426f72696e674d6174683a20416464204f766572666c6f770000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601c908201527f476f6c644d696e657256323a206e6f206d69677261746f722073657400000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e6572604082015260600190565b6020808252601b908201527f426f72696e674d6174683a2075696e743634204f766572666c6f770000000000604082015260600190565b60208082526024908201527f5369676e6564536166654d6174683a207375627472616374696f6e206f766572604082015263666c6f7760e01b606082015260800190565b6020808252818101527f426f72696e6745524332303a205472616e7366657246726f6d206661696c6564604082015260600190565b60208082526018908201527f426f72696e674d6174683a204d756c204f766572666c6f770000000000000000604082015260600190565b60208082526028908201527f476f6c644d696e657256323a206d696772617465642062616c616e6365206d756040820152670e6e840dac2e8c6d60c31b606082015260800190565b81516001600160801b031681526020808301516001600160401b0390811691830191909152604092830151169181019190915260600190565b6001600160801b039390931683526001600160401b03918216602084015216604082015260600190565b90815260200190565b9485526001600160a01b0393841660208601529190921660408401526060830191909152608082015260a00190565b9182521515602082015260400190565b918252602082015260400190565b6001600160401b0393909316835260208301919091526001600160801b0316604082015260600190565b6000808335601e19843603018112612a98578283fd5b8301803591506001600160401b03821115612ab1578283fd5b60200191503681900382131561217657600080fd5b60005b83811015612ae1578181015183820152602001612ac9565b838111156110fb5750506000910152565b6001600160a01b0381168114612b0757600080fd5b50565b8015158114612b0757600080fdfea26469706673582212209a46b1ec6ee8da2338a32eda142986664b3adbe7adee665ce9ec33120c07ed9c64736f6c634300060c0033",
              "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x2C2F CODESIZE SUB DUP1 PUSH3 0x2C2F DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x89 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x80 MSTORE PUSH3 0xB9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x9B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0xB2 JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH2 0x2B4E PUSH3 0xE1 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x895 MSTORE DUP1 PUSH2 0x17F1 MSTORE DUP1 PUSH2 0x1AFD MSTORE POP PUSH2 0x2B4E PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1B7 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7CD07E47 GT PUSH2 0xEC JUMPI DUP1 PUSH4 0xCAC435DC GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xE30C3978 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xE30C3978 EQ PUSH2 0x4D5 JUMPI DUP1 PUSH4 0xEA63F9FF EQ PUSH2 0x4EA JUMPI DUP1 PUSH4 0xFE4FC140 EQ PUSH2 0x4FF JUMPI DUP1 PUSH4 0xFFB6C9EC EQ PUSH2 0x514 JUMPI PUSH2 0x1B7 JUMP JUMPDEST DUP1 PUSH4 0xCAC435DC EQ PUSH2 0x474 JUMPI DUP1 PUSH4 0xD1ABB907 EQ PUSH2 0x494 JUMPI DUP1 PUSH4 0xD2423B51 EQ PUSH2 0x4B4 JUMPI PUSH2 0x1B7 JUMP JUMPDEST DUP1 PUSH4 0x8DBDBE6D GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x8DBDBE6D EQ PUSH2 0x3E6 JUMPI DUP1 PUSH4 0x93F1A40B EQ PUSH2 0x406 JUMPI DUP1 PUSH4 0xAB7DE098 EQ PUSH2 0x434 JUMPI DUP1 PUSH4 0xC346253D EQ PUSH2 0x454 JUMPI PUSH2 0x1B7 JUMP JUMPDEST DUP1 PUSH4 0x7CD07E47 EQ PUSH2 0x39C JUMPI DUP1 PUSH4 0x88BBA42F EQ PUSH2 0x3B1 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x3D1 JUMPI PUSH2 0x1B7 JUMP JUMPDEST DUP1 PUSH4 0x2F940C70 GT PUSH2 0x159 JUMPI DUP1 PUSH4 0x51EB05A6 GT PUSH2 0x133 JUMPI DUP1 PUSH4 0x51EB05A6 EQ PUSH2 0x302 JUMPI DUP1 PUSH4 0x57A5B58C EQ PUSH2 0x32F JUMPI DUP1 PUSH4 0x78ED5D1F EQ PUSH2 0x34F JUMPI DUP1 PUSH4 0x7C516E94 EQ PUSH2 0x37C JUMPI PUSH2 0x1B7 JUMP JUMPDEST DUP1 PUSH4 0x2F940C70 EQ PUSH2 0x2AD JUMPI DUP1 PUSH4 0x454B0608 EQ PUSH2 0x2CD JUMPI DUP1 PUSH4 0x4E71E0C8 EQ PUSH2 0x2ED JUMPI PUSH2 0x1B7 JUMP JUMPDEST DUP1 PUSH4 0x1526FE27 GT PUSH2 0x195 JUMPI DUP1 PUSH4 0x1526FE27 EQ PUSH2 0x229 JUMPI DUP1 PUSH4 0x17CAF6F1 EQ PUSH2 0x258 JUMPI DUP1 PUSH4 0x18FCCC76 EQ PUSH2 0x26D JUMPI DUP1 PUSH4 0x23CF3118 EQ PUSH2 0x28D JUMPI PUSH2 0x1B7 JUMP JUMPDEST DUP1 PUSH4 0x78DFBE7 EQ PUSH2 0x1BC JUMPI DUP1 PUSH4 0x81E3EDA EQ PUSH2 0x1DE JUMPI DUP1 PUSH4 0xAD58D2F EQ PUSH2 0x209 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x1D7 CALLDATASIZE PUSH1 0x4 PUSH2 0x217D JUMP JUMPDEST PUSH2 0x534 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F3 PUSH2 0x623 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x200 SWAP2 SWAP1 PUSH2 0x2A02 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x215 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x224 CALLDATASIZE PUSH1 0x4 PUSH2 0x2459 JUMP JUMPDEST PUSH2 0x629 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x235 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x249 PUSH2 0x244 CALLDATASIZE PUSH1 0x4 PUSH2 0x23C4 JUMP JUMPDEST PUSH2 0x7B9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x200 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x29D8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x264 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F3 PUSH2 0x7FB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x279 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x288 CALLDATASIZE PUSH1 0x4 PUSH2 0x23F4 JUMP JUMPDEST PUSH2 0x801 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x299 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x2A8 CALLDATASIZE PUSH1 0x4 PUSH2 0x230E JUMP JUMPDEST PUSH2 0x99B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x2C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x23F4 JUMP JUMPDEST PUSH2 0x9E7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x2E8 CALLDATASIZE PUSH1 0x4 PUSH2 0x23C4 JUMP JUMPDEST PUSH2 0xB08 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0xDB4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x30E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x322 PUSH2 0x31D CALLDATASIZE PUSH1 0x4 PUSH2 0x23C4 JUMP JUMPDEST PUSH2 0xE41 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x200 SWAP2 SWAP1 PUSH2 0x299F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x33B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x34A CALLDATASIZE PUSH1 0x4 PUSH2 0x2210 JUMP JUMPDEST PUSH2 0x10CB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x35B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x36F PUSH2 0x36A CALLDATASIZE PUSH1 0x4 PUSH2 0x23C4 JUMP JUMPDEST PUSH2 0x1101 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x200 SWAP2 SWAP1 PUSH2 0x2527 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x388 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x397 CALLDATASIZE PUSH1 0x4 PUSH2 0x2287 JUMP JUMPDEST PUSH2 0x1128 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x36F PUSH2 0x119C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x3CC CALLDATASIZE PUSH1 0x4 PUSH2 0x2486 JUMP JUMPDEST PUSH2 0x11AB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x36F PUSH2 0x1318 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x401 CALLDATASIZE PUSH1 0x4 PUSH2 0x2459 JUMP JUMPDEST PUSH2 0x1327 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x412 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x426 PUSH2 0x421 CALLDATASIZE PUSH1 0x4 PUSH2 0x23F4 JUMP JUMPDEST PUSH2 0x14B2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x200 SWAP3 SWAP2 SWAP1 PUSH2 0x2A4A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x440 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x44F CALLDATASIZE PUSH1 0x4 PUSH2 0x2423 JUMP JUMPDEST PUSH2 0x14D6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x460 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x36F PUSH2 0x46F CALLDATASIZE PUSH1 0x4 PUSH2 0x23C4 JUMP JUMPDEST PUSH2 0x16AC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x480 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x48F CALLDATASIZE PUSH1 0x4 PUSH2 0x23C4 JUMP JUMPDEST PUSH2 0x16B9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x4AF CALLDATASIZE PUSH1 0x4 PUSH2 0x2459 JUMP JUMPDEST PUSH2 0x1723 JUMP JUMPDEST PUSH2 0x4C7 PUSH2 0x4C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x21C7 JUMP JUMPDEST PUSH2 0x1956 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x200 SWAP3 SWAP2 SWAP1 PUSH2 0x25B9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x36F PUSH2 0x1AE6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F3 PUSH2 0x1AF5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x50B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x36F PUSH2 0x1AFB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x520 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F3 PUSH2 0x52F CALLDATASIZE PUSH1 0x4 PUSH2 0x23F4 JUMP JUMPDEST PUSH2 0x1B1F JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x567 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x27CF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 ISZERO PUSH2 0x602 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO ISZERO DUP1 PUSH2 0x581 JUMPI POP DUP1 JUMPDEST PUSH2 0x59D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x2732 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE PUSH2 0x61E JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND OR SWAP1 SSTORE JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x631 PUSH2 0x2115 JUMP JUMPDEST PUSH2 0x63A DUP5 PUSH2 0xE41 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP2 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH2 0x68C SWAP1 PUSH5 0xE8D4A51000 SWAP1 PUSH2 0x678 SWAP1 DUP8 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x1D19 JUMP JUMPDEST DUP2 PUSH2 0x67F JUMPI INVALID JUMPDEST PUSH1 0x1 DUP5 ADD SLOAD SWAP2 SWAP1 DIV PUSH2 0x1D56 JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SSTORE DUP1 SLOAD PUSH2 0x69D SWAP1 DUP6 PUSH2 0x1DA3 JUMP JUMPDEST DUP2 SSTORE PUSH1 0x5 DUP1 SLOAD PUSH1 0x0 SWAP2 SWAP1 DUP8 SWAP1 DUP2 LT PUSH2 0x6B1 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 ISZERO PUSH2 0x737 JUMPI DUP2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x51EC199 PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xA3D83320 SWAP2 PUSH2 0x704 SWAP2 DUP11 SWAP2 CALLER SWAP2 DUP11 SWAP2 PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x2A0B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x71E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x732 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x765 DUP5 DUP7 PUSH1 0x4 DUP10 DUP2 SLOAD DUP2 LT PUSH2 0x749 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 SWAP1 PUSH2 0x1DC6 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8166BF25F8A2B7ED3C85049207DA4358D16EDBED977D23FA2EE6F0DDE3EC2132 DUP9 PUSH1 0x40 MLOAD PUSH2 0x7A9 SWAP2 SWAP1 PUSH2 0x2A02 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x7C6 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP3 DIV DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV AND DUP4 JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x809 PUSH2 0x2115 JUMP JUMPDEST PUSH2 0x812 DUP4 PUSH2 0xE41 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP3 MLOAD DUP2 SLOAD SWAP4 SWAP5 POP SWAP1 SWAP3 PUSH5 0xE8D4A51000 SWAP2 PUSH2 0x84E SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x1D19 JUMP JUMPDEST DUP2 PUSH2 0x855 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 PUSH2 0x879 PUSH2 0x874 DUP5 PUSH1 0x1 ADD SLOAD DUP5 PUSH2 0x1D56 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x1EB4 JUMP JUMPDEST PUSH1 0x1 DUP5 ADD DUP4 SWAP1 SSTORE SWAP1 POP DUP1 ISZERO PUSH2 0x8BC JUMPI PUSH2 0x8BC PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP7 DUP4 PUSH2 0x1DC6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x5 DUP8 DUP2 SLOAD DUP2 LT PUSH2 0x8CB JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 ISZERO PUSH2 0x950 JUMPI DUP4 SLOAD PUSH1 0x40 MLOAD PUSH4 0x51EC199 PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xA3D83320 SWAP2 PUSH2 0x91D SWAP2 DUP12 SWAP2 CALLER SWAP2 DUP13 SWAP2 DUP10 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x2A0B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x937 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x94B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST DUP7 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x71BAB65CED2E5750775A0613BE067DF48EF06CF92A496EBF7663AE0660924954 DUP5 PUSH1 0x40 MLOAD PUSH2 0x98A SWAP2 SWAP1 PUSH2 0x2A02 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x9C5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x27CF JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP3 DUP3 SSTORE PUSH1 0x1 DUP3 ADD DUP4 SWAP1 SSTORE PUSH1 0x5 DUP1 SLOAD SWAP3 SWAP4 SWAP2 SWAP3 DUP7 SWAP1 DUP2 LT PUSH2 0xA1E JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 ISZERO PUSH2 0xAA3 JUMPI PUSH1 0x40 MLOAD PUSH4 0x51EC199 PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0xA3D83320 SWAP1 PUSH2 0xA70 SWAP1 DUP9 SWAP1 CALLER SWAP1 DUP10 SWAP1 PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x2A0B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA9E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0xAB5 DUP5 DUP4 PUSH1 0x4 DUP9 DUP2 SLOAD DUP2 LT PUSH2 0x749 JUMPI INVALID JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2CAC5E20E1541D836381527A43F651851E302817B71DC8E810284E69210C1C6B DUP6 PUSH1 0x40 MLOAD PUSH2 0xAF9 SWAP2 SWAP1 PUSH2 0x2A02 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB30 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x2804 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xB3F JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 KECCAK256 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP3 POP DUP3 SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0xB7A SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x2527 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBA6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xBCA SWAP2 SWAP1 PUSH2 0x23DC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP3 PUSH4 0x95EA7B3 SWAP3 PUSH2 0xBFF SWAP3 AND SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x25A0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC2D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC51 SWAP2 SWAP1 PUSH2 0x224F JUMP JUMPDEST POP PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0xCE5494BB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xCE5494BB SWAP1 PUSH2 0xC83 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x2527 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xCB1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xCD5 SWAP2 SWAP1 PUSH2 0x226B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0xD04 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x2527 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD1C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD30 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD54 SWAP2 SWAP1 PUSH2 0x23DC JUMP JUMPDEST DUP3 EQ PUSH2 0xD72 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x2957 JUMP JUMPDEST DUP1 PUSH1 0x4 DUP6 DUP2 SLOAD DUP2 LT PUSH2 0xD80 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER DUP2 EQ PUSH2 0xDDF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x283B JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xE49 PUSH2 0x2115 JUMP JUMPDEST PUSH1 0x3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xE56 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE SWAP3 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP3 DIV DUP2 AND SWAP5 DUP5 ADD DUP6 SWAP1 MSTORE PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 SWAP2 DIV AND SWAP1 DUP3 ADD MSTORE SWAP2 POP TIMESTAMP GT ISZERO PUSH2 0x10C6 JUMPI PUSH1 0x0 PUSH1 0x4 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0xEB8 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0xEF1 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x2527 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF1D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF41 SWAP2 SWAP1 PUSH2 0x23DC JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0xFEA JUMPI PUSH1 0x0 PUSH2 0xF6B DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND TIMESTAMP PUSH2 0x1DA3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x7 SLOAD PUSH2 0xF9E DUP6 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH2 0xF98 PUSH1 0x8 SLOAD DUP7 PUSH2 0x1D19 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH2 0x1D19 JUMP JUMPDEST DUP2 PUSH2 0xFA5 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0xFDC PUSH2 0xFCB DUP5 PUSH2 0xFBE DUP5 PUSH5 0xE8D4A51000 PUSH2 0x1D19 JUMP JUMPDEST DUP2 PUSH2 0xFC5 JUMPI INVALID JUMPDEST DIV PUSH2 0x1EDA JUMP JUMPDEST DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 PUSH2 0x1F03 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP5 MSTORE POP POP JUMPDEST PUSH2 0xFF3 TIMESTAMP PUSH2 0x1F32 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x3 DUP1 SLOAD DUP4 SWAP2 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0x1012 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP2 DUP3 SWAP1 KECCAK256 DUP4 MLOAD SWAP2 ADD DUP1 SLOAD DUP5 DUP5 ADD MLOAD PUSH1 0x40 SWAP6 DUP7 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x80 SHL NOT AND PUSH1 0x1 PUSH1 0x80 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP5 DUP6 AND MUL OR PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x1 PUSH1 0xC0 SHL SWAP4 SWAP1 SWAP2 AND SWAP3 SWAP1 SWAP3 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP4 ADD MLOAD DUP4 MLOAD SWAP2 MLOAD DUP6 SWAP3 PUSH32 0xFC9545022A542541AD085D091FB09A2AB36FEE366A4576AB63714EA907AD353 SWAP3 PUSH2 0x10BC SWAP3 SWAP1 SWAP2 DUP7 SWAP2 PUSH2 0x2A58 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x10FB JUMPI PUSH2 0x10F2 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x10E6 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0xE41 JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x10CF JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x4 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x110E JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD505ACCF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP1 PUSH4 0xD505ACCF SWAP1 PUSH2 0x1160 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x255F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x117A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x118E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x11D5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x27CF JUMP JUMPDEST PUSH2 0x1214 DUP4 PUSH2 0x120E PUSH1 0x3 DUP8 DUP2 SLOAD DUP2 LT PUSH2 0x11E9 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x7 SLOAD SWAP1 PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH2 0x1DA3 JUMP JUMPDEST SWAP1 PUSH2 0x1F5B JUMP JUMPDEST PUSH1 0x7 SSTORE PUSH2 0x1220 DUP4 PUSH2 0x1F32 JUMP JUMPDEST PUSH1 0x3 DUP6 DUP2 SLOAD DUP2 LT PUSH2 0x122D JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 ADD PUSH1 0x18 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP1 ISZERO PUSH2 0x12A1 JUMPI DUP2 PUSH1 0x5 DUP6 DUP2 SLOAD DUP2 LT PUSH2 0x1272 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP JUMPDEST DUP1 PUSH2 0x12CD JUMPI PUSH1 0x5 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x12B3 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x12CF JUMP JUMPDEST DUP2 JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH32 0x95895A6AB1DF54420D241B55243258A33E61B2194DB66C1179EC521AAE8E1865 DUP6 DUP5 PUSH1 0x40 MLOAD PUSH2 0x130A SWAP3 SWAP2 SWAP1 PUSH2 0x2A3A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x132F PUSH2 0x2115 JUMP JUMPDEST PUSH2 0x1338 DUP5 PUSH2 0xE41 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD SWAP2 SWAP3 POP SWAP1 PUSH2 0x136A SWAP1 DUP6 PUSH2 0x1F5B JUMP JUMPDEST DUP2 SSTORE DUP2 MLOAD PUSH2 0x13A1 SWAP1 PUSH5 0xE8D4A51000 SWAP1 PUSH2 0x138D SWAP1 DUP8 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x1D19 JUMP JUMPDEST DUP2 PUSH2 0x1394 JUMPI INVALID JUMPDEST PUSH1 0x1 DUP5 ADD SLOAD SWAP2 SWAP1 DIV PUSH2 0x1F7E JUMP JUMPDEST DUP2 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x5 DUP7 DUP2 SLOAD DUP2 LT PUSH2 0x13B8 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 ISZERO PUSH2 0x143E JUMPI DUP2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x51EC199 PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xA3D83320 SWAP2 PUSH2 0x140B SWAP2 DUP11 SWAP2 DUP10 SWAP2 DUP3 SWAP2 PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x2A0B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1425 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1439 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x146E CALLER ADDRESS DUP8 PUSH1 0x4 DUP11 DUP2 SLOAD DUP2 LT PUSH2 0x1451 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 SWAP1 PUSH2 0x1FC4 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2D7E648DD130FC184D383E55BB126AC4C9C60E8F94BF05ACDF557BA2D540B47 DUP9 PUSH1 0x40 MLOAD PUSH2 0x7A9 SWAP2 SWAP1 PUSH2 0x2A02 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD DUP3 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1500 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x27CF JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH2 0x150D SWAP1 DUP5 PUSH2 0x1F5B JUMP JUMPDEST PUSH1 0x7 SSTORE PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 DUP2 DUP2 ADD SWAP1 SWAP3 SSTORE PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x5 DUP1 SLOAD SWAP4 DUP5 ADD DUP2 SSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH32 0x36B6384B5ECA791C62761152D0C79BB0604C104A5FB6F4EB0703F3154BB3DB0 SWAP1 SWAP4 ADD DUP1 SLOAD SWAP3 DUP6 AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP2 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x3 SWAP1 PUSH1 0x20 DUP2 ADD PUSH2 0x15BA TIMESTAMP PUSH2 0x1F32 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x15D1 DUP7 PUSH2 0x1F32 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND SWAP1 SWAP2 MSTORE DUP3 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP6 SSTORE PUSH1 0x0 SWAP5 DUP6 MSTORE PUSH1 0x20 SWAP5 DUP6 SWAP1 KECCAK256 DUP5 MLOAD SWAP3 ADD DUP1 SLOAD SWAP6 DUP6 ADD MLOAD PUSH1 0x40 SWAP1 SWAP6 ADD MLOAD DUP5 AND PUSH1 0x1 PUSH1 0xC0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP6 SWAP1 SWAP5 AND PUSH1 0x1 PUSH1 0x80 SHL MUL PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x80 SHL NOT PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP5 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP1 SWAP8 AND SWAP7 SWAP1 SWAP7 OR SWAP3 SWAP1 SWAP3 AND SWAP5 SWAP1 SWAP5 OR SWAP3 SWAP1 SWAP3 AND OR SWAP1 SSTORE PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 SWAP1 DUP6 AND SWAP2 PUSH2 0x1670 SWAP2 PUSH2 0x1DA3 JUMP JUMPDEST PUSH32 0x81EE0F8C5C46E2CB41984886F77A84181724ABB86C32A5F6DE539B07509D45E5 DUP7 PUSH1 0x40 MLOAD PUSH2 0x169F SWAP2 SWAP1 PUSH2 0x2A02 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x5 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x110E JUMPI INVALID JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x16E3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x27CF JUMP JUMPDEST PUSH1 0x8 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0xB11A039948F057594B76E3FA8C4A6479B7F2A19A3FA6D6C44B0A367EB74354C9 SWAP1 PUSH2 0x1718 SWAP1 DUP4 SWAP1 PUSH2 0x2A02 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x172B PUSH2 0x2115 JUMP JUMPDEST PUSH2 0x1734 DUP5 PUSH2 0xE41 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP3 MLOAD DUP2 SLOAD SWAP4 SWAP5 POP SWAP1 SWAP3 PUSH5 0xE8D4A51000 SWAP2 PUSH2 0x1770 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x1D19 JUMP JUMPDEST DUP2 PUSH2 0x1777 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 PUSH2 0x1796 PUSH2 0x874 DUP5 PUSH1 0x1 ADD SLOAD DUP5 PUSH2 0x1D56 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x17D1 PUSH5 0xE8D4A51000 PUSH2 0x17C1 DUP7 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP10 PUSH2 0x1D19 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH2 0x17C8 JUMPI INVALID JUMPDEST DUP5 SWAP2 SWAP1 DIV PUSH2 0x1D56 JUMP JUMPDEST PUSH1 0x1 DUP5 ADD SSTORE DUP3 SLOAD PUSH2 0x17E2 SWAP1 DUP8 PUSH2 0x1DA3 JUMP JUMPDEST DUP4 SSTORE PUSH2 0x1818 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP7 DUP4 PUSH2 0x1DC6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x5 DUP9 DUP2 SLOAD DUP2 LT PUSH2 0x1827 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 ISZERO PUSH2 0x18AC JUMPI DUP4 SLOAD PUSH1 0x40 MLOAD PUSH4 0x51EC199 PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xA3D83320 SWAP2 PUSH2 0x1879 SWAP2 DUP13 SWAP2 CALLER SWAP2 DUP13 SWAP2 DUP10 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x2A0B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1893 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x18A7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x18BE DUP7 DUP9 PUSH1 0x4 DUP12 DUP2 SLOAD DUP2 LT PUSH2 0x749 JUMPI INVALID JUMPDEST DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8166BF25F8A2B7ED3C85049207DA4358D16EDBED977D23FA2EE6F0DDE3EC2132 DUP11 PUSH1 0x40 MLOAD PUSH2 0x1902 SWAP2 SWAP1 PUSH2 0x2A02 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 DUP8 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x71BAB65CED2E5750775A0613BE067DF48EF06CF92A496EBF7663AE0660924954 DUP5 PUSH1 0x40 MLOAD PUSH2 0x1944 SWAP2 SWAP1 PUSH2 0x2A02 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP1 ISZERO PUSH2 0x196F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1999 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP2 POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP1 ISZERO PUSH2 0x19B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x19E6 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x19D1 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x1ADD JUMPI PUSH1 0x0 PUSH1 0x60 ADDRESS DUP9 DUP9 DUP6 DUP2 DUP2 LT PUSH2 0x1A05 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1A17 SWAP2 SWAP1 PUSH2 0x2A82 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A25 SWAP3 SWAP2 SWAP1 PUSH2 0x24FB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1A60 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1A65 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 PUSH2 0x1A74 JUMPI POP DUP6 ISZERO JUMPDEST PUSH2 0x1A7D DUP3 PUSH2 0x20B5 JUMP JUMPDEST SWAP1 PUSH2 0x1A9B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP2 SWAP1 PUSH2 0x2653 JUMP JUMPDEST POP DUP2 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1AA9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 ISZERO ISZERO SWAP1 DUP2 ISZERO ISZERO DUP2 MSTORE POP POP DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1AC8 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0x19EC JUMP JUMPDEST POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B29 PUSH2 0x2115 JUMP JUMPDEST PUSH1 0x3 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1B36 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE SWAP2 SWAP1 SWAP4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP4 DIV DUP2 AND DUP5 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 SWAP3 DIV SWAP1 SWAP2 AND DUP3 DUP6 ADD MSTORE DUP9 DUP6 MSTORE PUSH1 0x6 DUP4 MSTORE DUP4 DUP6 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP7 MSTORE SWAP1 SWAP3 MSTORE SWAP2 DUP4 KECCAK256 DUP3 MLOAD PUSH1 0x4 DUP1 SLOAD SWAP5 SWAP7 POP SWAP2 SWAP5 SWAP3 AND SWAP3 DUP9 SWAP1 DUP2 LT PUSH2 0x1BB4 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x1BED SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x2527 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1C19 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1C3D SWAP2 SWAP1 PUSH2 0x23DC JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND TIMESTAMP GT DUP1 ISZERO PUSH2 0x1C5A JUMPI POP DUP1 ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x1CE0 JUMPI PUSH1 0x0 PUSH2 0x1C81 DUP6 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND TIMESTAMP PUSH2 0x1DA3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x7 SLOAD PUSH2 0x1CAE DUP8 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH2 0xF98 PUSH1 0x8 SLOAD DUP7 PUSH2 0x1D19 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH2 0x1CB5 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x1CDB DUP4 PUSH2 0x1CCB DUP4 PUSH5 0xE8D4A51000 PUSH2 0x1D19 JUMP JUMPDEST DUP2 PUSH2 0x1CD2 JUMPI INVALID JUMPDEST DUP7 SWAP2 SWAP1 DIV PUSH2 0x1F5B JUMP JUMPDEST SWAP4 POP POP POP JUMPDEST PUSH1 0x1 DUP4 ADD SLOAD DUP4 SLOAD PUSH2 0x1D0E SWAP2 PUSH2 0x874 SWAP2 PUSH5 0xE8D4A51000 SWAP1 PUSH2 0x1D00 SWAP1 DUP8 PUSH2 0x1D19 JUMP JUMPDEST DUP2 PUSH2 0x1D07 JUMPI INVALID JUMPDEST DIV SWAP1 PUSH2 0x1D56 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0x1D34 JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0x1D31 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x1D50 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x2920 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 SUB DUP2 DUP4 SLT DUP1 ISZERO SWAP1 PUSH2 0x1D6B JUMPI POP DUP4 DUP2 SGT ISZERO JUMPDEST DUP1 PUSH2 0x1D80 JUMPI POP PUSH1 0x0 DUP4 SLT DUP1 ISZERO PUSH2 0x1D80 JUMPI POP DUP4 DUP2 SGT JUMPDEST PUSH2 0x1D9C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x28A7 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x1D50 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x2666 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1DEC SWAP3 SWAP2 SWAP1 PUSH2 0x25A0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH2 0x1E25 SWAP2 SWAP1 PUSH2 0x250B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1E62 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1E67 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x1E91 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x1E91 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1E91 SWAP2 SWAP1 PUSH2 0x224F JUMP JUMPDEST PUSH2 0x1EAD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x26BA JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 SLT ISZERO PUSH2 0x1ED6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x2695 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 GT ISZERO PUSH2 0x1ED6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x2761 JUMP JUMPDEST DUP2 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP4 AND SWAP1 DUP3 AND LT ISZERO PUSH2 0x1D50 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x2798 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x1ED6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x2870 JUMP JUMPDEST DUP2 DUP2 ADD DUP2 DUP2 LT ISZERO PUSH2 0x1D50 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x2798 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP2 DUP4 SLT DUP1 ISZERO SWAP1 PUSH2 0x1F93 JUMPI POP DUP4 DUP2 SLT ISZERO JUMPDEST DUP1 PUSH2 0x1FA8 JUMPI POP PUSH1 0x0 DUP4 SLT DUP1 ISZERO PUSH2 0x1FA8 JUMPI POP DUP4 DUP2 SLT JUMPDEST PUSH2 0x1D9C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x26F1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x23B872DD DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1FEC SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x253B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH2 0x2025 SWAP2 SWAP1 PUSH2 0x250B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2062 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2067 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x2091 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x2091 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2091 SWAP2 SWAP1 PUSH2 0x224F JUMP JUMPDEST PUSH2 0x20AD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x28EB JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x44 DUP3 MLOAD LT ISZERO PUSH2 0x20FB JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1D DUP2 MSTORE PUSH32 0x5472616E73616374696F6E2072657665727465642073696C656E746C79000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x10C6 JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SWAP2 POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1D50 SWAP2 SWAP1 PUSH2 0x232A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x2146 JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x215C JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x2176 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2191 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x219C DUP2 PUSH2 0x2AF2 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x21AC DUP2 PUSH2 0x2B0A JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x21BC DUP2 PUSH2 0x2B0A JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x21DB JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x21F0 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x21FC DUP7 DUP3 DUP8 ADD PUSH2 0x2135 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x21BC DUP2 PUSH2 0x2B0A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2222 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2237 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x2243 DUP6 DUP3 DUP7 ADD PUSH2 0x2135 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2260 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1D9C DUP2 PUSH2 0x2B0A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x227C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1D9C DUP2 PUSH2 0x2AF2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x22A3 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x22AE DUP2 PUSH2 0x2AF2 JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH2 0x22BE DUP2 PUSH2 0x2AF2 JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH2 0x22CE DUP2 PUSH2 0x2AF2 JUMP JUMPDEST SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD SWAP4 POP PUSH1 0xA0 DUP10 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x22F1 JUMPI DUP4 DUP5 REVERT JUMPDEST SWAP8 SWAP11 SWAP7 SWAP10 POP SWAP5 SWAP8 SWAP4 SWAP7 SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0xC0 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xE0 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x231F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1D9C DUP2 PUSH2 0x2AF2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x233B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x2351 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2364 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x2372 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x20 ADD DUP4 DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2392 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD PUSH1 0x20 ADD DUP8 LT ISZERO PUSH2 0x23A9 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x23BA DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x2AC6 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x23D5 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x23ED JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2406 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2418 DUP2 PUSH2 0x2AF2 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2437 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x2449 DUP2 PUSH2 0x2AF2 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x21BC DUP2 PUSH2 0x2AF2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x246D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x21BC DUP2 PUSH2 0x2AF2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x249B JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0x24B4 DUP2 PUSH2 0x2AF2 JUMP JUMPDEST SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x24C4 DUP2 PUSH2 0x2B0A JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x24E7 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2AC6 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 DUP4 CALLDATACOPY SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x251D DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2AC6 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND DUP2 MSTORE SWAP6 SWAP1 SWAP7 AND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP4 MLOAD SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x20 SWAP1 PUSH1 0x60 DUP5 ADD SWAP1 DUP3 DUP8 ADD DUP5 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x25F4 JUMPI DUP2 MLOAD ISZERO ISZERO DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x25D6 JUMP JUMPDEST POP POP POP DUP4 DUP2 SUB DUP3 DUP6 ADD MSTORE DUP1 DUP6 MLOAD PUSH2 0x260B DUP2 DUP5 PUSH2 0x2A02 JUMP JUMPDEST SWAP2 POP DUP2 SWAP3 POP DUP4 DUP2 MUL DUP3 ADD DUP5 DUP9 ADD DUP7 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2644 JUMPI DUP6 DUP4 SUB DUP6 MSTORE PUSH2 0x2632 DUP4 DUP4 MLOAD PUSH2 0x24CF JUMP JUMPDEST SWAP5 DUP8 ADD SWAP5 SWAP3 POP SWAP1 DUP7 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x261A JUMP JUMPDEST POP SWAP1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x1D9C PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x24CF JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH21 0x426F72696E674D6174683A20556E646572666C6F77 PUSH1 0x58 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xB SWAP1 DUP3 ADD MSTORE PUSH11 0x496E7465676572203C203 PUSH1 0xAC SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1C SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E6745524332303A205472616E73666572206661696C656400000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x21 SWAP1 DUP3 ADD MSTORE PUSH32 0x5369676E6564536166654D6174683A206164646974696F6E206F766572666C6F PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH21 0x4F776E61626C653A207A65726F2061646472657373 PUSH1 0x58 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1C SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A2075696E74313238204F766572666C6F7700000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x18 SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A20416464204F766572666C6F770000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1C SWAP1 DUP3 ADD MSTORE PUSH32 0x476F6C644D696E657256323A206E6F206D69677261746F722073657400000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C657220213D2070656E64696E67206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A2075696E743634204F766572666C6F770000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x5369676E6564536166654D6174683A207375627472616374696F6E206F766572 PUSH1 0x40 DUP3 ADD MSTORE PUSH4 0x666C6F77 PUSH1 0xE0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x426F72696E6745524332303A205472616E7366657246726F6D206661696C6564 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x18 SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A204D756C204F766572666C6F770000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x28 SWAP1 DUP3 ADD MSTORE PUSH32 0x476F6C644D696E657256323A206D696772617465642062616C616E6365206D75 PUSH1 0x40 DUP3 ADD MSTORE PUSH8 0xE6E840DAC2E8C6D PUSH1 0xC3 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP3 DUP4 ADD MLOAD AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP5 DUP6 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x20 DUP7 ADD MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE ISZERO ISZERO PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x2A98 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x2AB1 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x2176 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2AE1 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2AC9 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x10FB JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x2B07 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x2B07 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP11 CHAINID 0xB1 0xEC PUSH15 0xE8DA2338A32EDA142986664B3ADBE7 0xAD 0xEE PUSH7 0x5CE9EC33120C07 0xED SWAP13 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "1093:12794:6:-:0;;;3525:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;639:5:1;:18;;-1:-1:-1;;;;;;639:18:1;647:10;639:18;;;;;673:44;;647:10;;639:5;673:44;;639:5;;673:44;3574:18:6;;-1:-1:-1;;;;;;3574:18:6;;;1093:12794;;174:291:-1;;303:2;291:9;282:7;278:23;274:32;271:2;;;-1:-1;;309:12;271:2;97:13;;-1:-1;;;;;744:54;;883:49;;873:2;;-1:-1;;936:12;873:2;361:88;265:200;-1:-1;;;265:200::o;:::-;1093:12794:6;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {
                "2140": [
                  {
                    "length": 32,
                    "start": 2197
                  },
                  {
                    "length": 32,
                    "start": 6129
                  },
                  {
                    "length": 32,
                    "start": 6909
                  }
                ]
              },
              "linkReferences": {},
              "object": "6080604052600436106101b75760003560e01c80637cd07e47116100ec578063cac435dc1161008a578063e30c397811610064578063e30c3978146104d5578063ea63f9ff146104ea578063fe4fc140146104ff578063ffb6c9ec14610514576101b7565b8063cac435dc14610474578063d1abb90714610494578063d2423b51146104b4576101b7565b80638dbdbe6d116100c65780638dbdbe6d146103e657806393f1a40b14610406578063ab7de09814610434578063c346253d14610454576101b7565b80637cd07e471461039c57806388bba42f146103b15780638da5cb5b146103d1576101b7565b80632f940c701161015957806351eb05a61161013357806351eb05a61461030257806357a5b58c1461032f57806378ed5d1f1461034f5780637c516e941461037c576101b7565b80632f940c70146102ad578063454b0608146102cd5780634e71e0c8146102ed576101b7565b80631526fe27116101955780631526fe271461022957806317caf6f11461025857806318fccc761461026d57806323cf31181461028d576101b7565b8063078dfbe7146101bc578063081e3eda146101de5780630ad58d2f14610209575b600080fd5b3480156101c857600080fd5b506101dc6101d736600461217d565b610534565b005b3480156101ea57600080fd5b506101f3610623565b6040516102009190612a02565b60405180910390f35b34801561021557600080fd5b506101dc610224366004612459565b610629565b34801561023557600080fd5b506102496102443660046123c4565b6107b9565b604051610200939291906129d8565b34801561026457600080fd5b506101f36107fb565b34801561027957600080fd5b506101dc6102883660046123f4565b610801565b34801561029957600080fd5b506101dc6102a836600461230e565b61099b565b3480156102b957600080fd5b506101dc6102c83660046123f4565b6109e7565b3480156102d957600080fd5b506101dc6102e83660046123c4565b610b08565b3480156102f957600080fd5b506101dc610db4565b34801561030e57600080fd5b5061032261031d3660046123c4565b610e41565b604051610200919061299f565b34801561033b57600080fd5b506101dc61034a366004612210565b6110cb565b34801561035b57600080fd5b5061036f61036a3660046123c4565b611101565b6040516102009190612527565b34801561038857600080fd5b506101dc610397366004612287565b611128565b3480156103a857600080fd5b5061036f61119c565b3480156103bd57600080fd5b506101dc6103cc366004612486565b6111ab565b3480156103dd57600080fd5b5061036f611318565b3480156103f257600080fd5b506101dc610401366004612459565b611327565b34801561041257600080fd5b506104266104213660046123f4565b6114b2565b604051610200929190612a4a565b34801561044057600080fd5b506101dc61044f366004612423565b6114d6565b34801561046057600080fd5b5061036f61046f3660046123c4565b6116ac565b34801561048057600080fd5b506101dc61048f3660046123c4565b6116b9565b3480156104a057600080fd5b506101dc6104af366004612459565b611723565b6104c76104c23660046121c7565b611956565b6040516102009291906125b9565b3480156104e157600080fd5b5061036f611ae6565b3480156104f657600080fd5b506101f3611af5565b34801561050b57600080fd5b5061036f611afb565b34801561052057600080fd5b506101f361052f3660046123f4565b611b1f565b6000546001600160a01b031633146105675760405162461bcd60e51b815260040161055e906127cf565b60405180910390fd5b8115610602576001600160a01b0383161515806105815750805b61059d5760405162461bcd60e51b815260040161055e90612732565b600080546040516001600160a01b03808716939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0385166001600160a01b03199182161790915560018054909116905561061e565b600180546001600160a01b0319166001600160a01b0385161790555b505050565b60035490565b610631612115565b61063a84610e41565b6000858152600660209081526040808320338452909152902081519192509061068c9064e8d4a51000906106789087906001600160801b0316611d19565b8161067f57fe5b6001840154919004611d56565b6001820155805461069d9085611da3565b81556005805460009190879081106106b157fe5b6000918252602090912001546001600160a01b03169050801561073757815460405163051ec19960e51b81526001600160a01b0383169163a3d8332091610704918a9133918a9160009190600401612a0b565b600060405180830381600087803b15801561071e57600080fd5b505af1158015610732573d6000803e3d6000fd5b505050505b61076584866004898154811061074957fe5b6000918252602090912001546001600160a01b03169190611dc6565b836001600160a01b031686336001600160a01b03167f8166bf25f8a2b7ed3c85049207da4358d16edbed977d23fa2ee6f0dde3ec2132886040516107a99190612a02565b60405180910390a4505050505050565b600381815481106107c657fe5b6000918252602090912001546001600160801b03811691506001600160401b03600160801b8204811691600160c01b90041683565b60075481565b610809612115565b61081283610e41565b6000848152600660209081526040808320338452909152812082518154939450909264e8d4a510009161084e91906001600160801b0316611d19565b8161085557fe5b0490506000610879610874846001015484611d5690919063ffffffff16565b611eb4565b60018401839055905080156108bc576108bc6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168683611dc6565b6000600587815481106108cb57fe5b6000918252602090912001546001600160a01b03169050801561095057835460405163051ec19960e51b81526001600160a01b0383169163a3d833209161091d918b9133918c91899190600401612a0b565b600060405180830381600087803b15801561093757600080fd5b505af115801561094b573d6000803e3d6000fd5b505050505b86336001600160a01b03167f71bab65ced2e5750775a0613be067df48ef06cf92a496ebf7663ae06609249548460405161098a9190612a02565b60405180910390a350505050505050565b6000546001600160a01b031633146109c55760405162461bcd60e51b815260040161055e906127cf565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b60008281526006602090815260408083203384529091528120805482825560018201839055600580549293919286908110610a1e57fe5b6000918252602090912001546001600160a01b031690508015610aa35760405163051ec19960e51b81526001600160a01b0382169063a3d8332090610a70908890339089906000908190600401612a0b565b600060405180830381600087803b158015610a8a57600080fd5b505af1158015610a9e573d6000803e3d6000fd5b505050505b610ab584836004888154811061074957fe5b836001600160a01b031685336001600160a01b03167f2cac5e20e1541d836381527a43f651851e302817b71dc8e810284e69210c1c6b85604051610af99190612a02565b60405180910390a45050505050565b6002546001600160a01b0316610b305760405162461bcd60e51b815260040161055e90612804565b600060048281548110610b3f57fe5b60009182526020822001546040516370a0823160e01b81526001600160a01b03909116925082906370a0823190610b7a903090600401612527565b60206040518083038186803b158015610b9257600080fd5b505afa158015610ba6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bca91906123dc565b60025460405163095ea7b360e01b81529192506001600160a01b038085169263095ea7b392610bff92169085906004016125a0565b602060405180830381600087803b158015610c1957600080fd5b505af1158015610c2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c51919061224f565b5060025460405163ce5494bb60e01b81526000916001600160a01b03169063ce5494bb90610c83908690600401612527565b602060405180830381600087803b158015610c9d57600080fd5b505af1158015610cb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd5919061226b565b6040516370a0823160e01b81529091506001600160a01b038216906370a0823190610d04903090600401612527565b60206040518083038186803b158015610d1c57600080fd5b505afa158015610d30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5491906123dc565b8214610d725760405162461bcd60e51b815260040161055e90612957565b8060048581548110610d8057fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050505050565b6001546001600160a01b0316338114610ddf5760405162461bcd60e51b815260040161055e9061283b565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b610e49612115565b60038281548110610e5657fe5b60009182526020918290206040805160608101825292909101546001600160801b03811683526001600160401b03600160801b82048116948401859052600160c01b909104169082015291504211156110c657600060048381548110610eb857fe5b6000918252602090912001546040516370a0823160e01b81526001600160a01b03909116906370a0823190610ef1903090600401612527565b60206040518083038186803b158015610f0957600080fd5b505afa158015610f1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4191906123dc565b90508015610fea576000610f6b83602001516001600160401b031642611da390919063ffffffff16565b90506000600754610f9e85604001516001600160401b0316610f9860085486611d1990919063ffffffff16565b90611d19565b81610fa557fe5b049050610fdc610fcb84610fbe8464e8d4a51000611d19565b81610fc557fe5b04611eda565b85516001600160801b031690611f03565b6001600160801b0316845250505b610ff342611f32565b6001600160401b03166020830152600380548391908590811061101257fe5b6000918252602091829020835191018054848401516040958601516001600160801b03199092166001600160801b039094169390931767ffffffffffffffff60801b1916600160801b6001600160401b0394851602176001600160c01b0316600160c01b93909116929092029190911790558301518351915185927f0fc9545022a542541ad085d091fb09a2ab36fee366a4576ab63714ea907ad353926110bc9290918691612a58565b60405180910390a2505b919050565b8060005b818110156110fb576110f28484838181106110e657fe5b90506020020135610e41565b506001016110cf565b50505050565b6004818154811061110e57fe5b6000918252602090912001546001600160a01b0316905081565b60405163d505accf60e01b81526001600160a01b0389169063d505accf90611160908a908a908a908a908a908a908a9060040161255f565b600060405180830381600087803b15801561117a57600080fd5b505af115801561118e573d6000803e3d6000fd5b505050505050505050505050565b6002546001600160a01b031681565b6000546001600160a01b031633146111d55760405162461bcd60e51b815260040161055e906127cf565b6112148361120e600387815481106111e957fe5b60009182526020909120015460075490600160c01b90046001600160401b0316611da3565b90611f5b565b60075561122083611f32565b6003858154811061122d57fe5b9060005260206000200160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555080156112a157816005858154811061127257fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b806112cd57600584815481106112b357fe5b6000918252602090912001546001600160a01b03166112cf565b815b6001600160a01b0316847f95895a6ab1df54420d241b55243258a33e61b2194db66c1179ec521aae8e1865858460405161130a929190612a3a565b60405180910390a350505050565b6000546001600160a01b031681565b61132f612115565b61133884610e41565b60008581526006602090815260408083206001600160a01b0387168452909152902080549192509061136a9085611f5b565b815581516113a19064e8d4a510009061138d9087906001600160801b0316611d19565b8161139457fe5b6001840154919004611f7e565b81600101819055506000600586815481106113b857fe5b6000918252602090912001546001600160a01b03169050801561143e57815460405163051ec19960e51b81526001600160a01b0383169163a3d833209161140b918a918991829160009190600401612a0b565b600060405180830381600087803b15801561142557600080fd5b505af1158015611439573d6000803e3d6000fd5b505050505b61146e33308760048a8154811061145157fe5b6000918252602090912001546001600160a01b0316929190611fc4565b836001600160a01b031686336001600160a01b03167f02d7e648dd130fc184d383e55bb126ac4c9c60e8f94bf05acdf557ba2d540b47886040516107a99190612a02565b60066020908152600092835260408084209091529082529020805460019091015482565b6000546001600160a01b031633146115005760405162461bcd60e51b815260040161055e906127cf565b60075461150d9084611f5b565b6007556004805460018181019092557f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b038086166001600160a01b03199283161790925560058054938401815560009081527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db09093018054928516929091169190911790556040805160608101909152908152600390602081016115ba42611f32565b6001600160401b031681526020016115d186611f32565b6001600160401b039081169091528254600181810185556000948552602094859020845192018054958501516040909501518416600160c01b026001600160c01b0395909416600160801b0267ffffffffffffffff60801b196001600160801b039094166001600160801b0319909716969096179290921694909417929092161790556004546001600160a01b03808416929085169161167091611da3565b7f81ee0f8c5c46e2cb41984886f77a84181724abb86c32a5f6de539b07509d45e58660405161169f9190612a02565b60405180910390a4505050565b6005818154811061110e57fe5b6000546001600160a01b031633146116e35760405162461bcd60e51b815260040161055e906127cf565b60088190556040517fb11a039948f057594b76e3fa8c4a6479b7f2a19a3fa6d6c44b0a367eb74354c990611718908390612a02565b60405180910390a150565b61172b612115565b61173484610e41565b6000858152600660209081526040808320338452909152812082518154939450909264e8d4a510009161177091906001600160801b0316611d19565b8161177757fe5b0490506000611796610874846001015484611d5690919063ffffffff16565b90506117d164e8d4a510006117c186600001516001600160801b031689611d1990919063ffffffff16565b816117c857fe5b84919004611d56565b600184015582546117e29087611da3565b83556118186001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168683611dc6565b60006005888154811061182757fe5b6000918252602090912001546001600160a01b0316905080156118ac57835460405163051ec19960e51b81526001600160a01b0383169163a3d8332091611879918c9133918c91899190600401612a0b565b600060405180830381600087803b15801561189357600080fd5b505af11580156118a7573d6000803e3d6000fd5b505050505b6118be868860048b8154811061074957fe5b856001600160a01b031688336001600160a01b03167f8166bf25f8a2b7ed3c85049207da4358d16edbed977d23fa2ee6f0dde3ec21328a6040516119029190612a02565b60405180910390a487336001600160a01b03167f71bab65ced2e5750775a0613be067df48ef06cf92a496ebf7663ae0660924954846040516119449190612a02565b60405180910390a35050505050505050565b606080836001600160401b038111801561196f57600080fd5b50604051908082528060200260200182016040528015611999578160200160208202803683370190505b509150836001600160401b03811180156119b257600080fd5b506040519080825280602002602001820160405280156119e657816020015b60608152602001906001900390816119d15790505b50905060005b84811015611add576000606030888885818110611a0557fe5b9050602002810190611a179190612a82565b604051611a259291906124fb565b600060405180830381855af49150503d8060008114611a60576040519150601f19603f3d011682016040523d82523d6000602084013e611a65565b606091505b50915091508180611a74575085155b611a7d826120b5565b90611a9b5760405162461bcd60e51b815260040161055e9190612653565b5081858481518110611aa957fe5b60200260200101901515908115158152505080848481518110611ac857fe5b602090810291909101015250506001016119ec565b50935093915050565b6001546001600160a01b031681565b60085481565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000611b29612115565b60038481548110611b3657fe5b600091825260208083206040805160608101825291909301546001600160801b0380821683526001600160401b03600160801b8304811684860152600160c01b90920490911682850152888552600683528385206001600160a01b0389168652909252918320825160048054949650919492169288908110611bb457fe5b6000918252602090912001546040516370a0823160e01b81526001600160a01b03909116906370a0823190611bed903090600401612527565b60206040518083038186803b158015611c0557600080fd5b505afa158015611c19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c3d91906123dc565b905083602001516001600160401b031642118015611c5a57508015155b15611ce0576000611c8185602001516001600160401b031642611da390919063ffffffff16565b90506000600754611cae87604001516001600160401b0316610f9860085486611d1990919063ffffffff16565b81611cb557fe5b049050611cdb83611ccb8364e8d4a51000611d19565b81611cd257fe5b86919004611f5b565b935050505b60018301548354611d0e916108749164e8d4a5100090611d009087611d19565b81611d0757fe5b0490611d56565b979650505050505050565b6000811580611d3457505080820282828281611d3157fe5b04145b611d505760405162461bcd60e51b815260040161055e90612920565b92915050565b6000818303818312801590611d6b5750838113155b80611d805750600083128015611d8057508381135b611d9c5760405162461bcd60e51b815260040161055e906128a7565b9392505050565b80820382811115611d505760405162461bcd60e51b815260040161055e90612666565b60006060846001600160a01b031663a9059cbb8585604051602401611dec9291906125a0565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050604051611e25919061250b565b6000604051808303816000865af19150503d8060008114611e62576040519150601f19603f3d011682016040523d82523d6000602084013e611e67565b606091505b5091509150818015611e91575080511580611e91575080806020019051810190611e91919061224f565b611ead5760405162461bcd60e51b815260040161055e906126ba565b5050505050565b600080821215611ed65760405162461bcd60e51b815260040161055e90612695565b5090565b60006001600160801b03821115611ed65760405162461bcd60e51b815260040161055e90612761565b8181016001600160801b038083169082161015611d505760405162461bcd60e51b815260040161055e90612798565b60006001600160401b03821115611ed65760405162461bcd60e51b815260040161055e90612870565b81810181811015611d505760405162461bcd60e51b815260040161055e90612798565b6000828201818312801590611f935750838112155b80611fa85750600083128015611fa857508381125b611d9c5760405162461bcd60e51b815260040161055e906126f1565b60006060856001600160a01b03166323b872dd868686604051602401611fec9392919061253b565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050604051612025919061250b565b6000604051808303816000865af19150503d8060008114612062576040519150601f19603f3d011682016040523d82523d6000602084013e612067565b606091505b5091509150818015612091575080511580612091575080806020019051810190612091919061224f565b6120ad5760405162461bcd60e51b815260040161055e906128eb565b505050505050565b60606044825110156120fb575060408051808201909152601d81527f5472616e73616374696f6e2072657665727465642073696c656e746c7900000060208201526110c6565b60048201915081806020019051810190611d50919061232a565b604080516060810182526000808252602082018190529181019190915290565b60008083601f840112612146578182fd5b5081356001600160401b0381111561215c578182fd5b602083019150836020808302850101111561217657600080fd5b9250929050565b600080600060608486031215612191578283fd5b833561219c81612af2565b925060208401356121ac81612b0a565b915060408401356121bc81612b0a565b809150509250925092565b6000806000604084860312156121db578283fd5b83356001600160401b038111156121f0578384fd5b6121fc86828701612135565b90945092505060208401356121bc81612b0a565b60008060208385031215612222578182fd5b82356001600160401b03811115612237578283fd5b61224385828601612135565b90969095509350505050565b600060208284031215612260578081fd5b8151611d9c81612b0a565b60006020828403121561227c578081fd5b8151611d9c81612af2565b600080600080600080600080610100898b0312156122a3578384fd5b88356122ae81612af2565b975060208901356122be81612af2565b965060408901356122ce81612af2565b9550606089013594506080890135935060a089013560ff811681146122f1578384fd5b979a969950949793969295929450505060c08201359160e0013590565b60006020828403121561231f578081fd5b8135611d9c81612af2565b60006020828403121561233b578081fd5b81516001600160401b0380821115612351578283fd5b818401915084601f830112612364578283fd5b815181811115612372578384fd5b604051601f8201601f191681016020018381118282101715612392578586fd5b6040528181528382016020018710156123a9578485fd5b6123ba826020830160208701612ac6565b9695505050505050565b6000602082840312156123d5578081fd5b5035919050565b6000602082840312156123ed578081fd5b5051919050565b60008060408385031215612406578182fd5b82359150602083013561241881612af2565b809150509250929050565b600080600060608486031215612437578081fd5b83359250602084013561244981612af2565b915060408401356121bc81612af2565b60008060006060848603121561246d578081fd5b833592506020840135915060408401356121bc81612af2565b6000806000806080858703121561249b578182fd5b843593506020850135925060408501356124b481612af2565b915060608501356124c481612b0a565b939692955090935050565b600081518084526124e7816020860160208601612ac6565b601f01601f19169290920160200192915050565b6000828483379101908152919050565b6000825161251d818460208701612ac6565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b03929092168252602082015260400190565b604080825283519082018190526000906020906060840190828701845b828110156125f45781511515845292840192908401906001016125d6565b5050508381038285015280855161260b8184612a02565b91508192508381028201848801865b838110156126445785830385526126328383516124cf565b9487019492509086019060010161261a565b50909998505050505050505050565b600060208252611d9c60208301846124cf565b602080825260159082015274426f72696e674d6174683a20556e646572666c6f7760581b604082015260600190565b6020808252600b908201526a0496e7465676572203c20360ac1b604082015260600190565b6020808252601c908201527f426f72696e6745524332303a205472616e73666572206661696c656400000000604082015260600190565b60208082526021908201527f5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252601590820152744f776e61626c653a207a65726f206164647265737360581b604082015260600190565b6020808252601c908201527f426f72696e674d6174683a2075696e74313238204f766572666c6f7700000000604082015260600190565b60208082526018908201527f426f72696e674d6174683a20416464204f766572666c6f770000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601c908201527f476f6c644d696e657256323a206e6f206d69677261746f722073657400000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e6572604082015260600190565b6020808252601b908201527f426f72696e674d6174683a2075696e743634204f766572666c6f770000000000604082015260600190565b60208082526024908201527f5369676e6564536166654d6174683a207375627472616374696f6e206f766572604082015263666c6f7760e01b606082015260800190565b6020808252818101527f426f72696e6745524332303a205472616e7366657246726f6d206661696c6564604082015260600190565b60208082526018908201527f426f72696e674d6174683a204d756c204f766572666c6f770000000000000000604082015260600190565b60208082526028908201527f476f6c644d696e657256323a206d696772617465642062616c616e6365206d756040820152670e6e840dac2e8c6d60c31b606082015260800190565b81516001600160801b031681526020808301516001600160401b0390811691830191909152604092830151169181019190915260600190565b6001600160801b039390931683526001600160401b03918216602084015216604082015260600190565b90815260200190565b9485526001600160a01b0393841660208601529190921660408401526060830191909152608082015260a00190565b9182521515602082015260400190565b918252602082015260400190565b6001600160401b0393909316835260208301919091526001600160801b0316604082015260600190565b6000808335601e19843603018112612a98578283fd5b8301803591506001600160401b03821115612ab1578283fd5b60200191503681900382131561217657600080fd5b60005b83811015612ae1578181015183820152602001612ac9565b838111156110fb5750506000910152565b6001600160a01b0381168114612b0757600080fd5b50565b8015158114612b0757600080fdfea26469706673582212209a46b1ec6ee8da2338a32eda142986664b3adbe7adee665ce9ec33120c07ed9c64736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1B7 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7CD07E47 GT PUSH2 0xEC JUMPI DUP1 PUSH4 0xCAC435DC GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xE30C3978 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xE30C3978 EQ PUSH2 0x4D5 JUMPI DUP1 PUSH4 0xEA63F9FF EQ PUSH2 0x4EA JUMPI DUP1 PUSH4 0xFE4FC140 EQ PUSH2 0x4FF JUMPI DUP1 PUSH4 0xFFB6C9EC EQ PUSH2 0x514 JUMPI PUSH2 0x1B7 JUMP JUMPDEST DUP1 PUSH4 0xCAC435DC EQ PUSH2 0x474 JUMPI DUP1 PUSH4 0xD1ABB907 EQ PUSH2 0x494 JUMPI DUP1 PUSH4 0xD2423B51 EQ PUSH2 0x4B4 JUMPI PUSH2 0x1B7 JUMP JUMPDEST DUP1 PUSH4 0x8DBDBE6D GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x8DBDBE6D EQ PUSH2 0x3E6 JUMPI DUP1 PUSH4 0x93F1A40B EQ PUSH2 0x406 JUMPI DUP1 PUSH4 0xAB7DE098 EQ PUSH2 0x434 JUMPI DUP1 PUSH4 0xC346253D EQ PUSH2 0x454 JUMPI PUSH2 0x1B7 JUMP JUMPDEST DUP1 PUSH4 0x7CD07E47 EQ PUSH2 0x39C JUMPI DUP1 PUSH4 0x88BBA42F EQ PUSH2 0x3B1 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x3D1 JUMPI PUSH2 0x1B7 JUMP JUMPDEST DUP1 PUSH4 0x2F940C70 GT PUSH2 0x159 JUMPI DUP1 PUSH4 0x51EB05A6 GT PUSH2 0x133 JUMPI DUP1 PUSH4 0x51EB05A6 EQ PUSH2 0x302 JUMPI DUP1 PUSH4 0x57A5B58C EQ PUSH2 0x32F JUMPI DUP1 PUSH4 0x78ED5D1F EQ PUSH2 0x34F JUMPI DUP1 PUSH4 0x7C516E94 EQ PUSH2 0x37C JUMPI PUSH2 0x1B7 JUMP JUMPDEST DUP1 PUSH4 0x2F940C70 EQ PUSH2 0x2AD JUMPI DUP1 PUSH4 0x454B0608 EQ PUSH2 0x2CD JUMPI DUP1 PUSH4 0x4E71E0C8 EQ PUSH2 0x2ED JUMPI PUSH2 0x1B7 JUMP JUMPDEST DUP1 PUSH4 0x1526FE27 GT PUSH2 0x195 JUMPI DUP1 PUSH4 0x1526FE27 EQ PUSH2 0x229 JUMPI DUP1 PUSH4 0x17CAF6F1 EQ PUSH2 0x258 JUMPI DUP1 PUSH4 0x18FCCC76 EQ PUSH2 0x26D JUMPI DUP1 PUSH4 0x23CF3118 EQ PUSH2 0x28D JUMPI PUSH2 0x1B7 JUMP JUMPDEST DUP1 PUSH4 0x78DFBE7 EQ PUSH2 0x1BC JUMPI DUP1 PUSH4 0x81E3EDA EQ PUSH2 0x1DE JUMPI DUP1 PUSH4 0xAD58D2F EQ PUSH2 0x209 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x1D7 CALLDATASIZE PUSH1 0x4 PUSH2 0x217D JUMP JUMPDEST PUSH2 0x534 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F3 PUSH2 0x623 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x200 SWAP2 SWAP1 PUSH2 0x2A02 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x215 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x224 CALLDATASIZE PUSH1 0x4 PUSH2 0x2459 JUMP JUMPDEST PUSH2 0x629 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x235 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x249 PUSH2 0x244 CALLDATASIZE PUSH1 0x4 PUSH2 0x23C4 JUMP JUMPDEST PUSH2 0x7B9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x200 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x29D8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x264 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F3 PUSH2 0x7FB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x279 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x288 CALLDATASIZE PUSH1 0x4 PUSH2 0x23F4 JUMP JUMPDEST PUSH2 0x801 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x299 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x2A8 CALLDATASIZE PUSH1 0x4 PUSH2 0x230E JUMP JUMPDEST PUSH2 0x99B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x2C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x23F4 JUMP JUMPDEST PUSH2 0x9E7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x2E8 CALLDATASIZE PUSH1 0x4 PUSH2 0x23C4 JUMP JUMPDEST PUSH2 0xB08 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0xDB4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x30E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x322 PUSH2 0x31D CALLDATASIZE PUSH1 0x4 PUSH2 0x23C4 JUMP JUMPDEST PUSH2 0xE41 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x200 SWAP2 SWAP1 PUSH2 0x299F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x33B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x34A CALLDATASIZE PUSH1 0x4 PUSH2 0x2210 JUMP JUMPDEST PUSH2 0x10CB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x35B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x36F PUSH2 0x36A CALLDATASIZE PUSH1 0x4 PUSH2 0x23C4 JUMP JUMPDEST PUSH2 0x1101 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x200 SWAP2 SWAP1 PUSH2 0x2527 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x388 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x397 CALLDATASIZE PUSH1 0x4 PUSH2 0x2287 JUMP JUMPDEST PUSH2 0x1128 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x36F PUSH2 0x119C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x3CC CALLDATASIZE PUSH1 0x4 PUSH2 0x2486 JUMP JUMPDEST PUSH2 0x11AB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x36F PUSH2 0x1318 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x401 CALLDATASIZE PUSH1 0x4 PUSH2 0x2459 JUMP JUMPDEST PUSH2 0x1327 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x412 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x426 PUSH2 0x421 CALLDATASIZE PUSH1 0x4 PUSH2 0x23F4 JUMP JUMPDEST PUSH2 0x14B2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x200 SWAP3 SWAP2 SWAP1 PUSH2 0x2A4A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x440 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x44F CALLDATASIZE PUSH1 0x4 PUSH2 0x2423 JUMP JUMPDEST PUSH2 0x14D6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x460 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x36F PUSH2 0x46F CALLDATASIZE PUSH1 0x4 PUSH2 0x23C4 JUMP JUMPDEST PUSH2 0x16AC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x480 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x48F CALLDATASIZE PUSH1 0x4 PUSH2 0x23C4 JUMP JUMPDEST PUSH2 0x16B9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x4AF CALLDATASIZE PUSH1 0x4 PUSH2 0x2459 JUMP JUMPDEST PUSH2 0x1723 JUMP JUMPDEST PUSH2 0x4C7 PUSH2 0x4C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x21C7 JUMP JUMPDEST PUSH2 0x1956 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x200 SWAP3 SWAP2 SWAP1 PUSH2 0x25B9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x36F PUSH2 0x1AE6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F3 PUSH2 0x1AF5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x50B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x36F PUSH2 0x1AFB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x520 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F3 PUSH2 0x52F CALLDATASIZE PUSH1 0x4 PUSH2 0x23F4 JUMP JUMPDEST PUSH2 0x1B1F JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x567 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x27CF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 ISZERO PUSH2 0x602 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO ISZERO DUP1 PUSH2 0x581 JUMPI POP DUP1 JUMPDEST PUSH2 0x59D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x2732 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE PUSH2 0x61E JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND OR SWAP1 SSTORE JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x631 PUSH2 0x2115 JUMP JUMPDEST PUSH2 0x63A DUP5 PUSH2 0xE41 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP2 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH2 0x68C SWAP1 PUSH5 0xE8D4A51000 SWAP1 PUSH2 0x678 SWAP1 DUP8 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x1D19 JUMP JUMPDEST DUP2 PUSH2 0x67F JUMPI INVALID JUMPDEST PUSH1 0x1 DUP5 ADD SLOAD SWAP2 SWAP1 DIV PUSH2 0x1D56 JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SSTORE DUP1 SLOAD PUSH2 0x69D SWAP1 DUP6 PUSH2 0x1DA3 JUMP JUMPDEST DUP2 SSTORE PUSH1 0x5 DUP1 SLOAD PUSH1 0x0 SWAP2 SWAP1 DUP8 SWAP1 DUP2 LT PUSH2 0x6B1 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 ISZERO PUSH2 0x737 JUMPI DUP2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x51EC199 PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xA3D83320 SWAP2 PUSH2 0x704 SWAP2 DUP11 SWAP2 CALLER SWAP2 DUP11 SWAP2 PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x2A0B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x71E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x732 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x765 DUP5 DUP7 PUSH1 0x4 DUP10 DUP2 SLOAD DUP2 LT PUSH2 0x749 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 SWAP1 PUSH2 0x1DC6 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8166BF25F8A2B7ED3C85049207DA4358D16EDBED977D23FA2EE6F0DDE3EC2132 DUP9 PUSH1 0x40 MLOAD PUSH2 0x7A9 SWAP2 SWAP1 PUSH2 0x2A02 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x7C6 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP3 DIV DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV AND DUP4 JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x809 PUSH2 0x2115 JUMP JUMPDEST PUSH2 0x812 DUP4 PUSH2 0xE41 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP3 MLOAD DUP2 SLOAD SWAP4 SWAP5 POP SWAP1 SWAP3 PUSH5 0xE8D4A51000 SWAP2 PUSH2 0x84E SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x1D19 JUMP JUMPDEST DUP2 PUSH2 0x855 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 PUSH2 0x879 PUSH2 0x874 DUP5 PUSH1 0x1 ADD SLOAD DUP5 PUSH2 0x1D56 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x1EB4 JUMP JUMPDEST PUSH1 0x1 DUP5 ADD DUP4 SWAP1 SSTORE SWAP1 POP DUP1 ISZERO PUSH2 0x8BC JUMPI PUSH2 0x8BC PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP7 DUP4 PUSH2 0x1DC6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x5 DUP8 DUP2 SLOAD DUP2 LT PUSH2 0x8CB JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 ISZERO PUSH2 0x950 JUMPI DUP4 SLOAD PUSH1 0x40 MLOAD PUSH4 0x51EC199 PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xA3D83320 SWAP2 PUSH2 0x91D SWAP2 DUP12 SWAP2 CALLER SWAP2 DUP13 SWAP2 DUP10 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x2A0B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x937 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x94B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST DUP7 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x71BAB65CED2E5750775A0613BE067DF48EF06CF92A496EBF7663AE0660924954 DUP5 PUSH1 0x40 MLOAD PUSH2 0x98A SWAP2 SWAP1 PUSH2 0x2A02 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x9C5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x27CF JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP3 DUP3 SSTORE PUSH1 0x1 DUP3 ADD DUP4 SWAP1 SSTORE PUSH1 0x5 DUP1 SLOAD SWAP3 SWAP4 SWAP2 SWAP3 DUP7 SWAP1 DUP2 LT PUSH2 0xA1E JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 ISZERO PUSH2 0xAA3 JUMPI PUSH1 0x40 MLOAD PUSH4 0x51EC199 PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0xA3D83320 SWAP1 PUSH2 0xA70 SWAP1 DUP9 SWAP1 CALLER SWAP1 DUP10 SWAP1 PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x2A0B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA9E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0xAB5 DUP5 DUP4 PUSH1 0x4 DUP9 DUP2 SLOAD DUP2 LT PUSH2 0x749 JUMPI INVALID JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2CAC5E20E1541D836381527A43F651851E302817B71DC8E810284E69210C1C6B DUP6 PUSH1 0x40 MLOAD PUSH2 0xAF9 SWAP2 SWAP1 PUSH2 0x2A02 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB30 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x2804 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xB3F JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 KECCAK256 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP3 POP DUP3 SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0xB7A SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x2527 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBA6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xBCA SWAP2 SWAP1 PUSH2 0x23DC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP3 PUSH4 0x95EA7B3 SWAP3 PUSH2 0xBFF SWAP3 AND SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x25A0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC2D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC51 SWAP2 SWAP1 PUSH2 0x224F JUMP JUMPDEST POP PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0xCE5494BB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xCE5494BB SWAP1 PUSH2 0xC83 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x2527 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xCB1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xCD5 SWAP2 SWAP1 PUSH2 0x226B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0xD04 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x2527 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD1C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD30 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD54 SWAP2 SWAP1 PUSH2 0x23DC JUMP JUMPDEST DUP3 EQ PUSH2 0xD72 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x2957 JUMP JUMPDEST DUP1 PUSH1 0x4 DUP6 DUP2 SLOAD DUP2 LT PUSH2 0xD80 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER DUP2 EQ PUSH2 0xDDF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x283B JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xE49 PUSH2 0x2115 JUMP JUMPDEST PUSH1 0x3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xE56 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE SWAP3 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP3 DIV DUP2 AND SWAP5 DUP5 ADD DUP6 SWAP1 MSTORE PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 SWAP2 DIV AND SWAP1 DUP3 ADD MSTORE SWAP2 POP TIMESTAMP GT ISZERO PUSH2 0x10C6 JUMPI PUSH1 0x0 PUSH1 0x4 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0xEB8 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0xEF1 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x2527 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF1D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF41 SWAP2 SWAP1 PUSH2 0x23DC JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0xFEA JUMPI PUSH1 0x0 PUSH2 0xF6B DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND TIMESTAMP PUSH2 0x1DA3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x7 SLOAD PUSH2 0xF9E DUP6 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH2 0xF98 PUSH1 0x8 SLOAD DUP7 PUSH2 0x1D19 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH2 0x1D19 JUMP JUMPDEST DUP2 PUSH2 0xFA5 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0xFDC PUSH2 0xFCB DUP5 PUSH2 0xFBE DUP5 PUSH5 0xE8D4A51000 PUSH2 0x1D19 JUMP JUMPDEST DUP2 PUSH2 0xFC5 JUMPI INVALID JUMPDEST DIV PUSH2 0x1EDA JUMP JUMPDEST DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 PUSH2 0x1F03 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP5 MSTORE POP POP JUMPDEST PUSH2 0xFF3 TIMESTAMP PUSH2 0x1F32 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x3 DUP1 SLOAD DUP4 SWAP2 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0x1012 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP2 DUP3 SWAP1 KECCAK256 DUP4 MLOAD SWAP2 ADD DUP1 SLOAD DUP5 DUP5 ADD MLOAD PUSH1 0x40 SWAP6 DUP7 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x80 SHL NOT AND PUSH1 0x1 PUSH1 0x80 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP5 DUP6 AND MUL OR PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x1 PUSH1 0xC0 SHL SWAP4 SWAP1 SWAP2 AND SWAP3 SWAP1 SWAP3 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP4 ADD MLOAD DUP4 MLOAD SWAP2 MLOAD DUP6 SWAP3 PUSH32 0xFC9545022A542541AD085D091FB09A2AB36FEE366A4576AB63714EA907AD353 SWAP3 PUSH2 0x10BC SWAP3 SWAP1 SWAP2 DUP7 SWAP2 PUSH2 0x2A58 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x10FB JUMPI PUSH2 0x10F2 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x10E6 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0xE41 JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x10CF JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x4 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x110E JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD505ACCF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP1 PUSH4 0xD505ACCF SWAP1 PUSH2 0x1160 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x255F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x117A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x118E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x11D5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x27CF JUMP JUMPDEST PUSH2 0x1214 DUP4 PUSH2 0x120E PUSH1 0x3 DUP8 DUP2 SLOAD DUP2 LT PUSH2 0x11E9 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x7 SLOAD SWAP1 PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH2 0x1DA3 JUMP JUMPDEST SWAP1 PUSH2 0x1F5B JUMP JUMPDEST PUSH1 0x7 SSTORE PUSH2 0x1220 DUP4 PUSH2 0x1F32 JUMP JUMPDEST PUSH1 0x3 DUP6 DUP2 SLOAD DUP2 LT PUSH2 0x122D JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 ADD PUSH1 0x18 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP1 ISZERO PUSH2 0x12A1 JUMPI DUP2 PUSH1 0x5 DUP6 DUP2 SLOAD DUP2 LT PUSH2 0x1272 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP JUMPDEST DUP1 PUSH2 0x12CD JUMPI PUSH1 0x5 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x12B3 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x12CF JUMP JUMPDEST DUP2 JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH32 0x95895A6AB1DF54420D241B55243258A33E61B2194DB66C1179EC521AAE8E1865 DUP6 DUP5 PUSH1 0x40 MLOAD PUSH2 0x130A SWAP3 SWAP2 SWAP1 PUSH2 0x2A3A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x132F PUSH2 0x2115 JUMP JUMPDEST PUSH2 0x1338 DUP5 PUSH2 0xE41 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD SWAP2 SWAP3 POP SWAP1 PUSH2 0x136A SWAP1 DUP6 PUSH2 0x1F5B JUMP JUMPDEST DUP2 SSTORE DUP2 MLOAD PUSH2 0x13A1 SWAP1 PUSH5 0xE8D4A51000 SWAP1 PUSH2 0x138D SWAP1 DUP8 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x1D19 JUMP JUMPDEST DUP2 PUSH2 0x1394 JUMPI INVALID JUMPDEST PUSH1 0x1 DUP5 ADD SLOAD SWAP2 SWAP1 DIV PUSH2 0x1F7E JUMP JUMPDEST DUP2 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x5 DUP7 DUP2 SLOAD DUP2 LT PUSH2 0x13B8 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 ISZERO PUSH2 0x143E JUMPI DUP2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x51EC199 PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xA3D83320 SWAP2 PUSH2 0x140B SWAP2 DUP11 SWAP2 DUP10 SWAP2 DUP3 SWAP2 PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x2A0B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1425 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1439 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x146E CALLER ADDRESS DUP8 PUSH1 0x4 DUP11 DUP2 SLOAD DUP2 LT PUSH2 0x1451 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 SWAP1 PUSH2 0x1FC4 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2D7E648DD130FC184D383E55BB126AC4C9C60E8F94BF05ACDF557BA2D540B47 DUP9 PUSH1 0x40 MLOAD PUSH2 0x7A9 SWAP2 SWAP1 PUSH2 0x2A02 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD DUP3 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1500 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x27CF JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH2 0x150D SWAP1 DUP5 PUSH2 0x1F5B JUMP JUMPDEST PUSH1 0x7 SSTORE PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 DUP2 DUP2 ADD SWAP1 SWAP3 SSTORE PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x5 DUP1 SLOAD SWAP4 DUP5 ADD DUP2 SSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH32 0x36B6384B5ECA791C62761152D0C79BB0604C104A5FB6F4EB0703F3154BB3DB0 SWAP1 SWAP4 ADD DUP1 SLOAD SWAP3 DUP6 AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP2 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x3 SWAP1 PUSH1 0x20 DUP2 ADD PUSH2 0x15BA TIMESTAMP PUSH2 0x1F32 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x15D1 DUP7 PUSH2 0x1F32 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND SWAP1 SWAP2 MSTORE DUP3 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP6 SSTORE PUSH1 0x0 SWAP5 DUP6 MSTORE PUSH1 0x20 SWAP5 DUP6 SWAP1 KECCAK256 DUP5 MLOAD SWAP3 ADD DUP1 SLOAD SWAP6 DUP6 ADD MLOAD PUSH1 0x40 SWAP1 SWAP6 ADD MLOAD DUP5 AND PUSH1 0x1 PUSH1 0xC0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP6 SWAP1 SWAP5 AND PUSH1 0x1 PUSH1 0x80 SHL MUL PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x80 SHL NOT PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP5 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP1 SWAP8 AND SWAP7 SWAP1 SWAP7 OR SWAP3 SWAP1 SWAP3 AND SWAP5 SWAP1 SWAP5 OR SWAP3 SWAP1 SWAP3 AND OR SWAP1 SSTORE PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 SWAP1 DUP6 AND SWAP2 PUSH2 0x1670 SWAP2 PUSH2 0x1DA3 JUMP JUMPDEST PUSH32 0x81EE0F8C5C46E2CB41984886F77A84181724ABB86C32A5F6DE539B07509D45E5 DUP7 PUSH1 0x40 MLOAD PUSH2 0x169F SWAP2 SWAP1 PUSH2 0x2A02 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x5 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x110E JUMPI INVALID JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x16E3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x27CF JUMP JUMPDEST PUSH1 0x8 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0xB11A039948F057594B76E3FA8C4A6479B7F2A19A3FA6D6C44B0A367EB74354C9 SWAP1 PUSH2 0x1718 SWAP1 DUP4 SWAP1 PUSH2 0x2A02 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x172B PUSH2 0x2115 JUMP JUMPDEST PUSH2 0x1734 DUP5 PUSH2 0xE41 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP3 MLOAD DUP2 SLOAD SWAP4 SWAP5 POP SWAP1 SWAP3 PUSH5 0xE8D4A51000 SWAP2 PUSH2 0x1770 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x1D19 JUMP JUMPDEST DUP2 PUSH2 0x1777 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 PUSH2 0x1796 PUSH2 0x874 DUP5 PUSH1 0x1 ADD SLOAD DUP5 PUSH2 0x1D56 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x17D1 PUSH5 0xE8D4A51000 PUSH2 0x17C1 DUP7 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP10 PUSH2 0x1D19 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH2 0x17C8 JUMPI INVALID JUMPDEST DUP5 SWAP2 SWAP1 DIV PUSH2 0x1D56 JUMP JUMPDEST PUSH1 0x1 DUP5 ADD SSTORE DUP3 SLOAD PUSH2 0x17E2 SWAP1 DUP8 PUSH2 0x1DA3 JUMP JUMPDEST DUP4 SSTORE PUSH2 0x1818 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP7 DUP4 PUSH2 0x1DC6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x5 DUP9 DUP2 SLOAD DUP2 LT PUSH2 0x1827 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 ISZERO PUSH2 0x18AC JUMPI DUP4 SLOAD PUSH1 0x40 MLOAD PUSH4 0x51EC199 PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xA3D83320 SWAP2 PUSH2 0x1879 SWAP2 DUP13 SWAP2 CALLER SWAP2 DUP13 SWAP2 DUP10 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x2A0B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1893 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x18A7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x18BE DUP7 DUP9 PUSH1 0x4 DUP12 DUP2 SLOAD DUP2 LT PUSH2 0x749 JUMPI INVALID JUMPDEST DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8166BF25F8A2B7ED3C85049207DA4358D16EDBED977D23FA2EE6F0DDE3EC2132 DUP11 PUSH1 0x40 MLOAD PUSH2 0x1902 SWAP2 SWAP1 PUSH2 0x2A02 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 DUP8 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x71BAB65CED2E5750775A0613BE067DF48EF06CF92A496EBF7663AE0660924954 DUP5 PUSH1 0x40 MLOAD PUSH2 0x1944 SWAP2 SWAP1 PUSH2 0x2A02 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP1 ISZERO PUSH2 0x196F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1999 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP2 POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP1 ISZERO PUSH2 0x19B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x19E6 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x19D1 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x1ADD JUMPI PUSH1 0x0 PUSH1 0x60 ADDRESS DUP9 DUP9 DUP6 DUP2 DUP2 LT PUSH2 0x1A05 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1A17 SWAP2 SWAP1 PUSH2 0x2A82 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A25 SWAP3 SWAP2 SWAP1 PUSH2 0x24FB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1A60 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1A65 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 PUSH2 0x1A74 JUMPI POP DUP6 ISZERO JUMPDEST PUSH2 0x1A7D DUP3 PUSH2 0x20B5 JUMP JUMPDEST SWAP1 PUSH2 0x1A9B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP2 SWAP1 PUSH2 0x2653 JUMP JUMPDEST POP DUP2 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1AA9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 ISZERO ISZERO SWAP1 DUP2 ISZERO ISZERO DUP2 MSTORE POP POP DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1AC8 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0x19EC JUMP JUMPDEST POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B29 PUSH2 0x2115 JUMP JUMPDEST PUSH1 0x3 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1B36 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE SWAP2 SWAP1 SWAP4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP4 DIV DUP2 AND DUP5 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 SWAP3 DIV SWAP1 SWAP2 AND DUP3 DUP6 ADD MSTORE DUP9 DUP6 MSTORE PUSH1 0x6 DUP4 MSTORE DUP4 DUP6 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP7 MSTORE SWAP1 SWAP3 MSTORE SWAP2 DUP4 KECCAK256 DUP3 MLOAD PUSH1 0x4 DUP1 SLOAD SWAP5 SWAP7 POP SWAP2 SWAP5 SWAP3 AND SWAP3 DUP9 SWAP1 DUP2 LT PUSH2 0x1BB4 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x1BED SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x2527 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1C19 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1C3D SWAP2 SWAP1 PUSH2 0x23DC JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND TIMESTAMP GT DUP1 ISZERO PUSH2 0x1C5A JUMPI POP DUP1 ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x1CE0 JUMPI PUSH1 0x0 PUSH2 0x1C81 DUP6 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND TIMESTAMP PUSH2 0x1DA3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x7 SLOAD PUSH2 0x1CAE DUP8 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH2 0xF98 PUSH1 0x8 SLOAD DUP7 PUSH2 0x1D19 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH2 0x1CB5 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x1CDB DUP4 PUSH2 0x1CCB DUP4 PUSH5 0xE8D4A51000 PUSH2 0x1D19 JUMP JUMPDEST DUP2 PUSH2 0x1CD2 JUMPI INVALID JUMPDEST DUP7 SWAP2 SWAP1 DIV PUSH2 0x1F5B JUMP JUMPDEST SWAP4 POP POP POP JUMPDEST PUSH1 0x1 DUP4 ADD SLOAD DUP4 SLOAD PUSH2 0x1D0E SWAP2 PUSH2 0x874 SWAP2 PUSH5 0xE8D4A51000 SWAP1 PUSH2 0x1D00 SWAP1 DUP8 PUSH2 0x1D19 JUMP JUMPDEST DUP2 PUSH2 0x1D07 JUMPI INVALID JUMPDEST DIV SWAP1 PUSH2 0x1D56 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0x1D34 JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0x1D31 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x1D50 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x2920 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 SUB DUP2 DUP4 SLT DUP1 ISZERO SWAP1 PUSH2 0x1D6B JUMPI POP DUP4 DUP2 SGT ISZERO JUMPDEST DUP1 PUSH2 0x1D80 JUMPI POP PUSH1 0x0 DUP4 SLT DUP1 ISZERO PUSH2 0x1D80 JUMPI POP DUP4 DUP2 SGT JUMPDEST PUSH2 0x1D9C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x28A7 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x1D50 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x2666 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1DEC SWAP3 SWAP2 SWAP1 PUSH2 0x25A0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH2 0x1E25 SWAP2 SWAP1 PUSH2 0x250B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1E62 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1E67 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x1E91 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x1E91 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1E91 SWAP2 SWAP1 PUSH2 0x224F JUMP JUMPDEST PUSH2 0x1EAD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x26BA JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 SLT ISZERO PUSH2 0x1ED6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x2695 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 GT ISZERO PUSH2 0x1ED6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x2761 JUMP JUMPDEST DUP2 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP4 AND SWAP1 DUP3 AND LT ISZERO PUSH2 0x1D50 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x2798 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x1ED6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x2870 JUMP JUMPDEST DUP2 DUP2 ADD DUP2 DUP2 LT ISZERO PUSH2 0x1D50 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x2798 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP2 DUP4 SLT DUP1 ISZERO SWAP1 PUSH2 0x1F93 JUMPI POP DUP4 DUP2 SLT ISZERO JUMPDEST DUP1 PUSH2 0x1FA8 JUMPI POP PUSH1 0x0 DUP4 SLT DUP1 ISZERO PUSH2 0x1FA8 JUMPI POP DUP4 DUP2 SLT JUMPDEST PUSH2 0x1D9C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x26F1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x23B872DD DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1FEC SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x253B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH2 0x2025 SWAP2 SWAP1 PUSH2 0x250B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2062 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2067 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x2091 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x2091 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2091 SWAP2 SWAP1 PUSH2 0x224F JUMP JUMPDEST PUSH2 0x20AD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55E SWAP1 PUSH2 0x28EB JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x44 DUP3 MLOAD LT ISZERO PUSH2 0x20FB JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1D DUP2 MSTORE PUSH32 0x5472616E73616374696F6E2072657665727465642073696C656E746C79000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x10C6 JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SWAP2 POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1D50 SWAP2 SWAP1 PUSH2 0x232A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x2146 JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x215C JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x2176 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2191 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x219C DUP2 PUSH2 0x2AF2 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x21AC DUP2 PUSH2 0x2B0A JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x21BC DUP2 PUSH2 0x2B0A JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x21DB JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x21F0 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x21FC DUP7 DUP3 DUP8 ADD PUSH2 0x2135 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x21BC DUP2 PUSH2 0x2B0A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2222 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2237 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x2243 DUP6 DUP3 DUP7 ADD PUSH2 0x2135 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2260 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1D9C DUP2 PUSH2 0x2B0A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x227C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1D9C DUP2 PUSH2 0x2AF2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x22A3 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x22AE DUP2 PUSH2 0x2AF2 JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH2 0x22BE DUP2 PUSH2 0x2AF2 JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH2 0x22CE DUP2 PUSH2 0x2AF2 JUMP JUMPDEST SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD SWAP4 POP PUSH1 0xA0 DUP10 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x22F1 JUMPI DUP4 DUP5 REVERT JUMPDEST SWAP8 SWAP11 SWAP7 SWAP10 POP SWAP5 SWAP8 SWAP4 SWAP7 SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0xC0 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xE0 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x231F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1D9C DUP2 PUSH2 0x2AF2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x233B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x2351 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2364 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x2372 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x20 ADD DUP4 DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2392 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD PUSH1 0x20 ADD DUP8 LT ISZERO PUSH2 0x23A9 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x23BA DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x2AC6 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x23D5 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x23ED JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2406 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2418 DUP2 PUSH2 0x2AF2 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2437 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x2449 DUP2 PUSH2 0x2AF2 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x21BC DUP2 PUSH2 0x2AF2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x246D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x21BC DUP2 PUSH2 0x2AF2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x249B JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0x24B4 DUP2 PUSH2 0x2AF2 JUMP JUMPDEST SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x24C4 DUP2 PUSH2 0x2B0A JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x24E7 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2AC6 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 DUP4 CALLDATACOPY SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x251D DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2AC6 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND DUP2 MSTORE SWAP6 SWAP1 SWAP7 AND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP4 MLOAD SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x20 SWAP1 PUSH1 0x60 DUP5 ADD SWAP1 DUP3 DUP8 ADD DUP5 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x25F4 JUMPI DUP2 MLOAD ISZERO ISZERO DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x25D6 JUMP JUMPDEST POP POP POP DUP4 DUP2 SUB DUP3 DUP6 ADD MSTORE DUP1 DUP6 MLOAD PUSH2 0x260B DUP2 DUP5 PUSH2 0x2A02 JUMP JUMPDEST SWAP2 POP DUP2 SWAP3 POP DUP4 DUP2 MUL DUP3 ADD DUP5 DUP9 ADD DUP7 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2644 JUMPI DUP6 DUP4 SUB DUP6 MSTORE PUSH2 0x2632 DUP4 DUP4 MLOAD PUSH2 0x24CF JUMP JUMPDEST SWAP5 DUP8 ADD SWAP5 SWAP3 POP SWAP1 DUP7 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x261A JUMP JUMPDEST POP SWAP1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x1D9C PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x24CF JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH21 0x426F72696E674D6174683A20556E646572666C6F77 PUSH1 0x58 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xB SWAP1 DUP3 ADD MSTORE PUSH11 0x496E7465676572203C203 PUSH1 0xAC SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1C SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E6745524332303A205472616E73666572206661696C656400000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x21 SWAP1 DUP3 ADD MSTORE PUSH32 0x5369676E6564536166654D6174683A206164646974696F6E206F766572666C6F PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH21 0x4F776E61626C653A207A65726F2061646472657373 PUSH1 0x58 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1C SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A2075696E74313238204F766572666C6F7700000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x18 SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A20416464204F766572666C6F770000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1C SWAP1 DUP3 ADD MSTORE PUSH32 0x476F6C644D696E657256323A206E6F206D69677261746F722073657400000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C657220213D2070656E64696E67206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A2075696E743634204F766572666C6F770000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x5369676E6564536166654D6174683A207375627472616374696F6E206F766572 PUSH1 0x40 DUP3 ADD MSTORE PUSH4 0x666C6F77 PUSH1 0xE0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x426F72696E6745524332303A205472616E7366657246726F6D206661696C6564 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x18 SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A204D756C204F766572666C6F770000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x28 SWAP1 DUP3 ADD MSTORE PUSH32 0x476F6C644D696E657256323A206D696772617465642062616C616E6365206D75 PUSH1 0x40 DUP3 ADD MSTORE PUSH8 0xE6E840DAC2E8C6D PUSH1 0xC3 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP3 DUP4 ADD MLOAD AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP5 DUP6 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x20 DUP7 ADD MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE ISZERO ISZERO PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x2A98 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x2AB1 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x2176 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2AE1 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2AC9 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x10FB JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x2B07 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x2B07 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP11 CHAINID 0xB1 0xEC PUSH15 0xE8DA2338A32EDA142986664B3ADBE7 0xAD 0xEE PUSH7 0x5CE9EC33120C07 0xED SWAP13 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "1093:12794:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;774:472:1;;;;;;;;;;-1:-1:-1;774:472:1;;;;;:::i;:::-;;:::i;:::-;;3655:98:6;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10143:679;;;;;;;;;;-1:-1:-1;10143:679:6;;;;;:::i;:::-;;:::i;2100:26::-;;;;;;;;;;-1:-1:-1;2100:26:6;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;2539:30::-;;;;;;;;;;;;;:::i;10995:836::-;;;;;;;;;;-1:-1:-1;10995:836:6;;;;;:::i;:::-;;:::i;5893:101::-;;;;;;;;;;-1:-1:-1;5893:101:6;;;;;:::i;:::-;;:::i;13319:566::-;;;;;;;;;;-1:-1:-1;13319:566:6;;;;;:::i;:::-;;:::i;6148:472::-;;;;;;;;;;-1:-1:-1;6148:472:6;;;;;:::i;:::-;;:::i;1295:348:1:-;;;;;;;;;;;;;:::i;8219:801:6:-;;;;;;;;;;-1:-1:-1;8219:801:6;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;7852:188::-;;;;;;;;;;-1:-1:-1;7852:188:6;;;;;:::i;:::-;;:::i;2192:23::-;;;;;;;;;;-1:-1:-1;2192:23:6;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2161:246:0:-;;;;;;;;;;-1:-1:-1;2161:246:0;;;;;:::i;:::-;;:::i;2023:30:6:-;;;;;;;;;;;;;:::i;4956:406::-;;;;;;;;;;-1:-1:-1;4956:406:6;;;;;:::i;:::-;;:::i;350:20:1:-;;;;;;;;;;;;;:::i;9257:680:6:-;;;;;;;;;;-1:-1:-1;9257:680:6;;;;;:::i;:::-;;:::i;2374:66::-;;;;;;;;;;-1:-1:-1;2374:66:6;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;4085:485::-;;;;;;;;;;-1:-1:-1;4085:485:6;;;;;:::i;:::-;;:::i;2283:27::-;;;;;;;;;;-1:-1:-1;2283:27:6;;;;;:::i;:::-;;:::i;5558:197::-;;;;;;;;;;-1:-1:-1;5558:197:6;;;;;:::i;:::-;;:::i;12110:1029::-;;;;;;;;;;-1:-1:-1;12110:1029:6;;;;;:::i;:::-;;:::i;1260:554:0:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;397:27:1:-;;;;;;;;;;;;;:::i;2576:34:6:-;;;;;;;;;;;;;:::i;1884:28::-;;;;;;;;;;;;;:::i;6840:834::-;;;;;;;;;;-1:-1:-1;6840:834:6;;;;;:::i;:::-;;:::i;774:472:1:-;1746:5;;-1:-1:-1;;;;;1746:5:1;1732:10;:19;1724:64;;;;-1:-1:-1;;;1724:64:1;;;;;;;:::i;:::-;;;;;;;;;879:6:::1;875:364;;;-1:-1:-1::0;;;;;933:22:1;::::1;::::0;::::1;::::0;:34:::1;;;959:8;933:34;925:68;;;;-1:-1:-1::0;;;925:68:1::1;;;;;;;:::i;:::-;1060:5;::::0;;1039:37:::1;::::0;-1:-1:-1;;;;;1039:37:1;;::::1;::::0;1060:5;::::1;::::0;1039:37:::1;::::0;::::1;1091:5;:16:::0;;-1:-1:-1;;;;;1091:16:1;::::1;-1:-1:-1::0;;;;;;1091:16:1;;::::1;;::::0;;;;1122:25;;;;::::1;::::0;;875:364:::1;;;1204:12;:23:::0;;-1:-1:-1;;;;;;1204:23:1::1;-1:-1:-1::0;;;;;1204:23:1;::::1;;::::0;;875:364:::1;774:472:::0;;;:::o;3655:98:6:-;3731:8;:15;;3655:98::o;10143:679::-;10219:20;;:::i;:::-;10242:15;10253:3;10242:10;:15::i;:::-;10267:21;10291:13;;;:8;:13;;;;;;;;10305:10;10291:25;;;;;;;10402:26;;10219:38;;-1:-1:-1;10291:25:6;10364:88;;2662:4;;10391:38;;:6;;-1:-1:-1;;;;;10391:38:6;:10;:38::i;:::-;:59;;;;;10364:15;;;;;10391:59;;10364:19;:88::i;:::-;10346:15;;;:106;10476:11;;:23;;10492:6;10476:15;:23::i;:::-;10462:37;;10556:8;:13;;10462:11;;10556:8;10565:3;;10556:13;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10556:13:6;;-1:-1:-1;10583:32:6;;10579:128;;10684:11;;10631:65;;-1:-1:-1;;;10631:65:6;;-1:-1:-1;;;;;10631:28:6;;;;;:65;;10660:3;;10665:10;;10677:2;;10681:1;;10684:11;10631:65;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10579:128;10725:37;10751:2;10755:6;10725:7;10733:3;10725:12;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10725:12:6;;:37;:25;:37::i;:::-;10812:2;-1:-1:-1;;;;;10778:37:6;10799:3;10787:10;-1:-1:-1;;;;;10778:37:6;;10804:6;10778:37;;;;;;:::i;:::-;;;;;;;;10143:679;;;;;;:::o;2100:26::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2100:26:6;;;-1:-1:-1;;;;;;;;;2100:26:6;;;;;-1:-1:-1;;;2100:26:6;;;;:::o;2539:30::-;;;;:::o;10995:836::-;11054:20;;:::i;:::-;11077:15;11088:3;11077:10;:15::i;:::-;11102:21;11126:13;;;:8;:13;;;;;;;;11140:10;11126:25;;;;;;;11215:26;;11199:11;;11054:38;;-1:-1:-1;11126:25:6;;2662:4;;11199:43;;:11;-1:-1:-1;;;;;11199:43:6;:15;:43::i;:::-;:64;;;;;;11161:103;;11274:26;11303:54;:42;11329:4;:15;;;11303:21;:25;;:42;;;;:::i;:::-;:52;:54::i;:::-;11387:15;;;:39;;;11274:83;-1:-1:-1;11465:23:6;;11461:95;;11504:41;-1:-1:-1;;;;;11504:4:6;:17;11522:2;11526:18;11504:17;:41::i;:::-;11574:19;11596:8;11605:3;11596:13;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11596:13:6;;-1:-1:-1;11623:32:6;;11619:146;;11742:11;;11671:83;;-1:-1:-1;;;11671:83:6;;-1:-1:-1;;;;;11671:28:6;;;;;:83;;11701:3;;11706:10;;11718:2;;11722:18;;11742:11;11671:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11619:146;11800:3;11788:10;-1:-1:-1;;;;;11780:44:6;;11805:18;11780:44;;;;;;:::i;:::-;;;;;;;;10995:836;;;;;;;:::o;5893:101::-;1746:5:1;;-1:-1:-1;;;;;1746:5:1;1732:10;:19;1724:64;;;;-1:-1:-1;;;1724:64:1;;;;;;;:::i;:::-;5967:8:6::1;:20:::0;;-1:-1:-1;;;;;;5967:20:6::1;-1:-1:-1::0;;;;;5967:20:6;;;::::1;::::0;;;::::1;::::0;;5893:101::o;13319:566::-;13388:21;13412:13;;;:8;:13;;;;;;;;13426:10;13412:25;;;;;;;13464:11;;13485:15;;;-1:-1:-1;13510:15:6;;:19;;;13562:8;:13;;13412:25;;13464:11;;13421:3;;13562:13;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13562:13:6;;-1:-1:-1;13589:32:6;;13585:118;;13637:55;;-1:-1:-1;;;13637:55:6;;-1:-1:-1;;;;;13637:28:6;;;;;:55;;13666:3;;13671:10;;13683:2;;13687:1;;;;13637:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13585:118;13780:37;13806:2;13810:6;13780:7;13788:3;13780:12;;;;;;;:37;13875:2;-1:-1:-1;;;;;13832:46:6;13862:3;13850:10;-1:-1:-1;;;;;13832:46:6;;13867:6;13832:46;;;;;;:::i;:::-;;;;;;;;13319:566;;;;;:::o;6148:472::-;6212:8;;-1:-1:-1;;;;;6212:8:6;6196:72;;;;-1:-1:-1;;;6196:72:6;;;;;;;:::i;:::-;6278:15;6296:7;6304:4;6296:13;;;;;;;;;;;;;;;;;6333:33;;-1:-1:-1;;;6333:33:6;;-1:-1:-1;;;;;6296:13:6;;;;-1:-1:-1;6296:13:6;;6333:18;;:33;;6360:4;;6333:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6401:8;;6376:40;;-1:-1:-1;;;6376:40:6;;6319:47;;-1:-1:-1;;;;;;6376:16:6;;;;;;:40;;6401:8;;6319:47;;6376:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6446:8:6;;:26;;-1:-1:-1;;;6446:26:6;;6426:17;;-1:-1:-1;;;;;6446:8:6;;:16;;:26;;6463:8;;6446:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6497:35;;-1:-1:-1;;;6497:35:6;;6426:46;;-1:-1:-1;;;;;;6497:20:6;;;;;:35;;6526:4;;6497:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6490:3;:42;6482:95;;;;-1:-1:-1;;;6482:95:6;;;;;;;:::i;:::-;6603:10;6587:7;6595:4;6587:13;;;;;;;;;;;;;;;;:26;;;;;-1:-1:-1;;;;;6587:26:6;;;;;-1:-1:-1;;;;;6587:26:6;;;;;;6148:472;;;;:::o;1295:348:1:-;1363:12;;-1:-1:-1;;;;;1363:12:1;1423:10;:27;;1415:72;;;;-1:-1:-1;;;1415:72:1;;;;;;;:::i;:::-;1546:5;;;1525:42;;-1:-1:-1;;;;;1525:42:1;;;;1546:5;;;1525:42;;;1578:5;:21;;-1:-1:-1;;;;;1578:21:1;;;-1:-1:-1;;;;;;1578:21:1;;;;;;;1610:25;;;;;;;1295:348::o;8219:801:6:-;8268:20;;:::i;:::-;8307:8;8316:3;8307:13;;;;;;;;;;;;;;;;;8300:20;;;;;;;;8307:13;;;;8300:20;-1:-1:-1;;;;;8300:20:6;;;;-1:-1:-1;;;;;;;;8300:20:6;;;;;;;;;;-1:-1:-1;;;8300:20:6;;;;;;;;;-1:-1:-1;8334:15:6;:37;8330:684;;;8387:16;8406:7;8414:3;8406:12;;;;;;;;;;;;;;;;;;:37;;-1:-1:-1;;;8406:37:6;;-1:-1:-1;;;;;8406:12:6;;;;:22;;:37;;8437:4;;8406:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8387:56;-1:-1:-1;8461:12:6;;8457:359;;8493:12;8508:40;8528:4;:19;;;-1:-1:-1;;;;;8508:40:6;:15;:19;;:40;;;;:::i;:::-;8493:55;;8566:24;8646:15;;8593:50;8627:4;:15;;;-1:-1:-1;;;;;8593:50:6;:29;8602:19;;8593:4;:8;;:29;;;;:::i;:::-;:33;;:50::i;:::-;:68;;;;;;;-1:-1:-1;8708:93:6;8739:61;8783:8;8740:40;8593:68;2662:4;8740:20;:40::i;:::-;:51;;;;;;8739:59;:61::i;:::-;8708:26;;-1:-1:-1;;;;;8708:30:6;;;:93::i;:::-;-1:-1:-1;;;;;8679:122:6;;;-1:-1:-1;;8457:359:6;8851:22;:15;:20;:22::i;:::-;-1:-1:-1;;;;;8829:44:6;:19;;;:44;8887:8;:13;;8829:4;;8887:8;8896:3;;8887:13;;;;;;;;;;;;;;;:20;;:13;;:20;;;;;;;;;;;-1:-1:-1;;;;;;8887:20:6;;;-1:-1:-1;;;;;8887:20:6;;;;;;;-1:-1:-1;;;;8887:20:6;-1:-1:-1;;;;;;;;8887:20:6;;;;;-1:-1:-1;;;;;8887:20:6;-1:-1:-1;;;8887:20:6;;;;;;;;;;;;;;8945:19;;;8976:26;;8926:77;;8940:3;;8926:77;;;;8945:19;;8966:8;;8926:77;:::i;:::-;;;;;;;;8330:684;;8219:801;;;:::o;7852:188::-;7935:4;7921:11;7956:78;7980:3;7976:1;:7;7956:78;;;8004:19;8015:4;;8020:1;8015:7;;;;;;;;;;;;;8004:10;:19::i;:::-;-1:-1:-1;7985:3:6;;7956:78;;;;7852:188;;;:::o;2192:23::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2192:23:6;;-1:-1:-1;2192:23:6;:::o;2161:246:0:-;2350:49;;-1:-1:-1;;;2350:49:0;;-1:-1:-1;;;;;2350:12:0;;;;;:49;;2363:4;;2369:2;;2373:6;;2381:8;;2391:1;;2394;;2397;;2350:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2161:246;;;;;;;;:::o;2023:30:6:-;;;-1:-1:-1;;;;;2023:30:6;;:::o;4956:406::-;1746:5:1;;-1:-1:-1;;;;;1746:5:1;1732:10;:19;1724:64;;;;-1:-1:-1;;;1724:64:1;;;;;;;:::i;:::-;5086:63:6::1;5137:11;5086:46;5106:8;5115:4;5106:14;;;;;;;;;::::0;;;::::1;::::0;;;::::1;:25:::0;5086:15:::1;::::0;;-1:-1:-1;;;5106:25:6;::::1;-1:-1:-1::0;;;;;5106:25:6::1;5086:19;:46::i;:::-;:50:::0;::::1;:63::i;:::-;5068:15;:81:::0;5187:18:::1;:11:::0;:16:::1;:18::i;:::-;5159:8;5168:4;5159:14;;;;;;;;;;;;;;;:25;;;:46;;;;;-1:-1:-1::0;;;;;5159:46:6::1;;;;;-1:-1:-1::0;;;;;5159:46:6::1;;;;;;5219:9;5215:46;;;5249:9;5232:8;5241:4;5232:14;;;;;;;;;;;;;;;;:26;;;;;-1:-1:-1::0;;;;;5232:26:6::1;;;;;-1:-1:-1::0;;;;;5232:26:6::1;;;;;;5215:46;5305:9;:38;;5329:8;5338:4;5329:14;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;5329:14:6::1;5305:38;;;5317:9;5305:38;-1:-1:-1::0;;;;;5275:80:6::1;5286:4;5275:80;5292:11;5345:9;5275:80;;;;;;;:::i;:::-;;;;;;;;4956:406:::0;;;;:::o;350:20:1:-;;;-1:-1:-1;;;;;350:20:1;;:::o;9257:680:6:-;9332:20;;:::i;:::-;9355:15;9366:3;9355:10;:15::i;:::-;9380:21;9404:13;;;:8;:13;;;;;;;;-1:-1:-1;;;;;9404:17:6;;;;;;;;;9465:11;;9332:38;;-1:-1:-1;9404:17:6;9465:23;;9481:6;9465:15;:23::i;:::-;9451:37;;9554:26;;9516:88;;2662:4;;9543:38;;:6;;-1:-1:-1;;;;;9543:38:6;:10;:38::i;:::-;:59;;;;;9516:15;;;;;9543:59;;9516:19;:88::i;:::-;9498:4;:15;;:106;;;;9639:19;9661:8;9670:3;9661:13;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9661:13:6;;-1:-1:-1;9688:32:6;;9684:120;;9781:11;;9736:57;;-1:-1:-1;;;9736:57:6;;-1:-1:-1;;;;;9736:28:6;;;;;:57;;9765:3;;9770:2;;;;9778:1;;9781:11;9736:57;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9684:120;9814:64;9844:10;9864:4;9871:6;9814:7;9822:3;9814:12;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9814:12:6;;:64;;:29;:64::i;:::-;9927:2;-1:-1:-1;;;;;9894:36:6;9914:3;9902:10;-1:-1:-1;;;;;9894:36:6;;9919:6;9894:36;;;;;;:::i;2374:66::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4085:485::-;1746:5:1;;-1:-1:-1;;;;;1746:5:1;1732:10;:19;1724:64;;;;-1:-1:-1;;;1724:64:1;;;;;;;:::i;:::-;4201:15:6::1;::::0;:31:::1;::::0;4221:10;4201:19:::1;:31::i;:::-;4183:15;:49:::0;4242:7:::1;:22:::0;;::::1;::::0;;::::1;::::0;;;;::::1;::::0;;-1:-1:-1;;;;;4242:22:6;;::::1;-1:-1:-1::0;;;;;;4242:22:6;;::::1;;::::0;;;4274:8:::1;:24:::0;;;;::::1;::::0;;-1:-1:-1;4274:24:6;;;;;;::::1;::::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;4323:153:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;;4242:22:6::1;4323:153:::0;::::1;4405:22;:15;:20;:22::i;:::-;-1:-1:-1::0;;;;;4323:153:6::1;;;;;4358:17;:10;:15;:17::i;:::-;-1:-1:-1::0;;;;;4323:153:6;;::::1;::::0;;;4309:168;;::::1;::::0;;::::1;::::0;;-1:-1:-1;4309:168:6;;;::::1;::::0;;;;;;;::::1;::::0;;;;::::1;::::0;::::1;::::0;;::::1;::::0;;::::1;-1:-1:-1::0;;;4309:168:6::1;-1:-1:-1::0;;;;;4309:168:6;;;::::1;-1:-1:-1::0;;;4309:168:6::1;-1:-1:-1::0;;;;;;;;;4309:168:6;;::::1;-1:-1:-1::0;;;;;;4309:168:6;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;::::1;;::::0;;4508:7:::1;:14:::0;-1:-1:-1;;;;;4492:71:6;;::::1;::::0;;;::::1;::::0;4508:21:::1;::::0;:18:::1;:21::i;:::-;4492:71;4531:10;4492:71;;;;;;:::i;:::-;;;;;;;;4085:485:::0;;;:::o;2283:27::-;;;;;;;;;;5558:197;1746:5:1;;-1:-1:-1;;;;;1746:5:1;1732:10;:19;1724:64;;;;-1:-1:-1;;;1724:64:1;;;;;;;:::i;:::-;5647:19:6::1;:42:::0;;;5704:44:::1;::::0;::::1;::::0;::::1;::::0;5669:20;;5704:44:::1;:::i;:::-;;;;;;;;5558:197:::0;:::o;12110:1029::-;12196:20;;:::i;:::-;12219:15;12230:3;12219:10;:15::i;:::-;12244:21;12268:13;;;:8;:13;;;;;;;;12282:10;12268:25;;;;;;;12357:26;;12341:11;;12196:38;;-1:-1:-1;12268:25:6;;2662:4;;12341:43;;:11;-1:-1:-1;;;;;12341:43:6;:15;:43::i;:::-;:64;;;;;;12303:103;;12416:26;12445:54;:42;12471:4;:15;;;12445:21;:25;;:42;;;;:::i;:54::-;12416:83;;12547:94;2662:4;12580:38;12591:4;:26;;;-1:-1:-1;;;;;12580:38:6;:6;:10;;:38;;;;:::i;:::-;:59;;;;;12547:21;;12580:59;;12547:25;:94::i;:::-;12529:15;;;:112;12665:11;;:23;;12681:6;12665:15;:23::i;:::-;12651:37;;12731:41;-1:-1:-1;;;;;12731:4:6;:17;12749:2;12753:18;12731:17;:41::i;:::-;12783:19;12805:8;12814:3;12805:13;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12805:13:6;;-1:-1:-1;12832:32:6;;12828:145;;12950:11;;12880:82;;-1:-1:-1;;;12880:82:6;;-1:-1:-1;;;;;12880:28:6;;;;;:82;;12909:3;;12914:10;;12926:2;;12930:18;;12950:11;12880:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12828:145;12983:37;13009:2;13013:6;12983:7;12991:3;12983:12;;;;;;;:37;13070:2;-1:-1:-1;;;;;13036:37:6;13057:3;13045:10;-1:-1:-1;;;;;13036:37:6;;13062:6;13036:37;;;;;;:::i;:::-;;;;;;;;13108:3;13096:10;-1:-1:-1;;;;;13088:44:6;;13113:18;13088:44;;;;;;:::i;:::-;;;;;;;;12110:1029;;;;;;;;:::o;1260:554:0:-;1343:23;;1451:5;-1:-1:-1;;;;;1440:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1440:24:0;-1:-1:-1;1428:36:0;-1:-1:-1;1497:5:0;-1:-1:-1;;;;;1485:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1475:35;;1526:9;1521:286;1541:16;;;1521:286;;;1580:12;1594:19;1625:4;1644:5;;1650:1;1644:8;;;;;;;;;;;;;;;;;;:::i;:::-;1617:36;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1579:74;;;;1676:7;:24;;;;1688:12;1687:13;1676:24;1702:21;1716:6;1702:13;:21::i;:::-;1668:56;;;;;-1:-1:-1;;;1668:56:0;;;;;;;;:::i;:::-;;1754:7;1739:9;1749:1;1739:12;;;;;;;;;;;;;:22;;;;;;;;;;;1789:6;1776:7;1784:1;1776:10;;;;;;;;;;;;;;;;;:19;-1:-1:-1;;1559:3:0;;1521:286;;;;1260:554;;;;;;:::o;397:27:1:-;;;-1:-1:-1;;;;;397:27:1;;:::o;2576:34:6:-;;;;:::o;1884:28::-;;;:::o;6840:834::-;6919:15;6946:20;;:::i;:::-;6969:8;6978:4;6969:14;;;;;;;;;;;;;;;;6946:37;;;;;;;;6969:14;;;;6946:37;-1:-1:-1;;;;;6946:37:6;;;;;-1:-1:-1;;;;;;;;6946:37:6;;;;;;;;-1:-1:-1;;;6946:37:6;;;;;;;;;;7017:14;;;:8;:14;;;;;-1:-1:-1;;;;;7017:21:6;;;;;;;;;;7080:26;;7135:7;:13;;6946:37;;-1:-1:-1;7017:21:6;;7048:58;;;7026:4;;7135:13;;;;;;;;;;;;;;;;:38;;-1:-1:-1;;;7135:38:6;;-1:-1:-1;;;;;7135:13:6;;;;:23;;:38;;7167:4;;7135:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7116:57;;7205:4;:19;;;-1:-1:-1;;;;;7187:37:6;:15;:37;:54;;;;-1:-1:-1;7228:13:6;;;7187:54;7183:365;;;7257:12;7272:40;7292:4;:19;;;-1:-1:-1;;;;;7272:40:6;:15;:19;;:40;;;;:::i;:::-;7257:55;;7326:24;7406:15;;7353:50;7387:4;:15;;;-1:-1:-1;;;;;7353:50:6;:29;7362:19;;7353:4;:8;;:29;;;;:::i;:50::-;:68;;;;;;;-1:-1:-1;7459:78:6;7528:8;7485:40;7353:68;2662:4;7485:20;:40::i;:::-;:51;;;;;7459:21;;7485:51;;7459:25;:78::i;:::-;7435:102;;7183:365;;;7639:15;;;;7574:11;;7567:100;;:88;;2662:4;;7574:38;;7590:21;7574:15;:38::i;:::-;:59;;;;;;;7567:71;:88::i;:100::-;7557:110;6840:834;-1:-1:-1;;;;;;;6840:834:6:o;470:137:4:-;528:9;548:6;;;:28;;-1:-1:-1;;563:5:4;;;575:1;570;563:5;570:1;558:13;;;;;:18;548:28;540:65;;;;-1:-1:-1;;;540:65:4;;;;;;;:::i;:::-;470:137;;;;:::o;1895:213:9:-;1951:6;1980:5;;;2004:6;;;;;;:16;;;2019:1;2014;:6;;2004:16;2003:38;;;;2030:1;2026;:5;:14;;;;;2039:1;2035;:5;2026:14;1995:87;;;;-1:-1:-1;;;1995:87:9;;;;;;;:::i;:::-;2100:1;1895:213;-1:-1:-1;;;1895:213:9:o;342:122:4:-;425:5;;;420:16;;;;412:50;;;;-1:-1:-1;;;412:50:4;;;;;;;:::i;951:304:3:-;1036:12;1050:17;1079:5;-1:-1:-1;;;;;1071:19:3;1114:10;1126:2;1130:6;1091:46;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1091:46:3;;;;;;;;;;;1071:67;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1035:103;;;;1157:7;:57;;;;-1:-1:-1;1169:11:3;;:16;;:44;;;1200:4;1189:24;;;;;;;;;;;;:::i;:::-;1149:98;;;;-1:-1:-1;;;1149:98:3;;;;;;;:::i;:::-;951:304;;;;;:::o;2557:135:9:-;2609:7;2641:1;2636;:6;;2628:30;;;;-1:-1:-1;;;2628:30:9;;;;;;;:::i;:::-;-1:-1:-1;2683:1:9;2557:135::o;613:161:4:-;662:9;-1:-1:-1;;;;;692:16:4;;;684:57;;;;-1:-1:-1;;;684:57:4;;;;;;;:::i;1134:125::-;1217:5;;;-1:-1:-1;;;;;1212:16:4;;;;;;;;1204:53;;;;-1:-1:-1;;;1204:53:4;;;;;;;:::i;780:156::-;828:8;-1:-1:-1;;;;;857:15:4;;;849:55;;;;-1:-1:-1;;;849:55:4;;;;;;;:::i;211:125::-;294:5;;;289:16;;;;281:53;;;;-1:-1:-1;;;281:53:4;;;;;;;:::i;2341:210:9:-;2397:6;2426:5;;;2450:6;;;;;;:16;;;2465:1;2460;:6;;2450:16;2449:38;;;;2476:1;2472;:5;:14;;;;;2485:1;2481;:5;2472:14;2441:84;;;;-1:-1:-1;;;2441:84:9;;;;;;;:::i;1263:332:3:-;1366:12;1380:17;1409:5;-1:-1:-1;;;;;1401:19:3;1444:10;1456:4;1462:2;1466:6;1421:52;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1421:52:3;;;;;;;;;;;1401:73;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1365:109;;;;1493:7;:57;;;;-1:-1:-1;1505:11:3;;:16;;:44;;;1536:4;1525:24;;;;;;;;;;;;:::i;:::-;1485:102;;;;-1:-1:-1;;;1485:102:3;;;;;;;:::i;:::-;1263:332;;;;;;:::o;304:496:0:-;376:13;539:2;518:11;:18;:23;514:67;;;-1:-1:-1;543:38:0;;;;;;;;;;;;;;;;;;;514:67;685:4;672:11;668:22;653:37;;729:11;718:33;;;;;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;158:363::-;;;299:3;292:4;284:6;280:17;276:27;266:2;;-1:-1;;307:12;266:2;-1:-1;337:20;;-1:-1;;;;;366:30;;363:2;;;-1:-1;;399:12;363:2;443:4;435:6;431:17;419:29;;494:3;443:4;;478:6;474:17;435:6;460:32;;457:41;454:2;;;511:1;;501:12;454:2;259:262;;;;;:::o;2864:479::-;;;;2996:2;2984:9;2975:7;2971:23;2967:32;2964:2;;;-1:-1;;3002:12;2964:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;3054:63;-1:-1;3154:2;3190:22;;971:20;996:30;971:20;996:30;:::i;:::-;3162:60;-1:-1;3259:2;3295:22;;971:20;996:30;971:20;996:30;:::i;:::-;3267:60;;;;2958:385;;;;;:::o;3350:538::-;;;;3514:2;3502:9;3493:7;3489:23;3485:32;3482:2;;;-1:-1;;3520:12;3482:2;3578:17;3565:31;-1:-1;;;;;3608:6;3605:30;3602:2;;;-1:-1;;3638:12;3602:2;3676:91;3759:7;3750:6;3739:9;3735:22;3676:91;:::i;:::-;3658:109;;-1:-1;3658:109;-1:-1;;3804:2;3840:22;;971:20;996:30;971:20;996:30;:::i;3895:397::-;;;4034:2;4022:9;4013:7;4009:23;4005:32;4002:2;;;-1:-1;;4040:12;4002:2;4098:17;4085:31;-1:-1;;;;;4128:6;4125:30;4122:2;;;-1:-1;;4158:12;4122:2;4196:80;4268:7;4259:6;4248:9;4244:22;4196:80;:::i;:::-;4178:98;;;;-1:-1;3996:296;-1:-1;;;;3996:296::o;4299:257::-;;4411:2;4399:9;4390:7;4386:23;4382:32;4379:2;;;-1:-1;;4417:12;4379:2;1119:6;1113:13;1131:30;1155:5;1131:30;:::i;4563:291::-;;4692:2;4680:9;4671:7;4667:23;4663:32;4660:2;;;-1:-1;;4698:12;4660:2;1573:6;1567:13;1585:47;1626:5;1585:47;:::i;4861:1145::-;;;;;;;;;5096:3;5084:9;5075:7;5071:23;5067:33;5064:2;;;-1:-1;;5103:12;5064:2;1404:6;1391:20;1416:47;1457:5;1416:47;:::i;:::-;5155:77;-1:-1;5269:2;5308:22;;72:20;97:33;72:20;97:33;:::i;:::-;5277:63;-1:-1;5377:2;5416:22;;72:20;97:33;72:20;97:33;:::i;:::-;5385:63;-1:-1;5485:2;5524:22;;2520:20;;-1:-1;5593:3;5633:22;;2520:20;;-1:-1;5702:3;5740:22;;2796:20;40595:4;40584:16;;43688:33;;43678:2;;-1:-1;;43725:12;43678:2;5058:948;;;;-1:-1;5058:948;;;;;;5711:61;;-1:-1;;;5809:3;5849:22;;1240:20;;5918:3;5958:22;1240:20;;5058:948::o;6013:287::-;;6140:2;6128:9;6119:7;6115:23;6111:32;6108:2;;;-1:-1;;6146:12;6108:2;1747:6;1734:20;1759:56;1809:5;1759:56;:::i;6307:362::-;;6432:2;6420:9;6411:7;6407:23;6403:32;6400:2;;;-1:-1;;6438:12;6400:2;6489:17;6483:24;-1:-1;;;;;6527:18;6519:6;6516:30;6513:2;;;-1:-1;;6549:12;6513:2;6636:6;6625:9;6621:22;;;2114:3;2107:4;2099:6;2095:17;2091:27;2081:2;;-1:-1;;2122:12;2081:2;2162:6;2156:13;6527:18;37230:6;37227:30;37224:2;;;-1:-1;;37260:12;37224:2;36893;36887:9;37333;37314:17;;-1:-1;;37310:33;36919:17;;6432:2;36919:17;36979:34;;;37015:22;;;36976:62;36973:2;;;-1:-1;;37041:12;36973:2;36893;37060:22;2255:21;;;2355:16;;;6432:2;2355:16;2352:25;-1:-1;2349:2;;;-1:-1;;2380:12;2349:2;2400:39;2432:6;6432:2;2331:5;2327:16;6432:2;2297:6;2293:17;2400:39;:::i;:::-;6569:84;6394:275;-1:-1;;;;;;6394:275::o;6676:241::-;;6780:2;6768:9;6759:7;6755:23;6751:32;6748:2;;;-1:-1;;6786:12;6748:2;-1:-1;2520:20;;6742:175;-1:-1;6742:175::o;6924:263::-;;7039:2;7027:9;7018:7;7014:23;7010:32;7007:2;;;-1:-1;;7045:12;7007:2;-1:-1;2668:13;;7001:186;-1:-1;7001:186::o;7194:366::-;;;7315:2;7303:9;7294:7;7290:23;7286:32;7283:2;;;-1:-1;;7321:12;7283:2;2533:6;2520:20;7373:63;;7473:2;7516:9;7512:22;72:20;97:33;124:5;97:33;:::i;:::-;7481:63;;;;7277:283;;;;;:::o;7567:555::-;;;;7737:2;7725:9;7716:7;7712:23;7708:32;7705:2;;;-1:-1;;7743:12;7705:2;2533:6;2520:20;7795:63;;7895:2;7952:9;7948:22;1391:20;1416:47;1457:5;1416:47;:::i;:::-;7903:77;-1:-1;8017:2;8074:22;;1912:20;1937:51;1912:20;1937:51;:::i;8129:491::-;;;;8267:2;8255:9;8246:7;8242:23;8238:32;8235:2;;;-1:-1;;8273:12;8235:2;2533:6;2520:20;8325:63;;8425:2;8468:9;8464:22;2520:20;8433:63;;8533:2;8576:9;8572:22;72:20;97:33;124:5;97:33;:::i;8627:647::-;;;;;8797:3;8785:9;8776:7;8772:23;8768:33;8765:2;;;-1:-1;;8804:12;8765:2;2533:6;2520:20;8856:63;;8956:2;8999:9;8995:22;2520:20;8964:63;;9064:2;9125:9;9121:22;1912:20;1937:51;1982:5;1937:51;:::i;:::-;9072:81;-1:-1;9190:2;9226:22;;971:20;996:30;971:20;996:30;:::i;:::-;8759:515;;;;-1:-1;8759:515;;-1:-1;;8759:515::o;12245:323::-;;12377:5;37845:12;38660:6;38655:3;38648:19;12460:52;12505:6;38697:4;38692:3;38688:14;38697:4;12486:5;12482:16;12460:52;:::i;:::-;37333:9;42622:14;-1:-1;;42618:28;12524:39;;;;38697:4;12524:39;;12325:243;-1:-1;;12325:243::o;20784:291::-;;42205:6;42200:3;42195;42182:30;42243:16;;42236:27;;;42243:16;20928:147;-1:-1;20928:147::o;21082:271::-;;12735:5;37845:12;12846:52;12891:6;12886:3;12879:4;12872:5;12868:16;12846:52;:::i;:::-;12910:16;;;;;21216:137;-1:-1;;21216:137::o;21360:222::-;-1:-1;;;;;40276:54;;;;9869:37;;21487:2;21472:18;;21458:124::o;21589:444::-;-1:-1;;;;;40276:54;;;9869:37;;40276:54;;;;21936:2;21921:18;;9869:37;22019:2;22004:18;;11855:37;;;;21772:2;21757:18;;21743:290::o;22040:884::-;-1:-1;;;;;40276:54;;;9869:37;;40276:54;;;;22496:2;22481:18;;9869:37;22579:2;22564:18;;11855:37;;;;22662:2;22647:18;;11855:37;;;;40595:4;40584:16;22741:3;22726:19;;20737:35;40287:42;22810:19;;11855:37;22909:3;22894:19;;11855:37;;;;22331:3;22316:19;;22302:622::o;22931:333::-;-1:-1;;;;;40276:54;;;;9869:37;;23250:2;23235:18;;11855:37;23086:2;23071:18;;23057:207::o;23271:653::-;23538:2;23552:47;;;37845:12;;23523:18;;;38648:19;;;23271:653;;38697:4;;38688:14;;;;37535;;;23271:653;10336:251;10361:6;10358:1;10355:13;10336:251;;;10422:13;;39562;39555:21;11627:34;;9423:14;;;;38382;;;;10383:1;10376:9;10336:251;;;10340:14;;;23763:9;23757:4;23753:20;38697:4;23737:9;23733:18;23726:48;23788:126;10864:5;37845:12;10883:95;10971:6;10966:3;10883:95;:::i;:::-;10876:102;;;;;38697:4;11035:6;11031:17;11026:3;11022:27;38697:4;11129:5;37535:14;-1:-1;11168:357;11193:6;11190:1;11187:13;11168:357;;;11255:9;11249:4;11245:20;11240:3;11233:33;9571:64;9631:3;11300:6;11294:13;9571:64;:::i;:::-;11504:14;;;;11314:90;-1:-1;38382:14;;;;10383:1;11208:9;11168:357;;;-1:-1;23780:134;;23509:415;-1:-1;;;;;;;;;23509:415::o;24728:310::-;;24875:2;24896:17;24889:47;24950:78;24875:2;24864:9;24860:18;25014:6;24950:78;:::i;25045:416::-;25245:2;25259:47;;;14292:2;25230:18;;;38648:19;-1:-1;;;38688:14;;;14308:44;14371:12;;;25216:245::o;25468:416::-;25668:2;25682:47;;;14622:2;25653:18;;;38648:19;-1:-1;;;38688:14;;;14638:34;14691:12;;;25639:245::o;25891:416::-;26091:2;26105:47;;;14942:2;26076:18;;;38648:19;14978:30;38688:14;;;14958:51;15028:12;;;26062:245::o;26314:416::-;26514:2;26528:47;;;15279:2;26499:18;;;38648:19;15315:34;38688:14;;;15295:55;-1:-1;;;15370:12;;;15363:25;15407:12;;;26485:245::o;26737:416::-;26937:2;26951:47;;;15658:2;26922:18;;;38648:19;-1:-1;;;38688:14;;;15674:44;15737:12;;;26908:245::o;27160:416::-;27360:2;27374:47;;;15988:2;27345:18;;;38648:19;16024:30;38688:14;;;16004:51;16074:12;;;27331:245::o;27583:416::-;27783:2;27797:47;;;16325:2;27768:18;;;38648:19;16361:26;38688:14;;;16341:47;16407:12;;;27754:245::o;28006:416::-;28206:2;28220:47;;;28191:18;;;38648:19;16694:34;38688:14;;;16674:55;16748:12;;;28177:245::o;28429:416::-;28629:2;28643:47;;;16999:2;28614:18;;;38648:19;17035:30;38688:14;;;17015:51;17085:12;;;28600:245::o;28852:416::-;29052:2;29066:47;;;29037:18;;;38648:19;17372:34;38688:14;;;17352:55;17426:12;;;29023:245::o;29275:416::-;29475:2;29489:47;;;17677:2;29460:18;;;38648:19;17713:29;38688:14;;;17693:50;17762:12;;;29446:245::o;29698:416::-;29898:2;29912:47;;;18013:2;29883:18;;;38648:19;18049:34;38688:14;;;18029:55;-1:-1;;;18104:12;;;18097:28;18144:12;;;29869:245::o;30121:416::-;30321:2;30335:47;;;30306:18;;;38648:19;18431:34;38688:14;;;18411:55;18485:12;;;30292:245::o;30544:416::-;30744:2;30758:47;;;18736:2;30729:18;;;38648:19;18772:26;38688:14;;;18752:47;18818:12;;;30715:245::o;30967:416::-;31167:2;31181:47;;;19069:2;31152:18;;;38648:19;19105:34;38688:14;;;19085:55;-1:-1;;;19160:12;;;19153:32;19204:12;;;31138:245::o;31390:326::-;19523:23;;-1:-1;;;;;40156:46;20024:37;;19704:4;19693:16;;;19687:23;-1:-1;;;;;40482:30;;;19762:14;;;20505:36;;;;19862:4;19851:16;;;19845:23;40482:30;19920:14;;;20505:36;;;;31569:2;31554:18;;31540:176::o;31723:436::-;-1:-1;;;;;40156:46;;;;20024:37;;-1:-1;;;;;40482:30;;;32064:2;32049:18;;20505:36;40482:30;32145:2;32130:18;;20505:36;31902:2;31887:18;;31873:286::o;32166:222::-;11855:37;;;32293:2;32278:18;;32264:124::o;32395:716::-;11855:37;;;-1:-1;;;;;40276:54;;;32831:2;32816:18;;9728:58;40276:54;;;;32914:2;32899:18;;9869:37;33005:2;32990:18;;13643:58;;;;33096:3;33081:19;;13643:58;32658:3;32643:19;;32629:482::o;35207:321::-;11855:37;;;39562:13;39555:21;35514:2;35499:18;;11627:34;35356:2;35341:18;;35327:201::o;35535:329::-;11855:37;;;35850:2;35835:18;;11855:37;35688:2;35673:18;;35659:205::o;35871:440::-;-1:-1;;;;;40482:30;;;;20505:36;;36214:2;36199:18;;11855:37;;;;-1:-1;;;;;40156:46;36297:2;36282:18;;20264:50;36052:2;36037:18;;36023:288::o;36318:506::-;;;36453:11;36440:25;36504:48;;36528:8;36512:14;36508:29;36504:48;36484:18;36480:73;36470:2;;-1:-1;;36557:12;36470:2;36584:33;;36638:18;;;-1:-1;;;;;;36665:30;;36662:2;;;-1:-1;;36698:12;36662:2;36543:4;36726:13;;-1:-1;36512:14;36758:38;;;36748:49;;36745:2;;;36810:1;;36800:12;42278:268;42343:1;42350:101;42364:6;42361:1;42358:13;42350:101;;;42431:11;;;42425:18;42412:11;;;42405:39;42386:2;42379:10;42350:101;;;42466:6;42463:1;42460:13;42457:2;;;-1:-1;;42343:1;42513:16;;42506:27;42327:219::o;42659:117::-;-1:-1;;;;;40276:54;;42718:35;;42708:2;;42767:1;;42757:12;42708:2;42702:74;:::o;42783:111::-;42864:5;39562:13;39555:21;42842:5;42839:32;42829:2;;42885:1;;42875:12"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "2217200",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "GOLN()": "infinite",
                "add(uint256,address,address)": "infinite",
                "batch(bytes[],bool)": "infinite",
                "claimOwnership()": "45112",
                "deposit(uint256,uint256,address)": "infinite",
                "emergencyWithdraw(uint256,address)": "infinite",
                "goldnuggetPerSecond()": "1094",
                "harvest(uint256,address)": "infinite",
                "lpToken(uint256)": "2127",
                "massUpdatePools(uint256[])": "infinite",
                "migrate(uint256)": "infinite",
                "migrator()": "1116",
                "owner()": "1160",
                "pendingGoldNugget(uint256,address)": "infinite",
                "pendingOwner()": "1114",
                "permitToken(address,address,address,uint256,uint256,uint8,bytes32,bytes32)": "infinite",
                "poolInfo(uint256)": "2211",
                "poolLength()": "1097",
                "rewarder(uint256)": "2149",
                "set(uint256,uint256,address,bool)": "infinite",
                "setGoldNuggetPerSecond(uint256)": "22210",
                "setMigrator(address)": "22117",
                "totalAllocPoint()": "1096",
                "transferOwnership(address,bool,bool)": "infinite",
                "updatePool(uint256)": "infinite",
                "userInfo(uint256,address)": "2249",
                "withdraw(uint256,uint256,address)": "infinite",
                "withdrawAndHarvest(uint256,uint256,address)": "infinite"
              }
            },
            "methodIdentifiers": {
              "GOLN()": "fe4fc140",
              "add(uint256,address,address)": "ab7de098",
              "batch(bytes[],bool)": "d2423b51",
              "claimOwnership()": "4e71e0c8",
              "deposit(uint256,uint256,address)": "8dbdbe6d",
              "emergencyWithdraw(uint256,address)": "2f940c70",
              "goldnuggetPerSecond()": "ea63f9ff",
              "harvest(uint256,address)": "18fccc76",
              "lpToken(uint256)": "78ed5d1f",
              "massUpdatePools(uint256[])": "57a5b58c",
              "migrate(uint256)": "454b0608",
              "migrator()": "7cd07e47",
              "owner()": "8da5cb5b",
              "pendingGoldNugget(uint256,address)": "ffb6c9ec",
              "pendingOwner()": "e30c3978",
              "permitToken(address,address,address,uint256,uint256,uint8,bytes32,bytes32)": "7c516e94",
              "poolInfo(uint256)": "1526fe27",
              "poolLength()": "081e3eda",
              "rewarder(uint256)": "c346253d",
              "set(uint256,uint256,address,bool)": "88bba42f",
              "setGoldNuggetPerSecond(uint256)": "cac435dc",
              "setMigrator(address)": "23cf3118",
              "totalAllocPoint()": "17caf6f1",
              "transferOwnership(address,bool,bool)": "078dfbe7",
              "updatePool(uint256)": "51eb05a6",
              "userInfo(uint256,address)": "93f1a40b",
              "withdraw(uint256,uint256,address)": "0ad58d2f",
              "withdrawAndHarvest(uint256,uint256,address)": "d1abb907"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"_goldnugget\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"EmergencyWithdraw\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Harvest\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"goldnuggetPerSecond\",\"type\":\"uint256\"}],\"name\":\"LogGoldNuggetPerSecond\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"allocPoint\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"lpToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IRewarder\",\"name\":\"rewarder\",\"type\":\"address\"}],\"name\":\"LogPoolAddition\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"allocPoint\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"contract IRewarder\",\"name\":\"rewarder\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"overwrite\",\"type\":\"bool\"}],\"name\":\"LogSetPool\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"lastRewardTime\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"accGoldNuggetPerShare\",\"type\":\"uint256\"}],\"name\":\"LogUpdatePool\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"GOLN\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"allocPoint\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC20\",\"name\":\"_lpToken\",\"type\":\"address\"},{\"internalType\":\"contract IRewarder\",\"name\":\"_rewarder\",\"type\":\"address\"}],\"name\":\"add\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"calls\",\"type\":\"bytes[]\"},{\"internalType\":\"bool\",\"name\":\"revertOnFail\",\"type\":\"bool\"}],\"name\":\"batch\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"successes\",\"type\":\"bool[]\"},{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"emergencyWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"goldnuggetPerSecond\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"harvest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"lpToken\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"pids\",\"type\":\"uint256[]\"}],\"name\":\"massUpdatePools\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"}],\"name\":\"migrate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"migrator\",\"outputs\":[{\"internalType\":\"contract IMigratorMiner\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"pendingGoldNugget\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"pending\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"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\":\"permitToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"poolInfo\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"accGoldNuggetPerShare\",\"type\":\"uint128\"},{\"internalType\":\"uint64\",\"name\":\"lastRewardTime\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"allocPoint\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"poolLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"pools\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"rewarder\",\"outputs\":[{\"internalType\":\"contract IRewarder\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_allocPoint\",\"type\":\"uint256\"},{\"internalType\":\"contract IRewarder\",\"name\":\"_rewarder\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"overwrite\",\"type\":\"bool\"}],\"name\":\"set\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_goldnuggetPerSecond\",\"type\":\"uint256\"}],\"name\":\"setGoldNuggetPerSecond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IMigratorMiner\",\"name\":\"_migrator\",\"type\":\"address\"}],\"name\":\"setMigrator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalAllocPoint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"direct\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"renounce\",\"type\":\"bool\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"}],\"name\":\"updatePool\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"accGoldNuggetPerShare\",\"type\":\"uint128\"},{\"internalType\":\"uint64\",\"name\":\"lastRewardTime\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"allocPoint\",\"type\":\"uint64\"}],\"internalType\":\"struct MiniMinerV2.PoolInfo\",\"name\":\"pool\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"userInfo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"rewardDebt\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdrawAndHarvest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"add(uint256,address,address)\":{\"params\":{\"_lpToken\":\"Address of the LP ERC-20 token.\",\"_rewarder\":\"Address of the rewarder delegate.\",\"allocPoint\":\"AP of the new pool.\"}},\"constructor\":{\"params\":{\"_goldnugget\":\"The GOLN token contract address.\"}},\"deposit(uint256,uint256,address)\":{\"params\":{\"amount\":\"LP token amount to deposit.\",\"pid\":\"The index of the pool. See `poolInfo`.\",\"to\":\"The receiver of `amount` deposit benefit.\"}},\"emergencyWithdraw(uint256,address)\":{\"params\":{\"pid\":\"The index of the pool. See `poolInfo`.\",\"to\":\"Receiver of the LP tokens.\"}},\"harvest(uint256,address)\":{\"params\":{\"pid\":\"The index of the pool. See `poolInfo`.\",\"to\":\"Receiver of GOLN rewards.\"}},\"massUpdatePools(uint256[])\":{\"params\":{\"pids\":\"Pool IDs of all to be updated. Make sure to update all active pools.\"}},\"migrate(uint256)\":{\"params\":{\"_pid\":\"The index of the pool. See `poolInfo`.\"}},\"pendingGoldNugget(uint256,address)\":{\"params\":{\"_pid\":\"The index of the pool. See `poolInfo`.\",\"_user\":\"Address of user.\"},\"returns\":{\"pending\":\"GOLN reward for a given user.\"}},\"set(uint256,uint256,address,bool)\":{\"params\":{\"_allocPoint\":\"New AP of the pool.\",\"_pid\":\"The index of the pool. See `poolInfo`.\",\"_rewarder\":\"Address of the rewarder delegate.\",\"overwrite\":\"True if _rewarder should be `set`. Otherwise `_rewarder` is ignored.\"}},\"setGoldNuggetPerSecond(uint256)\":{\"params\":{\"_goldnuggetPerSecond\":\"The amount of GoldNugget to be distributed per second.\"}},\"setMigrator(address)\":{\"params\":{\"_migrator\":\"The contract address to set.\"}},\"updatePool(uint256)\":{\"params\":{\"pid\":\"The index of the pool. See `poolInfo`.\"},\"returns\":{\"pool\":\"Returns the pool that was updated.\"}},\"withdraw(uint256,uint256,address)\":{\"params\":{\"amount\":\"LP token amount to withdraw.\",\"pid\":\"The index of the pool. See `poolInfo`.\",\"to\":\"Receiver of the LP tokens.\"}},\"withdrawAndHarvest(uint256,uint256,address)\":{\"params\":{\"amount\":\"LP token amount to withdraw.\",\"pid\":\"The index of the pool. See `poolInfo`.\",\"to\":\"Receiver of the LP tokens and GOLN rewards.\"}}},\"stateVariables\":{\"totalAllocPoint\":{\"details\":\"Total allocation points. Must be the sum of all allocation points in all pools.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"GOLN()\":{\"notice\":\"Address of GOLN contract.\"},\"add(uint256,address,address)\":{\"notice\":\"Add a new LP to the pool. Can only be called by the owner. DO NOT add the same LP token more than once. Rewards will be messed up if you do.\"},\"deposit(uint256,uint256,address)\":{\"notice\":\"Deposit LP tokens to MCV2 for GOLN allocation.\"},\"emergencyWithdraw(uint256,address)\":{\"notice\":\"Withdraw without caring about rewards. EMERGENCY ONLY.\"},\"harvest(uint256,address)\":{\"notice\":\"Harvest proceeds for transaction sender to `to`.\"},\"lpToken(uint256)\":{\"notice\":\"Address of the LP token for each MCV2 pool.\"},\"massUpdatePools(uint256[])\":{\"notice\":\"Update reward variables for all pools. Be careful of gas spending!\"},\"migrate(uint256)\":{\"notice\":\"Migrate LP token to another LP contract through the `migrator` contract.\"},\"pendingGoldNugget(uint256,address)\":{\"notice\":\"View function to see pending GOLN on frontend.\"},\"poolInfo(uint256)\":{\"notice\":\"Info of each MCV2 pool.\"},\"poolLength()\":{\"notice\":\"Returns the number of MCV2 pools.\"},\"rewarder(uint256)\":{\"notice\":\"Address of each `IRewarder` contract in MCV2.\"},\"set(uint256,uint256,address,bool)\":{\"notice\":\"Update the given pool's GOLN allocation point and `IRewarder` contract. Can only be called by the owner.\"},\"setGoldNuggetPerSecond(uint256)\":{\"notice\":\"Sets the goldnugget per second to be distributed. Can only be called by the owner.\"},\"setMigrator(address)\":{\"notice\":\"Set the `migrator` contract. Can only be called by the owner.\"},\"updatePool(uint256)\":{\"notice\":\"Update reward variables of the given pool.\"},\"userInfo(uint256,address)\":{\"notice\":\"Info of each user that stakes LP tokens.\"},\"withdraw(uint256,uint256,address)\":{\"notice\":\"Withdraw LP tokens from MCV2.\"},\"withdrawAndHarvest(uint256,uint256,address)\":{\"notice\":\"Withdraw LP tokens from MCV2 and harvest proceeds for transaction sender to `to`.\"}},\"notice\":\"The (older) GoldMiner contract gives out a constant number of GOLN tokens per block. It is the only address with minting rights for GOLN. The idea for this GoldMiner V2 (MCV2) contract is therefore to be the owner of a dummy token that is deposited into the GoldMiner V1 (MCV1) contract. The allocation point for this pool on MCV1 is the total allocation point for all pools that receive double incentives.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/MiniMinerV2.sol\":\"MiniMinerV2\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@boringcrypto/boring-solidity/contracts/BoringBatchable.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\r\\n// Audit on 5-Jan-2021 by Keno and BoringCrypto\\r\\n\\r\\n// P1 - P3: OK\\r\\npragma solidity 0.6.12;\\r\\npragma experimental ABIEncoderV2;\\r\\n// solhint-disable avoid-low-level-calls\\r\\n\\r\\nimport \\\"./libraries/BoringERC20.sol\\\";\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BaseBoringBatchable {\\r\\n    function _getRevertMsg(bytes memory _returnData) internal pure returns (string memory) {\\r\\n        // If the _res length is less than 68, then the transaction failed silently (without a revert message)\\r\\n        if (_returnData.length < 68) return \\\"Transaction reverted silently\\\";\\r\\n\\r\\n        assembly {\\r\\n            // Slice the sighash.\\r\\n            _returnData := add(_returnData, 0x04)\\r\\n        }\\r\\n        return abi.decode(_returnData, (string)); // All that remains is the revert string\\r\\n    }    \\r\\n    \\r\\n    // F3 - F9: OK\\r\\n    // F1: External is ok here because this is the batch function, adding it to a batch makes no sense\\r\\n    // F2: Calls in the batch may be payable, delegatecall operates in the same context, so each call in the batch has access to msg.value\\r\\n    // C1 - C21: OK\\r\\n    // C3: The length of the loop is fully under user control, so can't be exploited\\r\\n    // C7: Delegatecall is only used on the same contract, so it's safe\\r\\n    function batch(bytes[] calldata calls, bool revertOnFail) external payable returns(bool[] memory successes, bytes[] memory results) {\\r\\n        // Interactions\\r\\n        successes = new bool[](calls.length);\\r\\n        results = new bytes[](calls.length);\\r\\n        for (uint256 i = 0; i < calls.length; i++) {\\r\\n            (bool success, bytes memory result) = address(this).delegatecall(calls[i]);\\r\\n            require(success || !revertOnFail, _getRevertMsg(result));\\r\\n            successes[i] = success;\\r\\n            results[i] = result;\\r\\n        }\\r\\n    }\\r\\n}\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BoringBatchable is BaseBoringBatchable {\\r\\n    // F1 - F9: OK\\r\\n    // F6: Parameters can be used front-run the permit and the user's permit will fail (due to nonce or other revert)\\r\\n    //     if part of a batch this could be used to grief once as the second call would not need the permit\\r\\n    // C1 - C21: OK\\r\\n    function permitToken(IERC20 token, address from, address to, uint256 amount, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {\\r\\n        // Interactions\\r\\n        // X1 - X5\\r\\n        token.permit(from, to, amount, deadline, v, r, s);\\r\\n    }\\r\\n}\",\"keccak256\":\"0xe0b0316b015447ee28c6b7d96c4347b410a66e5d26e922ef3bcccc22f3b4d590\",\"license\":\"UNLICENSED\"},\"@boringcrypto/boring-solidity/contracts/BoringOwnable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\n// Audit on 5-Jan-2021 by Keno and BoringCrypto\\r\\n\\r\\n// P1 - P3: OK\\r\\npragma solidity 0.6.12;\\r\\n\\r\\n// Source: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol + Claimable.sol\\r\\n// Edited by BoringCrypto\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BoringOwnableData {\\r\\n    // V1 - V5: OK\\r\\n    address public owner;\\r\\n    // V1 - V5: OK\\r\\n    address public pendingOwner;\\r\\n}\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BoringOwnable is BoringOwnableData {\\r\\n    // E1: OK\\r\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\r\\n\\r\\n    constructor () public {\\r\\n        owner = msg.sender;\\r\\n        emit OwnershipTransferred(address(0), msg.sender);\\r\\n    }\\r\\n\\r\\n    // F1 - F9: OK\\r\\n    // C1 - C21: OK\\r\\n    function transferOwnership(address newOwner, bool direct, bool renounce) public onlyOwner {\\r\\n        if (direct) {\\r\\n            // Checks\\r\\n            require(newOwner != address(0) || renounce, \\\"Ownable: zero address\\\");\\r\\n\\r\\n            // Effects\\r\\n            emit OwnershipTransferred(owner, newOwner);\\r\\n            owner = newOwner;\\r\\n            pendingOwner = address(0);\\r\\n        } else {\\r\\n            // Effects\\r\\n            pendingOwner = newOwner;\\r\\n        }\\r\\n    }\\r\\n\\r\\n    // F1 - F9: OK\\r\\n    // C1 - C21: OK\\r\\n    function claimOwnership() public {\\r\\n        address _pendingOwner = pendingOwner;\\r\\n        \\r\\n        // Checks\\r\\n        require(msg.sender == _pendingOwner, \\\"Ownable: caller != pending owner\\\");\\r\\n\\r\\n        // Effects\\r\\n        emit OwnershipTransferred(owner, _pendingOwner);\\r\\n        owner = _pendingOwner;\\r\\n        pendingOwner = address(0);\\r\\n    }\\r\\n\\r\\n    // M1 - M5: OK\\r\\n    // C1 - C21: OK\\r\\n    modifier onlyOwner() {\\r\\n        require(msg.sender == owner, \\\"Ownable: caller is not the owner\\\");\\r\\n        _;\\r\\n    }\\r\\n}\",\"keccak256\":\"0xfafb586b248c1c697227f5745397562cfe5be2f04e19fb80fc79fc94e3afaba1\",\"license\":\"MIT\"},\"@boringcrypto/boring-solidity/contracts/interfaces/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity 0.6.12;\\r\\n\\r\\ninterface IERC20 {\\r\\n    function totalSupply() external view returns (uint256);\\r\\n    function balanceOf(address account) external view returns (uint256);\\r\\n    function allowance(address owner, address spender) external view returns (uint256);\\r\\n    function approve(address spender, uint256 amount) external returns (bool);\\r\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\r\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\r\\n\\r\\n    // EIP 2612\\r\\n    function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;\\r\\n}\",\"keccak256\":\"0x8004f86e4536cca55b8eeb2621fe18e1ee57d779396ddef50bce5bf70fb59867\",\"license\":\"MIT\"},\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\r\\npragma solidity 0.6.12;\\r\\n\\r\\nimport \\\"../interfaces/IERC20.sol\\\";\\r\\n\\r\\nlibrary BoringERC20 {\\r\\n    function safeSymbol(IERC20 token) internal view returns(string memory) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x95d89b41));\\r\\n        return success && data.length > 0 ? abi.decode(data, (string)) : \\\"???\\\";\\r\\n    }\\r\\n\\r\\n    function safeName(IERC20 token) internal view returns(string memory) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x06fdde03));\\r\\n        return success && data.length > 0 ? abi.decode(data, (string)) : \\\"???\\\";\\r\\n    }\\r\\n\\r\\n    function safeDecimals(IERC20 token) internal view returns (uint8) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x313ce567));\\r\\n        return success && data.length == 32 ? abi.decode(data, (uint8)) : 18;\\r\\n    }\\r\\n\\r\\n    function safeTransfer(IERC20 token, address to, uint256 amount) internal {\\r\\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0xa9059cbb, to, amount));\\r\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"BoringERC20: Transfer failed\\\");\\r\\n    }\\r\\n\\r\\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 amount) internal {\\r\\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0x23b872dd, from, to, amount));\\r\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"BoringERC20: TransferFrom failed\\\");\\r\\n    }\\r\\n}\",\"keccak256\":\"0x69f1ccf716991e5d6d64dc0e3bc3828fd1990bc18400d680b1aa1960675daaaa\",\"license\":\"UNLICENSED\"},\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity 0.6.12;\\r\\n// a library for performing overflow-safe math, updated with awesomeness from of DappHub (https://github.com/dapphub/ds-math)\\r\\nlibrary BoringMath {\\r\\n    function add(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {require(b == 0 || (c = a * b)/b == a, \\\"BoringMath: Mul Overflow\\\");}\\r\\n    function to128(uint256 a) internal pure returns (uint128 c) {\\r\\n        require(a <= uint128(-1), \\\"BoringMath: uint128 Overflow\\\");\\r\\n        c = uint128(a);\\r\\n    }\\r\\n    function to64(uint256 a) internal pure returns (uint64 c) {\\r\\n        require(a <= uint64(-1), \\\"BoringMath: uint64 Overflow\\\");\\r\\n        c = uint64(a);\\r\\n    }\\r\\n    function to32(uint256 a) internal pure returns (uint32 c) {\\r\\n        require(a <= uint32(-1), \\\"BoringMath: uint32 Overflow\\\");\\r\\n        c = uint32(a);\\r\\n    }\\r\\n}\\r\\n\\r\\nlibrary BoringMath128 {\\r\\n    function add(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\\r\\n\\r\\nlibrary BoringMath64 {\\r\\n    function add(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\\r\\n\\r\\nlibrary BoringMath32 {\\r\\n    function add(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\",\"keccak256\":\"0x2d0e99483c5618251d4b52e8551918253bf044c63e0d09a2f1f652671f9ff762\",\"license\":\"MIT\"},\"contracts/MiniMinerV2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.6.12;\\npragma experimental ABIEncoderV2;\\n\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\\\";\\nimport \\\"@boringcrypto/boring-solidity/contracts/BoringBatchable.sol\\\";\\nimport \\\"@boringcrypto/boring-solidity/contracts/BoringOwnable.sol\\\";\\nimport \\\"./libraries/SignedSafeMath.sol\\\";\\nimport \\\"./interfaces/IRewarder.sol\\\";\\nimport \\\"./interfaces/IGoldMiner.sol\\\";\\n\\ninterface IMigratorMiner {\\n    // Take the current LP token address and return the new LP token address.\\n    // Migrator should have full access to the caller's LP token.\\n    function migrate(IERC20 token) external returns (IERC20);\\n}\\n\\n/// @notice The (older) GoldMiner contract gives out a constant number of GOLN tokens per block.\\n/// It is the only address with minting rights for GOLN.\\n/// The idea for this GoldMiner V2 (MCV2) contract is therefore to be the owner of a dummy token\\n/// that is deposited into the GoldMiner V1 (MCV1) contract.\\n/// The allocation point for this pool on MCV1 is the total allocation point for all pools that receive double incentives.\\ncontract MiniMinerV2 is BoringOwnable, BoringBatchable {\\n    using BoringMath for uint256;\\n    using BoringMath128 for uint128;\\n    using BoringERC20 for IERC20;\\n    using SignedSafeMath for int256;\\n\\n    /// @notice Info of each MCV2 user.\\n    /// `amount` LP token amount the user has provided.\\n    /// `rewardDebt` The amount of GOLN entitled to the user.\\n    struct UserInfo {\\n        uint256 amount;\\n        int256 rewardDebt;\\n    }\\n\\n    /// @notice Info of each MCV2 pool.\\n    /// `allocPoint` The amount of allocation points assigned to the pool.\\n    /// Also known as the amount of GOLN to distribute per block.\\n    struct PoolInfo {\\n        uint128 accGoldNuggetPerShare;\\n        uint64 lastRewardTime;\\n        uint64 allocPoint;\\n    }\\n\\n    /// @notice Address of GOLN contract.\\n    IERC20 public immutable GOLN;\\n    // @notice The migrator contract. It has a lot of power. Can only be set through governance (owner).\\n    IMigratorMiner public migrator;\\n\\n    /// @notice Info of each MCV2 pool.\\n    PoolInfo[] public poolInfo;\\n    /// @notice Address of the LP token for each MCV2 pool.\\n    IERC20[] public lpToken;\\n    /// @notice Address of each `IRewarder` contract in MCV2.\\n    IRewarder[] public rewarder;\\n\\n    /// @notice Info of each user that stakes LP tokens.\\n    mapping (uint256 => mapping (address => UserInfo)) public userInfo;\\n    /// @dev Total allocation points. Must be the sum of all allocation points in all pools.\\n    uint256 public totalAllocPoint;\\n\\n    uint256 public goldnuggetPerSecond;\\n    uint256 private constant ACC_GOLN_PRECISION = 1e12;\\n\\n    event Deposit(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\\n    event Withdraw(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\\n    event EmergencyWithdraw(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\\n    event Harvest(address indexed user, uint256 indexed pid, uint256 amount);\\n    event LogPoolAddition(uint256 indexed pid, uint256 allocPoint, IERC20 indexed lpToken, IRewarder indexed rewarder);\\n    event LogSetPool(uint256 indexed pid, uint256 allocPoint, IRewarder indexed rewarder, bool overwrite);\\n    event LogUpdatePool(uint256 indexed pid, uint64 lastRewardTime, uint256 lpSupply, uint256 accGoldNuggetPerShare);\\n    event LogGoldNuggetPerSecond(uint256 goldnuggetPerSecond);\\n\\n    /// @param _goldnugget The GOLN token contract address.\\n    constructor(IERC20 _goldnugget) public {\\n        GOLN = _goldnugget;\\n    }\\n\\n    /// @notice Returns the number of MCV2 pools.\\n    function poolLength() public view returns (uint256 pools) {\\n        pools = poolInfo.length;\\n    }\\n\\n    /// @notice Add a new LP to the pool. Can only be called by the owner.\\n    /// DO NOT add the same LP token more than once. Rewards will be messed up if you do.\\n    /// @param allocPoint AP of the new pool.\\n    /// @param _lpToken Address of the LP ERC-20 token.\\n    /// @param _rewarder Address of the rewarder delegate.\\n    function add(uint256 allocPoint, IERC20 _lpToken, IRewarder _rewarder) public onlyOwner {\\n        totalAllocPoint = totalAllocPoint.add(allocPoint);\\n        lpToken.push(_lpToken);\\n        rewarder.push(_rewarder);\\n\\n        poolInfo.push(PoolInfo({\\n            allocPoint: allocPoint.to64(),\\n            lastRewardTime: block.timestamp.to64(),\\n            accGoldNuggetPerShare: 0\\n        }));\\n        emit LogPoolAddition(lpToken.length.sub(1), allocPoint, _lpToken, _rewarder);\\n    }\\n\\n    /// @notice Update the given pool's GOLN allocation point and `IRewarder` contract. Can only be called by the owner.\\n    /// @param _pid The index of the pool. See `poolInfo`.\\n    /// @param _allocPoint New AP of the pool.\\n    /// @param _rewarder Address of the rewarder delegate.\\n    /// @param overwrite True if _rewarder should be `set`. Otherwise `_rewarder` is ignored.\\n    function set(uint256 _pid, uint256 _allocPoint, IRewarder _rewarder, bool overwrite) public onlyOwner {\\n        totalAllocPoint = totalAllocPoint.sub(poolInfo[_pid].allocPoint).add(_allocPoint);\\n        poolInfo[_pid].allocPoint = _allocPoint.to64();\\n        if (overwrite) { rewarder[_pid] = _rewarder; }\\n        emit LogSetPool(_pid, _allocPoint, overwrite ? _rewarder : rewarder[_pid], overwrite);\\n    }\\n\\n    /// @notice Sets the goldnugget per second to be distributed. Can only be called by the owner.\\n    /// @param _goldnuggetPerSecond The amount of GoldNugget to be distributed per second.\\n    function setGoldNuggetPerSecond(uint256 _goldnuggetPerSecond) public onlyOwner {\\n        goldnuggetPerSecond = _goldnuggetPerSecond;\\n        emit LogGoldNuggetPerSecond(_goldnuggetPerSecond);\\n    }\\n\\n    /// @notice Set the `migrator` contract. Can only be called by the owner.\\n    /// @param _migrator The contract address to set.\\n    function setMigrator(IMigratorMiner _migrator) public onlyOwner {\\n        migrator = _migrator;\\n    }\\n\\n    /// @notice Migrate LP token to another LP contract through the `migrator` contract.\\n    /// @param _pid The index of the pool. See `poolInfo`.\\n    function migrate(uint256 _pid) public {\\n        require(address(migrator) != address(0), \\\"GoldMinerV2: no migrator set\\\");\\n        IERC20 _lpToken = lpToken[_pid];\\n        uint256 bal = _lpToken.balanceOf(address(this));\\n        _lpToken.approve(address(migrator), bal);\\n        IERC20 newLpToken = migrator.migrate(_lpToken);\\n        require(bal == newLpToken.balanceOf(address(this)), \\\"GoldMinerV2: migrated balance must match\\\");\\n        lpToken[_pid] = newLpToken;\\n    }\\n\\n    /// @notice View function to see pending GOLN on frontend.\\n    /// @param _pid The index of the pool. See `poolInfo`.\\n    /// @param _user Address of user.\\n    /// @return pending GOLN reward for a given user.\\n    function pendingGoldNugget(uint256 _pid, address _user) external view returns (uint256 pending) {\\n        PoolInfo memory pool = poolInfo[_pid];\\n        UserInfo storage user = userInfo[_pid][_user];\\n        uint256 accGoldNuggetPerShare = pool.accGoldNuggetPerShare;\\n        uint256 lpSupply = lpToken[_pid].balanceOf(address(this));\\n        if (block.timestamp > pool.lastRewardTime && lpSupply != 0) {\\n            uint256 time = block.timestamp.sub(pool.lastRewardTime);\\n            uint256 goldnuggetReward = time.mul(goldnuggetPerSecond).mul(pool.allocPoint) / totalAllocPoint;\\n            accGoldNuggetPerShare = accGoldNuggetPerShare.add(goldnuggetReward.mul(ACC_GOLN_PRECISION) / lpSupply);\\n        }\\n        pending = int256(user.amount.mul(accGoldNuggetPerShare) / ACC_GOLN_PRECISION).sub(user.rewardDebt).toUInt256();\\n    }\\n\\n    /// @notice Update reward variables for all pools. Be careful of gas spending!\\n    /// @param pids Pool IDs of all to be updated. Make sure to update all active pools.\\n    function massUpdatePools(uint256[] calldata pids) external {\\n        uint256 len = pids.length;\\n        for (uint256 i = 0; i < len; ++i) {\\n            updatePool(pids[i]);\\n        }\\n    }\\n\\n    /// @notice Update reward variables of the given pool.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @return pool Returns the pool that was updated.\\n    function updatePool(uint256 pid) public returns (PoolInfo memory pool) {\\n        pool = poolInfo[pid];\\n        if (block.timestamp > pool.lastRewardTime) {\\n            uint256 lpSupply = lpToken[pid].balanceOf(address(this));\\n            if (lpSupply > 0) {\\n                uint256 time = block.timestamp.sub(pool.lastRewardTime);\\n                uint256 goldnuggetReward = time.mul(goldnuggetPerSecond).mul(pool.allocPoint) / totalAllocPoint;\\n                pool.accGoldNuggetPerShare = pool.accGoldNuggetPerShare.add((goldnuggetReward.mul(ACC_GOLN_PRECISION) / lpSupply).to128());\\n            }\\n            pool.lastRewardTime = block.timestamp.to64();\\n            poolInfo[pid] = pool;\\n            emit LogUpdatePool(pid, pool.lastRewardTime, lpSupply, pool.accGoldNuggetPerShare);\\n        }\\n    }\\n\\n    /// @notice Deposit LP tokens to MCV2 for GOLN allocation.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param amount LP token amount to deposit.\\n    /// @param to The receiver of `amount` deposit benefit.\\n    function deposit(uint256 pid, uint256 amount, address to) public {\\n        PoolInfo memory pool = updatePool(pid);\\n        UserInfo storage user = userInfo[pid][to];\\n\\n        // Effects\\n        user.amount = user.amount.add(amount);\\n        user.rewardDebt = user.rewardDebt.add(int256(amount.mul(pool.accGoldNuggetPerShare) / ACC_GOLN_PRECISION));\\n\\n        // Interactions\\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onGoldNuggetReward(pid, to, to, 0, user.amount);\\n        }\\n\\n        lpToken[pid].safeTransferFrom(msg.sender, address(this), amount);\\n\\n        emit Deposit(msg.sender, pid, amount, to);\\n    }\\n\\n    /// @notice Withdraw LP tokens from MCV2.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param amount LP token amount to withdraw.\\n    /// @param to Receiver of the LP tokens.\\n    function withdraw(uint256 pid, uint256 amount, address to) public {\\n        PoolInfo memory pool = updatePool(pid);\\n        UserInfo storage user = userInfo[pid][msg.sender];\\n\\n        // Effects\\n        user.rewardDebt = user.rewardDebt.sub(int256(amount.mul(pool.accGoldNuggetPerShare) / ACC_GOLN_PRECISION));\\n        user.amount = user.amount.sub(amount);\\n\\n        // Interactions\\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onGoldNuggetReward(pid, msg.sender, to, 0, user.amount);\\n        }\\n        \\n        lpToken[pid].safeTransfer(to, amount);\\n\\n        emit Withdraw(msg.sender, pid, amount, to);\\n    }\\n\\n    /// @notice Harvest proceeds for transaction sender to `to`.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param to Receiver of GOLN rewards.\\n    function harvest(uint256 pid, address to) public {\\n        PoolInfo memory pool = updatePool(pid);\\n        UserInfo storage user = userInfo[pid][msg.sender];\\n        int256 accumulatedGoldNugget = int256(user.amount.mul(pool.accGoldNuggetPerShare) / ACC_GOLN_PRECISION);\\n        uint256 _pendingGoldNugget = accumulatedGoldNugget.sub(user.rewardDebt).toUInt256();\\n\\n        // Effects\\n        user.rewardDebt = accumulatedGoldNugget;\\n\\n        // Interactions\\n        if (_pendingGoldNugget != 0) {\\n            GOLN.safeTransfer(to, _pendingGoldNugget);\\n        }\\n        \\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onGoldNuggetReward( pid, msg.sender, to, _pendingGoldNugget, user.amount);\\n        }\\n\\n        emit Harvest(msg.sender, pid, _pendingGoldNugget);\\n    }\\n    \\n    /// @notice Withdraw LP tokens from MCV2 and harvest proceeds for transaction sender to `to`.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param amount LP token amount to withdraw.\\n    /// @param to Receiver of the LP tokens and GOLN rewards.\\n    function withdrawAndHarvest(uint256 pid, uint256 amount, address to) public {\\n        PoolInfo memory pool = updatePool(pid);\\n        UserInfo storage user = userInfo[pid][msg.sender];\\n        int256 accumulatedGoldNugget = int256(user.amount.mul(pool.accGoldNuggetPerShare) / ACC_GOLN_PRECISION);\\n        uint256 _pendingGoldNugget = accumulatedGoldNugget.sub(user.rewardDebt).toUInt256();\\n\\n        // Effects\\n        user.rewardDebt = accumulatedGoldNugget.sub(int256(amount.mul(pool.accGoldNuggetPerShare) / ACC_GOLN_PRECISION));\\n        user.amount = user.amount.sub(amount);\\n        \\n        // Interactions\\n        GOLN.safeTransfer(to, _pendingGoldNugget);\\n\\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onGoldNuggetReward(pid, msg.sender, to, _pendingGoldNugget, user.amount);\\n        }\\n\\n        lpToken[pid].safeTransfer(to, amount);\\n\\n        emit Withdraw(msg.sender, pid, amount, to);\\n        emit Harvest(msg.sender, pid, _pendingGoldNugget);\\n    }\\n\\n    /// @notice Withdraw without caring about rewards. EMERGENCY ONLY.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param to Receiver of the LP tokens.\\n    function emergencyWithdraw(uint256 pid, address to) public {\\n        UserInfo storage user = userInfo[pid][msg.sender];\\n        uint256 amount = user.amount;\\n        user.amount = 0;\\n        user.rewardDebt = 0;\\n\\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onGoldNuggetReward(pid, msg.sender, to, 0, 0);\\n        }\\n\\n        // Note: transfer can fail or succeed if `amount` is zero.\\n        lpToken[pid].safeTransfer(to, amount);\\n        emit EmergencyWithdraw(msg.sender, pid, amount, to);\\n    }\\n}\\n\",\"keccak256\":\"0xadbc050755c7498e79c847e252cdb706cafe38a4d385355ac0ce1c6f6f961e53\",\"license\":\"MIT\"},\"contracts/interfaces/IGoldMiner.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity 0.6.12;\\npragma experimental ABIEncoderV2;\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\\\";\\n\\ninterface IGoldMiner {\\n    using BoringERC20 for IERC20;\\n    struct UserInfo {\\n        uint256 amount;     // How many LP tokens the user has provided.\\n        uint256 rewardDebt; // Reward debt. See explanation below.\\n    }\\n\\n    struct PoolInfo {\\n        IERC20 lpToken;           // Address of LP token contract.\\n        uint256 allocPoint;       // How many allocation points assigned to this pool. GOLN to distribute per block.\\n        uint256 lastRewardBlock;  // Last block number that GOLN distribution occurs.\\n        uint256 accGoldNuggetPerShare; // Accumulated GOLN per share, times 1e12. See below.\\n    }\\n\\n    function poolInfo(uint256 pid) external view returns (IGoldMiner.PoolInfo memory);\\n    function totalAllocPoint() external view returns (uint256);\\n    function deposit(uint256 _pid, uint256 _amount) external;\\n}\\n\",\"keccak256\":\"0xe6ba2f319be5134738042eb6e1e104324752729a4582177ef88350856b4a7280\",\"license\":\"MIT\"},\"contracts/interfaces/IRewarder.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.6.12;\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\\\";\\ninterface IRewarder {\\n    using BoringERC20 for IERC20;\\n    function onGoldNuggetReward(uint256 pid, address user, address recipient, uint256 goldnuggetAmount, uint256 newLpAmount) external;\\n    function pendingTokens(uint256 pid, address user, uint256 goldnuggetAmount) external view returns (IERC20[] memory, uint256[] memory);\\n}\\n\",\"keccak256\":\"0x92579e172bd0f29fd768cf7c6ccd1a8a74204d8bac7d7ae95538370d1265ac5c\",\"license\":\"MIT\"},\"contracts/libraries/SignedSafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.6.12;\\n\\nlibrary SignedSafeMath {\\n    int256 constant private _INT256_MIN = -2**255;\\n\\n    /**\\n     * @dev Returns the multiplication of two signed integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `*` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Multiplication cannot overflow.\\n     */\\n    function mul(int256 a, int256 b) internal pure returns (int256) {\\n        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\\n        // benefit is lost if 'b' is also tested.\\n        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\\n        if (a == 0) {\\n            return 0;\\n        }\\n\\n        require(!(a == -1 && b == _INT256_MIN), \\\"SignedSafeMath: multiplication overflow\\\");\\n\\n        int256 c = a * b;\\n        require(c / a == b, \\\"SignedSafeMath: multiplication overflow\\\");\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Returns the integer division of two signed integers. Reverts on\\n     * division by zero. The result is rounded towards zero.\\n     *\\n     * Counterpart to Solidity's `/` operator. Note: this function uses a\\n     * `revert` opcode (which leaves remaining gas untouched) while Solidity\\n     * uses an invalid opcode to revert (consuming all remaining gas).\\n     *\\n     * Requirements:\\n     *\\n     * - The divisor cannot be zero.\\n     */\\n    function div(int256 a, int256 b) internal pure returns (int256) {\\n        require(b != 0, \\\"SignedSafeMath: division by zero\\\");\\n        require(!(b == -1 && a == _INT256_MIN), \\\"SignedSafeMath: division overflow\\\");\\n\\n        int256 c = a / b;\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Returns the subtraction of two signed integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `-` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Subtraction cannot overflow.\\n     */\\n    function sub(int256 a, int256 b) internal pure returns (int256) {\\n        int256 c = a - b;\\n        require((b >= 0 && c <= a) || (b < 0 && c > a), \\\"SignedSafeMath: subtraction overflow\\\");\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Returns the addition of two signed integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `+` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Addition cannot overflow.\\n     */\\n    function add(int256 a, int256 b) internal pure returns (int256) {\\n        int256 c = a + b;\\n        require((b >= 0 && c >= a) || (b < 0 && c < a), \\\"SignedSafeMath: addition overflow\\\");\\n\\n        return c;\\n    }\\n\\n    function toUInt256(int256 a) internal pure returns (uint256) {\\n        require(a >= 0, \\\"Integer < 0\\\");\\n        return uint256(a);\\n    }\\n}\",\"keccak256\":\"0x4991beb21b224dfcdc3d251e0a60fdc304d4f6b699b2c35d08f3974e5b84c86a\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 149,
                "contract": "contracts/MiniMinerV2.sol:MiniMinerV2",
                "label": "owner",
                "offset": 0,
                "slot": "0",
                "type": "t_address"
              },
              {
                "astId": 151,
                "contract": "contracts/MiniMinerV2.sol:MiniMinerV2",
                "label": "pendingOwner",
                "offset": 0,
                "slot": "1",
                "type": "t_address"
              },
              {
                "astId": 2142,
                "contract": "contracts/MiniMinerV2.sol:MiniMinerV2",
                "label": "migrator",
                "offset": 0,
                "slot": "2",
                "type": "t_contract(IMigratorMiner)2108"
              },
              {
                "astId": 2146,
                "contract": "contracts/MiniMinerV2.sol:MiniMinerV2",
                "label": "poolInfo",
                "offset": 0,
                "slot": "3",
                "type": "t_array(t_struct(PoolInfo)2137_storage)dyn_storage"
              },
              {
                "astId": 2150,
                "contract": "contracts/MiniMinerV2.sol:MiniMinerV2",
                "label": "lpToken",
                "offset": 0,
                "slot": "4",
                "type": "t_array(t_contract(IERC20)337)dyn_storage"
              },
              {
                "astId": 2154,
                "contract": "contracts/MiniMinerV2.sol:MiniMinerV2",
                "label": "rewarder",
                "offset": 0,
                "slot": "5",
                "type": "t_array(t_contract(IRewarder)3320)dyn_storage"
              },
              {
                "astId": 2161,
                "contract": "contracts/MiniMinerV2.sol:MiniMinerV2",
                "label": "userInfo",
                "offset": 0,
                "slot": "6",
                "type": "t_mapping(t_uint256,t_mapping(t_address,t_struct(UserInfo)2130_storage))"
              },
              {
                "astId": 2164,
                "contract": "contracts/MiniMinerV2.sol:MiniMinerV2",
                "label": "totalAllocPoint",
                "offset": 0,
                "slot": "7",
                "type": "t_uint256"
              },
              {
                "astId": 2166,
                "contract": "contracts/MiniMinerV2.sol:MiniMinerV2",
                "label": "goldnuggetPerSecond",
                "offset": 0,
                "slot": "8",
                "type": "t_uint256"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_array(t_contract(IERC20)337)dyn_storage": {
                "base": "t_contract(IERC20)337",
                "encoding": "dynamic_array",
                "label": "contract IERC20[]",
                "numberOfBytes": "32"
              },
              "t_array(t_contract(IRewarder)3320)dyn_storage": {
                "base": "t_contract(IRewarder)3320",
                "encoding": "dynamic_array",
                "label": "contract IRewarder[]",
                "numberOfBytes": "32"
              },
              "t_array(t_struct(PoolInfo)2137_storage)dyn_storage": {
                "base": "t_struct(PoolInfo)2137_storage",
                "encoding": "dynamic_array",
                "label": "struct MiniMinerV2.PoolInfo[]",
                "numberOfBytes": "32"
              },
              "t_contract(IERC20)337": {
                "encoding": "inplace",
                "label": "contract IERC20",
                "numberOfBytes": "20"
              },
              "t_contract(IMigratorMiner)2108": {
                "encoding": "inplace",
                "label": "contract IMigratorMiner",
                "numberOfBytes": "20"
              },
              "t_contract(IRewarder)3320": {
                "encoding": "inplace",
                "label": "contract IRewarder",
                "numberOfBytes": "20"
              },
              "t_int256": {
                "encoding": "inplace",
                "label": "int256",
                "numberOfBytes": "32"
              },
              "t_mapping(t_address,t_struct(UserInfo)2130_storage)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => struct MiniMinerV2.UserInfo)",
                "numberOfBytes": "32",
                "value": "t_struct(UserInfo)2130_storage"
              },
              "t_mapping(t_uint256,t_mapping(t_address,t_struct(UserInfo)2130_storage))": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => mapping(address => struct MiniMinerV2.UserInfo))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_address,t_struct(UserInfo)2130_storage)"
              },
              "t_struct(PoolInfo)2137_storage": {
                "encoding": "inplace",
                "label": "struct MiniMinerV2.PoolInfo",
                "members": [
                  {
                    "astId": 2132,
                    "contract": "contracts/MiniMinerV2.sol:MiniMinerV2",
                    "label": "accGoldNuggetPerShare",
                    "offset": 0,
                    "slot": "0",
                    "type": "t_uint128"
                  },
                  {
                    "astId": 2134,
                    "contract": "contracts/MiniMinerV2.sol:MiniMinerV2",
                    "label": "lastRewardTime",
                    "offset": 16,
                    "slot": "0",
                    "type": "t_uint64"
                  },
                  {
                    "astId": 2136,
                    "contract": "contracts/MiniMinerV2.sol:MiniMinerV2",
                    "label": "allocPoint",
                    "offset": 24,
                    "slot": "0",
                    "type": "t_uint64"
                  }
                ],
                "numberOfBytes": "32"
              },
              "t_struct(UserInfo)2130_storage": {
                "encoding": "inplace",
                "label": "struct MiniMinerV2.UserInfo",
                "members": [
                  {
                    "astId": 2127,
                    "contract": "contracts/MiniMinerV2.sol:MiniMinerV2",
                    "label": "amount",
                    "offset": 0,
                    "slot": "0",
                    "type": "t_uint256"
                  },
                  {
                    "astId": 2129,
                    "contract": "contracts/MiniMinerV2.sol:MiniMinerV2",
                    "label": "rewardDebt",
                    "offset": 0,
                    "slot": "1",
                    "type": "t_int256"
                  }
                ],
                "numberOfBytes": "64"
              },
              "t_uint128": {
                "encoding": "inplace",
                "label": "uint128",
                "numberOfBytes": "16"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              },
              "t_uint64": {
                "encoding": "inplace",
                "label": "uint64",
                "numberOfBytes": "8"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "GOLN()": {
                "notice": "Address of GOLN contract."
              },
              "add(uint256,address,address)": {
                "notice": "Add a new LP to the pool. Can only be called by the owner. DO NOT add the same LP token more than once. Rewards will be messed up if you do."
              },
              "deposit(uint256,uint256,address)": {
                "notice": "Deposit LP tokens to MCV2 for GOLN allocation."
              },
              "emergencyWithdraw(uint256,address)": {
                "notice": "Withdraw without caring about rewards. EMERGENCY ONLY."
              },
              "harvest(uint256,address)": {
                "notice": "Harvest proceeds for transaction sender to `to`."
              },
              "lpToken(uint256)": {
                "notice": "Address of the LP token for each MCV2 pool."
              },
              "massUpdatePools(uint256[])": {
                "notice": "Update reward variables for all pools. Be careful of gas spending!"
              },
              "migrate(uint256)": {
                "notice": "Migrate LP token to another LP contract through the `migrator` contract."
              },
              "pendingGoldNugget(uint256,address)": {
                "notice": "View function to see pending GOLN on frontend."
              },
              "poolInfo(uint256)": {
                "notice": "Info of each MCV2 pool."
              },
              "poolLength()": {
                "notice": "Returns the number of MCV2 pools."
              },
              "rewarder(uint256)": {
                "notice": "Address of each `IRewarder` contract in MCV2."
              },
              "set(uint256,uint256,address,bool)": {
                "notice": "Update the given pool's GOLN allocation point and `IRewarder` contract. Can only be called by the owner."
              },
              "setGoldNuggetPerSecond(uint256)": {
                "notice": "Sets the goldnugget per second to be distributed. Can only be called by the owner."
              },
              "setMigrator(address)": {
                "notice": "Set the `migrator` contract. Can only be called by the owner."
              },
              "updatePool(uint256)": {
                "notice": "Update reward variables of the given pool."
              },
              "userInfo(uint256,address)": {
                "notice": "Info of each user that stakes LP tokens."
              },
              "withdraw(uint256,uint256,address)": {
                "notice": "Withdraw LP tokens from MCV2."
              },
              "withdrawAndHarvest(uint256,uint256,address)": {
                "notice": "Withdraw LP tokens from MCV2 and harvest proceeds for transaction sender to `to`."
              }
            },
            "notice": "The (older) GoldMiner contract gives out a constant number of GOLN tokens per block. It is the only address with minting rights for GOLN. The idea for this GoldMiner V2 (MCV2) contract is therefore to be the owner of a dummy token that is deposited into the GoldMiner V1 (MCV1) contract. The allocation point for this pool on MCV1 is the total allocation point for all pools that receive double incentives.",
            "version": 1
          }
        }
      },
      "contracts/interfaces/IGoldMiner.sol": {
        "IGoldMiner": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_pid",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "deposit",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                }
              ],
              "name": "poolInfo",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "contract IERC20",
                      "name": "lpToken",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "allocPoint",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "lastRewardBlock",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "accGoldNuggetPerShare",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct IGoldMiner.PoolInfo",
                  "name": "",
                  "type": "tuple"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalAllocPoint",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "deposit(uint256,uint256)": "e2bbb158",
              "poolInfo(uint256)": "1526fe27",
              "totalAllocPoint()": "17caf6f1"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"}],\"name\":\"poolInfo\",\"outputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"lpToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allocPoint\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastRewardBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"accGoldNuggetPerShare\",\"type\":\"uint256\"}],\"internalType\":\"struct IGoldMiner.PoolInfo\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalAllocPoint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IGoldMiner.sol\":\"IGoldMiner\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@boringcrypto/boring-solidity/contracts/interfaces/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity 0.6.12;\\r\\n\\r\\ninterface IERC20 {\\r\\n    function totalSupply() external view returns (uint256);\\r\\n    function balanceOf(address account) external view returns (uint256);\\r\\n    function allowance(address owner, address spender) external view returns (uint256);\\r\\n    function approve(address spender, uint256 amount) external returns (bool);\\r\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\r\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\r\\n\\r\\n    // EIP 2612\\r\\n    function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;\\r\\n}\",\"keccak256\":\"0x8004f86e4536cca55b8eeb2621fe18e1ee57d779396ddef50bce5bf70fb59867\",\"license\":\"MIT\"},\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\r\\npragma solidity 0.6.12;\\r\\n\\r\\nimport \\\"../interfaces/IERC20.sol\\\";\\r\\n\\r\\nlibrary BoringERC20 {\\r\\n    function safeSymbol(IERC20 token) internal view returns(string memory) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x95d89b41));\\r\\n        return success && data.length > 0 ? abi.decode(data, (string)) : \\\"???\\\";\\r\\n    }\\r\\n\\r\\n    function safeName(IERC20 token) internal view returns(string memory) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x06fdde03));\\r\\n        return success && data.length > 0 ? abi.decode(data, (string)) : \\\"???\\\";\\r\\n    }\\r\\n\\r\\n    function safeDecimals(IERC20 token) internal view returns (uint8) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x313ce567));\\r\\n        return success && data.length == 32 ? abi.decode(data, (uint8)) : 18;\\r\\n    }\\r\\n\\r\\n    function safeTransfer(IERC20 token, address to, uint256 amount) internal {\\r\\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0xa9059cbb, to, amount));\\r\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"BoringERC20: Transfer failed\\\");\\r\\n    }\\r\\n\\r\\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 amount) internal {\\r\\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0x23b872dd, from, to, amount));\\r\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"BoringERC20: TransferFrom failed\\\");\\r\\n    }\\r\\n}\",\"keccak256\":\"0x69f1ccf716991e5d6d64dc0e3bc3828fd1990bc18400d680b1aa1960675daaaa\",\"license\":\"UNLICENSED\"},\"contracts/interfaces/IGoldMiner.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity 0.6.12;\\npragma experimental ABIEncoderV2;\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\\\";\\n\\ninterface IGoldMiner {\\n    using BoringERC20 for IERC20;\\n    struct UserInfo {\\n        uint256 amount;     // How many LP tokens the user has provided.\\n        uint256 rewardDebt; // Reward debt. See explanation below.\\n    }\\n\\n    struct PoolInfo {\\n        IERC20 lpToken;           // Address of LP token contract.\\n        uint256 allocPoint;       // How many allocation points assigned to this pool. GOLN to distribute per block.\\n        uint256 lastRewardBlock;  // Last block number that GOLN distribution occurs.\\n        uint256 accGoldNuggetPerShare; // Accumulated GOLN per share, times 1e12. See below.\\n    }\\n\\n    function poolInfo(uint256 pid) external view returns (IGoldMiner.PoolInfo memory);\\n    function totalAllocPoint() external view returns (uint256);\\n    function deposit(uint256 _pid, uint256 _amount) external;\\n}\\n\",\"keccak256\":\"0xe6ba2f319be5134738042eb6e1e104324752729a4582177ef88350856b4a7280\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/interfaces/IRewarder.sol": {
        "IRewarder": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "goldnuggetAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "newLpAmount",
                  "type": "uint256"
                }
              ],
              "name": "onGoldNuggetReward",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "goldnuggetAmount",
                  "type": "uint256"
                }
              ],
              "name": "pendingTokens",
              "outputs": [
                {
                  "internalType": "contract IERC20[]",
                  "name": "",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "onGoldNuggetReward(uint256,address,address,uint256,uint256)": "a3d83320",
              "pendingTokens(uint256,address,uint256)": "d63b3c49"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"goldnuggetAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newLpAmount\",\"type\":\"uint256\"}],\"name\":\"onGoldNuggetReward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"goldnuggetAmount\",\"type\":\"uint256\"}],\"name\":\"pendingTokens\",\"outputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IRewarder.sol\":\"IRewarder\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@boringcrypto/boring-solidity/contracts/interfaces/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity 0.6.12;\\r\\n\\r\\ninterface IERC20 {\\r\\n    function totalSupply() external view returns (uint256);\\r\\n    function balanceOf(address account) external view returns (uint256);\\r\\n    function allowance(address owner, address spender) external view returns (uint256);\\r\\n    function approve(address spender, uint256 amount) external returns (bool);\\r\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\r\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\r\\n\\r\\n    // EIP 2612\\r\\n    function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;\\r\\n}\",\"keccak256\":\"0x8004f86e4536cca55b8eeb2621fe18e1ee57d779396ddef50bce5bf70fb59867\",\"license\":\"MIT\"},\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\r\\npragma solidity 0.6.12;\\r\\n\\r\\nimport \\\"../interfaces/IERC20.sol\\\";\\r\\n\\r\\nlibrary BoringERC20 {\\r\\n    function safeSymbol(IERC20 token) internal view returns(string memory) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x95d89b41));\\r\\n        return success && data.length > 0 ? abi.decode(data, (string)) : \\\"???\\\";\\r\\n    }\\r\\n\\r\\n    function safeName(IERC20 token) internal view returns(string memory) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x06fdde03));\\r\\n        return success && data.length > 0 ? abi.decode(data, (string)) : \\\"???\\\";\\r\\n    }\\r\\n\\r\\n    function safeDecimals(IERC20 token) internal view returns (uint8) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x313ce567));\\r\\n        return success && data.length == 32 ? abi.decode(data, (uint8)) : 18;\\r\\n    }\\r\\n\\r\\n    function safeTransfer(IERC20 token, address to, uint256 amount) internal {\\r\\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0xa9059cbb, to, amount));\\r\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"BoringERC20: Transfer failed\\\");\\r\\n    }\\r\\n\\r\\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 amount) internal {\\r\\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0x23b872dd, from, to, amount));\\r\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"BoringERC20: TransferFrom failed\\\");\\r\\n    }\\r\\n}\",\"keccak256\":\"0x69f1ccf716991e5d6d64dc0e3bc3828fd1990bc18400d680b1aa1960675daaaa\",\"license\":\"UNLICENSED\"},\"contracts/interfaces/IRewarder.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.6.12;\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\\\";\\ninterface IRewarder {\\n    using BoringERC20 for IERC20;\\n    function onGoldNuggetReward(uint256 pid, address user, address recipient, uint256 goldnuggetAmount, uint256 newLpAmount) external;\\n    function pendingTokens(uint256 pid, address user, uint256 goldnuggetAmount) external view returns (IERC20[] memory, uint256[] memory);\\n}\\n\",\"keccak256\":\"0x92579e172bd0f29fd768cf7c6ccd1a8a74204d8bac7d7ae95538370d1265ac5c\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/libraries/SignedSafeMath.sol": {
        "SignedSafeMath": {
          "abi": [],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208f1943d7a24d29ff6e71807b2650b06004a17b500d0dd71e9ef3c5aa567a16d464736f6c634300060c0033",
              "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP16 NOT NUMBER 0xD7 LOG2 0x4D 0x29 SELFDESTRUCT PUSH15 0x71807B2650B06004A17B500D0DD71E SWAP15 RETURN 0xC5 0xAA JUMP PUSH27 0x16D464736F6C634300060C00330000000000000000000000000000 ",
              "sourceMap": "58:2636:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208f1943d7a24d29ff6e71807b2650b06004a17b500d0dd71e9ef3c5aa567a16d464736f6c634300060c0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP16 NOT NUMBER 0xD7 LOG2 0x4D 0x29 SELFDESTRUCT PUSH15 0x71807B2650B06004A17B500D0DD71E SWAP15 RETURN 0xC5 0xAA JUMP PUSH27 0x16D464736F6C634300060C00330000000000000000000000000000 ",
              "sourceMap": "58:2636:9:-:0;;;;;;;;"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "17200",
                "executionCost": "97",
                "totalCost": "17297"
              },
              "internal": {
                "add(int256,int256)": "infinite",
                "div(int256,int256)": "infinite",
                "mul(int256,int256)": "infinite",
                "sub(int256,int256)": "infinite",
                "toUInt256(int256)": "infinite"
              }
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/SignedSafeMath.sol\":\"SignedSafeMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/libraries/SignedSafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.6.12;\\n\\nlibrary SignedSafeMath {\\n    int256 constant private _INT256_MIN = -2**255;\\n\\n    /**\\n     * @dev Returns the multiplication of two signed integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `*` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Multiplication cannot overflow.\\n     */\\n    function mul(int256 a, int256 b) internal pure returns (int256) {\\n        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\\n        // benefit is lost if 'b' is also tested.\\n        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\\n        if (a == 0) {\\n            return 0;\\n        }\\n\\n        require(!(a == -1 && b == _INT256_MIN), \\\"SignedSafeMath: multiplication overflow\\\");\\n\\n        int256 c = a * b;\\n        require(c / a == b, \\\"SignedSafeMath: multiplication overflow\\\");\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Returns the integer division of two signed integers. Reverts on\\n     * division by zero. The result is rounded towards zero.\\n     *\\n     * Counterpart to Solidity's `/` operator. Note: this function uses a\\n     * `revert` opcode (which leaves remaining gas untouched) while Solidity\\n     * uses an invalid opcode to revert (consuming all remaining gas).\\n     *\\n     * Requirements:\\n     *\\n     * - The divisor cannot be zero.\\n     */\\n    function div(int256 a, int256 b) internal pure returns (int256) {\\n        require(b != 0, \\\"SignedSafeMath: division by zero\\\");\\n        require(!(b == -1 && a == _INT256_MIN), \\\"SignedSafeMath: division overflow\\\");\\n\\n        int256 c = a / b;\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Returns the subtraction of two signed integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `-` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Subtraction cannot overflow.\\n     */\\n    function sub(int256 a, int256 b) internal pure returns (int256) {\\n        int256 c = a - b;\\n        require((b >= 0 && c <= a) || (b < 0 && c > a), \\\"SignedSafeMath: subtraction overflow\\\");\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Returns the addition of two signed integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `+` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Addition cannot overflow.\\n     */\\n    function add(int256 a, int256 b) internal pure returns (int256) {\\n        int256 c = a + b;\\n        require((b >= 0 && c >= a) || (b < 0 && c < a), \\\"SignedSafeMath: addition overflow\\\");\\n\\n        return c;\\n    }\\n\\n    function toUInt256(int256 a) internal pure returns (uint256) {\\n        require(a >= 0, \\\"Integer < 0\\\");\\n        return uint256(a);\\n    }\\n}\",\"keccak256\":\"0x4991beb21b224dfcdc3d251e0a60fdc304d4f6b699b2c35d08f3974e5b84c86a\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/mocks/ComplexRewarder.sol": {
        "ComplexRewarder": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "_rewardToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_tokenPerBlock",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_GOLDMINER_V2",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [],
              "name": "LogInit",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "LogOnReward",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "allocPoint",
                  "type": "uint256"
                }
              ],
              "name": "LogPoolAddition",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "allocPoint",
                  "type": "uint256"
                }
              ],
              "name": "LogSetPool",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint64",
                  "name": "lastRewardBlock",
                  "type": "uint64"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "lpSupply",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "accGoldNuggetPerShare",
                  "type": "uint256"
                }
              ],
              "name": "LogUpdatePool",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "allocPoint",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_pid",
                  "type": "uint256"
                }
              ],
              "name": "add",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "claimOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256[]",
                  "name": "pids",
                  "type": "uint256[]"
                }
              ],
              "name": "massUpdatePools",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_user",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "lpToken",
                  "type": "uint256"
                }
              ],
              "name": "onGoldNuggetReward",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "pendingOwner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_pid",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_user",
                  "type": "address"
                }
              ],
              "name": "pendingToken",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "pending",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "pendingTokens",
              "outputs": [
                {
                  "internalType": "contract IERC20[]",
                  "name": "rewardTokens",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "rewardAmounts",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "poolIds",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "poolInfo",
              "outputs": [
                {
                  "internalType": "uint128",
                  "name": "accGoldNuggetPerShare",
                  "type": "uint128"
                },
                {
                  "internalType": "uint64",
                  "name": "lastRewardBlock",
                  "type": "uint64"
                },
                {
                  "internalType": "uint64",
                  "name": "allocPoint",
                  "type": "uint64"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "poolLength",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "pools",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_pid",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_allocPoint",
                  "type": "uint256"
                }
              ],
              "name": "set",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "tokenPerBlock",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "direct",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "renounce",
                  "type": "bool"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                }
              ],
              "name": "updatePool",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "uint128",
                      "name": "accGoldNuggetPerShare",
                      "type": "uint128"
                    },
                    {
                      "internalType": "uint64",
                      "name": "lastRewardBlock",
                      "type": "uint64"
                    },
                    {
                      "internalType": "uint64",
                      "name": "allocPoint",
                      "type": "uint64"
                    }
                  ],
                  "internalType": "struct ComplexRewarder.PoolInfo",
                  "name": "pool",
                  "type": "tuple"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "userInfo",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "rewardDebt",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "author": "@0xKeno",
            "kind": "dev",
            "methods": {
              "add(uint256,uint256)": {
                "params": {
                  "_pid": "Pid on MCV2",
                  "allocPoint": "AP of the new pool."
                }
              },
              "massUpdatePools(uint256[])": {
                "params": {
                  "pids": "Pool IDs of all to be updated. Make sure to update all active pools."
                }
              },
              "pendingToken(uint256,address)": {
                "params": {
                  "_pid": "The index of the pool. See `poolInfo`.",
                  "_user": "Address of user."
                },
                "returns": {
                  "pending": "GOLN reward for a given user."
                }
              },
              "set(uint256,uint256)": {
                "params": {
                  "_allocPoint": "New AP of the pool.",
                  "_pid": "The index of the pool. See `poolInfo`."
                }
              },
              "updatePool(uint256)": {
                "params": {
                  "pid": "The index of the pool. See `poolInfo`."
                },
                "returns": {
                  "pool": "Returns the pool that was updated."
                }
              }
            },
            "stateVariables": {
              "totalAllocPoint": {
                "details": "Total allocation points. Must be the sum of all allocation points in all pools."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60c06040523480156200001157600080fd5b50604051620018c8380380620018c8833981016040819052620000349162000099565b600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36001600160601b0319606093841b811660805260069290925590911b1660a052620000f9565b600080600060608486031215620000ae578283fd5b8351620000bb81620000e0565b602085015160408601519194509250620000d581620000e0565b809150509250925092565b6001600160a01b0381168114620000f657600080fd5b50565b60805160601c60a05160601c61178c6200013c600039806104fb5280610590528061082a52806108bf5280610cd7525080610d885280610e5d525061178c6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806357a5b58c1161009757806393f1a40b1161006657806393f1a40b146101fe578063a3d833201461021f578063d63b3c4914610232578063e30c39781461025357610100565b806357a5b58c146101b057806369883b4e146101c3578063771602f7146101d65780638da5cb5b146101e957610100565b80634198709a116100d35780634198709a1461016d57806348e43af4146101755780634e71e0c81461018857806351eb05a61461019057610100565b8063078dfbe714610105578063081e3eda1461011a5780631526fe27146101385780631ab06ee51461015a575b600080fd5b610118610113366004611119565b61025b565b005b61012261034a565b60405161012f91906116ef565b60405180910390f35b61014b610146366004611210565b610350565b60405161012f939291906116c5565b6101186101683660046112f7565b610387565b610122610466565b610122610183366004611240565b61046c565b6101186106fa565b6101a361019e366004611210565b610787565b60405161012f919061168c565b6101186101be366004611163565b610aaf565b6101226101d1366004611210565b610ae5565b6101186101e43660046112f7565b610b03565b6101f1610c99565b60405161012f9190611359565b61021161020c366004611240565b610ca8565b60405161012f9291906116f8565b61011861022d36600461126f565b610ccc565b6102456102403660046112c0565b610e35565b60405161012f929190611386565b6101f1610ef4565b6000546001600160a01b0316331461028e5760405162461bcd60e51b8152600401610285906115b4565b60405180910390fd5b8115610329576001600160a01b0383161515806102a85750805b6102c45760405162461bcd60e51b8152600401610285906114ea565b600080546040516001600160a01b03808716939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0385166001600160a01b031991821617909155600180549091169055610345565b600180546001600160a01b0319166001600160a01b0385161790555b505050565b60035490565b6002602052600090815260409020546001600160801b038116906001600160401b03600160801b8204811691600160c01b90041683565b6000546001600160a01b031633146103b15760405162461bcd60e51b8152600401610285906115b4565b6000828152600260205260409020546005546103e89183916103e291600160c01b90046001600160401b0316610f03565b90610f2c565b6005556103f481610f4f565b6000838152600260205260409081902080546001600160401b0393909316600160c01b026001600160c01b03909316929092179091555182907f942cc7e17a17c164bd977f32ab8c54265d5b9d481e4e352bf874f1e568874e7c9061045a9084906116ef565b60405180910390a25050565b60065481565b60006104766110f9565b506000838152600260209081526040808320815160608101835290546001600160801b0380821683526001600160401b03600160801b8304811684870152600160c01b9092049091168284015287855260048085528386206001600160a01b03808a1688529552838620835194516378ed5d1f60e01b815293969095949092169391927f0000000000000000000000000000000000000000000000000000000000000000909216916378ed5d1f91610530918b91016116ef565b60206040518083038186803b15801561054857600080fd5b505afa15801561055c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058091906111f4565b6001600160a01b03166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016105cb9190611359565b60206040518083038186803b1580156105e357600080fd5b505afa1580156105f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061b9190611228565b905083602001516001600160401b03164311801561063857508015155b156106c457600061065f85602001516001600160401b031643610f0390919063ffffffff16565b9050600060055461069287604001516001600160401b031661068c60065486610f7c90919063ffffffff16565b90610f7c565b8161069957fe5b0490506106bf836106af8364e8d4a51000610f7c565b816106b657fe5b86919004610f2c565b935050505b600183015483546106ef919064e8d4a51000906106e19086610f7c565b816106e857fe5b0490610f03565b979650505050505050565b6001546001600160a01b03163381146107255760405162461bcd60e51b8152600401610285906115e9565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b61078f6110f9565b50600081815260026020908152604091829020825160608101845290546001600160801b03811682526001600160401b03600160801b82048116938301849052600160c01b90910416928101929092526107fb5760405162461bcd60e51b815260040161028590611519565b80602001516001600160401b0316431115610aaa576040516378ed5d1f60e01b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906378ed5d1f9061085f9086906004016116ef565b60206040518083038186803b15801561087757600080fd5b505afa15801561088b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108af91906111f4565b6001600160a01b03166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016108fa9190611359565b60206040518083038186803b15801561091257600080fd5b505afa158015610926573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061094a9190611228565b905080156109ed57600061097483602001516001600160401b031643610f0390919063ffffffff16565b905060006005546109a185604001516001600160401b031661068c60065486610f7c90919063ffffffff16565b816109a857fe5b0490506109df6109ce846109c18464e8d4a51000610f7c565b816109c857fe5b04610fb3565b85516001600160801b031690610fdc565b6001600160801b0316845250505b6109f643610f4f565b6001600160401b03908116602084810191825260008681526002909152604090819020855181549351838801516001600160801b03199095166001600160801b0383161767ffffffffffffffff60801b1916600160801b82881602176001600160c01b0316600160c01b95909616949094029490941790555185927f0fc9545022a542541ad085d091fb09a2ab36fee366a4576ab63714ea907ad35392610aa09290918691611706565b60405180910390a2505b919050565b8060005b81811015610adf57610ad6848483818110610aca57fe5b90506020020135610787565b50600101610ab3565b50505050565b60038181548110610af257fe5b600091825260209091200154905081565b6000546001600160a01b03163314610b2d5760405162461bcd60e51b8152600401610285906115b4565b600081815260026020526040902054600160801b90046001600160401b031615610b695760405162461bcd60e51b815260040161028590611445565b6005544390610b789084610f2c565b60055560408051606081019091526000815260208101610b9783610f4f565b6001600160401b03168152602001610bae85610f4f565b6001600160401b0390811690915260008481526002602090815260408083208551815493870151968301518616600160c01b026001600160c01b0397909616600160801b0267ffffffffffffffff60801b196001600160801b039092166001600160801b031990951694909417169290921794909416929092179091556003805460018101825591527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b018390555182907f38410508059921573ab9ebdca2a5034be738d236366b8f32de4434ea95ed3c8190610c8c9086906116ef565b60405180910390a2505050565b6000546001600160a01b031681565b60046020908152600092835260408084209091529082529020805460019091015482565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610d145760405162461bcd60e51b8152600401610285906114a9565b610d1c6110f9565b610d2586610787565b60008781526004602090815260408083206001600160a01b038a168452909152812080549293509115610daf57600182015483518354610d79929164e8d4a51000916106e1916001600160801b0316610f7c565b9050610daf6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016878361100b565b838255825164e8d4a5100090610dcf9086906001600160801b0316610f7c565b81610dd657fe5b048260010181905550856001600160a01b031688886001600160a01b03167f2ece88ca2bc08dd018db50e1d25a20bf1241e5fab1c396caa51f01a54bd2f75b84604051610e2391906116ef565b60405180910390a45050505050505050565b60408051600180825281830190925260609182918291602080830190803683370190505090507f000000000000000000000000000000000000000000000000000000000000000081600081518110610e8957fe5b6001600160a01b039290921660209283029190910190910152604080516001808252818301909252606091816020016020820280368337019050509050610ed0878761046c565b81600081518110610edd57fe5b602090810291909101015290969095509350505050565b6001546001600160a01b031681565b80820382811115610f265760405162461bcd60e51b815260040161028590611416565b92915050565b81810181811015610f265760405162461bcd60e51b81526004016102859061157d565b60006001600160401b03821115610f785760405162461bcd60e51b81526004016102859061161e565b5090565b6000811580610f9757505080820282828281610f9457fe5b04145b610f265760405162461bcd60e51b815260040161028590611655565b60006001600160801b03821115610f785760405162461bcd60e51b815260040161028590611546565b8181016001600160801b038083169082161015610f265760405162461bcd60e51b81526004016102859061157d565b60006060846001600160a01b031663a9059cbb858560405160240161103192919061136d565b6040516020818303038152906040529060e01b6020820180516001600160e01b03838183161783525050505060405161106a9190611320565b6000604051808303816000865af19150503d80600081146110a7576040519150601f19603f3d011682016040523d82523d6000602084013e6110ac565b606091505b50915091508180156110d65750805115806110d65750808060200190518101906110d691906111d1565b6110f25760405162461bcd60e51b815260040161028590611472565b5050505050565b604080516060810182526000808252602082018190529181019190915290565b60008060006060848603121561112d578283fd5b833561113881611730565b9250602084013561114881611748565b9150604084013561115881611748565b809150509250925092565b60008060208385031215611175578182fd5b82356001600160401b038082111561118b578384fd5b818501915085601f83011261119e578384fd5b8135818111156111ac578485fd5b86602080830285010111156111bf578485fd5b60209290920196919550909350505050565b6000602082840312156111e2578081fd5b81516111ed81611748565b9392505050565b600060208284031215611205578081fd5b81516111ed81611730565b600060208284031215611221578081fd5b5035919050565b600060208284031215611239578081fd5b5051919050565b60008060408385031215611252578182fd5b82359150602083013561126481611730565b809150509250929050565b600080600080600060a08688031215611286578081fd5b85359450602086013561129881611730565b935060408601356112a881611730565b94979396509394606081013594506080013592915050565b6000806000606084860312156112d4578283fd5b8335925060208401356112e681611730565b929592945050506040919091013590565b60008060408385031215611309578182fd5b50508035926020909101359150565b815260200190565b60008251815b818110156113405760208186018101518583015201611326565b8181111561134e5782828501525b509190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b604080825283519082018190526000906020906060840190828701845b828110156113c85781516001600160a01b0316845292840192908401906001016113a3565b505050838103828501528085516113df81846116ef565b91508387019250845b81811015611409576113fb838551611318565b9385019392506001016113e8565b5090979650505050505050565b602080825260159082015274426f72696e674d6174683a20556e646572666c6f7760581b604082015260600190565b602080825260139082015272506f6f6c20616c72656164792065786973747360681b604082015260600190565b6020808252601c908201527f426f72696e6745524332303a205472616e73666572206661696c656400000000604082015260600190565b60208082526021908201527f4f6e6c79204d4356322063616e2063616c6c20746869732066756e6374696f6e6040820152601760f91b606082015260800190565b6020808252601590820152744f776e61626c653a207a65726f206164647265737360581b604082015260600190565b602080825260139082015272141bdbdb08191bd95cc81b9bdd08195e1a5cdd606a1b604082015260600190565b6020808252601c908201527f426f72696e674d6174683a2075696e74313238204f766572666c6f7700000000604082015260600190565b60208082526018908201527f426f72696e674d6174683a20416464204f766572666c6f770000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e6572604082015260600190565b6020808252601b908201527f426f72696e674d6174683a2075696e743634204f766572666c6f770000000000604082015260600190565b60208082526018908201527f426f72696e674d6174683a204d756c204f766572666c6f770000000000000000604082015260600190565b81516001600160801b031681526020808301516001600160401b0390811691830191909152604092830151169181019190915260600190565b6001600160801b039390931683526001600160401b03918216602084015216604082015260600190565b90815260200190565b918252602082015260400190565b6001600160401b0393909316835260208301919091526001600160801b0316604082015260600190565b6001600160a01b038116811461174557600080fd5b50565b801515811461174557600080fdfea264697066735822122057ca8dc35f2338beb2fd9e9f6ed998d11a2e0cbe90bc43d4389cdc8386f338fa64736f6c634300060c0033",
              "opcodes": "PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x18C8 CODESIZE SUB DUP1 PUSH3 0x18C8 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x99 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP4 DUP5 SHL DUP2 AND PUSH1 0x80 MSTORE PUSH1 0x6 SWAP3 SWAP1 SWAP3 SSTORE SWAP1 SWAP2 SHL AND PUSH1 0xA0 MSTORE PUSH3 0xF9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0xAE JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 MLOAD PUSH3 0xBB DUP2 PUSH3 0xE0 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x40 DUP7 ADD MLOAD SWAP2 SWAP5 POP SWAP3 POP PUSH3 0xD5 DUP2 PUSH3 0xE0 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0xF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x178C PUSH3 0x13C PUSH1 0x0 CODECOPY DUP1 PUSH2 0x4FB MSTORE DUP1 PUSH2 0x590 MSTORE DUP1 PUSH2 0x82A MSTORE DUP1 PUSH2 0x8BF MSTORE DUP1 PUSH2 0xCD7 MSTORE POP DUP1 PUSH2 0xD88 MSTORE DUP1 PUSH2 0xE5D MSTORE POP PUSH2 0x178C PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x100 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x57A5B58C GT PUSH2 0x97 JUMPI DUP1 PUSH4 0x93F1A40B GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x93F1A40B EQ PUSH2 0x1FE JUMPI DUP1 PUSH4 0xA3D83320 EQ PUSH2 0x21F JUMPI DUP1 PUSH4 0xD63B3C49 EQ PUSH2 0x232 JUMPI DUP1 PUSH4 0xE30C3978 EQ PUSH2 0x253 JUMPI PUSH2 0x100 JUMP JUMPDEST DUP1 PUSH4 0x57A5B58C EQ PUSH2 0x1B0 JUMPI DUP1 PUSH4 0x69883B4E EQ PUSH2 0x1C3 JUMPI DUP1 PUSH4 0x771602F7 EQ PUSH2 0x1D6 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x1E9 JUMPI PUSH2 0x100 JUMP JUMPDEST DUP1 PUSH4 0x4198709A GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x4198709A EQ PUSH2 0x16D JUMPI DUP1 PUSH4 0x48E43AF4 EQ PUSH2 0x175 JUMPI DUP1 PUSH4 0x4E71E0C8 EQ PUSH2 0x188 JUMPI DUP1 PUSH4 0x51EB05A6 EQ PUSH2 0x190 JUMPI PUSH2 0x100 JUMP JUMPDEST DUP1 PUSH4 0x78DFBE7 EQ PUSH2 0x105 JUMPI DUP1 PUSH4 0x81E3EDA EQ PUSH2 0x11A JUMPI DUP1 PUSH4 0x1526FE27 EQ PUSH2 0x138 JUMPI DUP1 PUSH4 0x1AB06EE5 EQ PUSH2 0x15A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x118 PUSH2 0x113 CALLDATASIZE PUSH1 0x4 PUSH2 0x1119 JUMP JUMPDEST PUSH2 0x25B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x122 PUSH2 0x34A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12F SWAP2 SWAP1 PUSH2 0x16EF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x14B PUSH2 0x146 CALLDATASIZE PUSH1 0x4 PUSH2 0x1210 JUMP JUMPDEST PUSH2 0x350 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12F SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x16C5 JUMP JUMPDEST PUSH2 0x118 PUSH2 0x168 CALLDATASIZE PUSH1 0x4 PUSH2 0x12F7 JUMP JUMPDEST PUSH2 0x387 JUMP JUMPDEST PUSH2 0x122 PUSH2 0x466 JUMP JUMPDEST PUSH2 0x122 PUSH2 0x183 CALLDATASIZE PUSH1 0x4 PUSH2 0x1240 JUMP JUMPDEST PUSH2 0x46C JUMP JUMPDEST PUSH2 0x118 PUSH2 0x6FA JUMP JUMPDEST PUSH2 0x1A3 PUSH2 0x19E CALLDATASIZE PUSH1 0x4 PUSH2 0x1210 JUMP JUMPDEST PUSH2 0x787 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12F SWAP2 SWAP1 PUSH2 0x168C JUMP JUMPDEST PUSH2 0x118 PUSH2 0x1BE CALLDATASIZE PUSH1 0x4 PUSH2 0x1163 JUMP JUMPDEST PUSH2 0xAAF JUMP JUMPDEST PUSH2 0x122 PUSH2 0x1D1 CALLDATASIZE PUSH1 0x4 PUSH2 0x1210 JUMP JUMPDEST PUSH2 0xAE5 JUMP JUMPDEST PUSH2 0x118 PUSH2 0x1E4 CALLDATASIZE PUSH1 0x4 PUSH2 0x12F7 JUMP JUMPDEST PUSH2 0xB03 JUMP JUMPDEST PUSH2 0x1F1 PUSH2 0xC99 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12F SWAP2 SWAP1 PUSH2 0x1359 JUMP JUMPDEST PUSH2 0x211 PUSH2 0x20C CALLDATASIZE PUSH1 0x4 PUSH2 0x1240 JUMP JUMPDEST PUSH2 0xCA8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12F SWAP3 SWAP2 SWAP1 PUSH2 0x16F8 JUMP JUMPDEST PUSH2 0x118 PUSH2 0x22D CALLDATASIZE PUSH1 0x4 PUSH2 0x126F JUMP JUMPDEST PUSH2 0xCCC JUMP JUMPDEST PUSH2 0x245 PUSH2 0x240 CALLDATASIZE PUSH1 0x4 PUSH2 0x12C0 JUMP JUMPDEST PUSH2 0xE35 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12F SWAP3 SWAP2 SWAP1 PUSH2 0x1386 JUMP JUMPDEST PUSH2 0x1F1 PUSH2 0xEF4 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x28E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x15B4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 ISZERO PUSH2 0x329 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO ISZERO DUP1 PUSH2 0x2A8 JUMPI POP DUP1 JUMPDEST PUSH2 0x2C4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x14EA JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE PUSH2 0x345 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND OR SWAP1 SSTORE JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP3 DIV DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV AND DUP4 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x3B1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x15B4 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x5 SLOAD PUSH2 0x3E8 SWAP2 DUP4 SWAP2 PUSH2 0x3E2 SWAP2 PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH2 0xF03 JUMP JUMPDEST SWAP1 PUSH2 0xF2C JUMP JUMPDEST PUSH1 0x5 SSTORE PUSH2 0x3F4 DUP2 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP4 SWAP1 SWAP4 AND PUSH1 0x1 PUSH1 0xC0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD DUP3 SWAP1 PUSH32 0x942CC7E17A17C164BD977F32AB8C54265D5B9D481E4E352BF874F1E568874E7C SWAP1 PUSH2 0x45A SWAP1 DUP5 SWAP1 PUSH2 0x16EF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x476 PUSH2 0x10F9 JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH1 0x60 DUP2 ADD DUP4 MSTORE SWAP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP4 DIV DUP2 AND DUP5 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 SWAP3 DIV SWAP1 SWAP2 AND DUP3 DUP5 ADD MSTORE DUP8 DUP6 MSTORE PUSH1 0x4 DUP1 DUP6 MSTORE DUP4 DUP7 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND DUP9 MSTORE SWAP6 MSTORE DUP4 DUP7 KECCAK256 DUP4 MLOAD SWAP5 MLOAD PUSH4 0x78ED5D1F PUSH1 0xE0 SHL DUP2 MSTORE SWAP4 SWAP7 SWAP1 SWAP6 SWAP5 SWAP1 SWAP3 AND SWAP4 SWAP2 SWAP3 PUSH32 0x0 SWAP1 SWAP3 AND SWAP2 PUSH4 0x78ED5D1F SWAP2 PUSH2 0x530 SWAP2 DUP12 SWAP2 ADD PUSH2 0x16EF JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x548 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x55C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x580 SWAP2 SWAP1 PUSH2 0x11F4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 PUSH32 0x0 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP2 SWAP1 PUSH2 0x1359 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5F7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x61B SWAP2 SWAP1 PUSH2 0x1228 JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND NUMBER GT DUP1 ISZERO PUSH2 0x638 JUMPI POP DUP1 ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x6C4 JUMPI PUSH1 0x0 PUSH2 0x65F DUP6 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND NUMBER PUSH2 0xF03 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x5 SLOAD PUSH2 0x692 DUP8 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH2 0x68C PUSH1 0x6 SLOAD DUP7 PUSH2 0xF7C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH2 0xF7C JUMP JUMPDEST DUP2 PUSH2 0x699 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x6BF DUP4 PUSH2 0x6AF DUP4 PUSH5 0xE8D4A51000 PUSH2 0xF7C JUMP JUMPDEST DUP2 PUSH2 0x6B6 JUMPI INVALID JUMPDEST DUP7 SWAP2 SWAP1 DIV PUSH2 0xF2C JUMP JUMPDEST SWAP4 POP POP POP JUMPDEST PUSH1 0x1 DUP4 ADD SLOAD DUP4 SLOAD PUSH2 0x6EF SWAP2 SWAP1 PUSH5 0xE8D4A51000 SWAP1 PUSH2 0x6E1 SWAP1 DUP7 PUSH2 0xF7C JUMP JUMPDEST DUP2 PUSH2 0x6E8 JUMPI INVALID JUMPDEST DIV SWAP1 PUSH2 0xF03 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER DUP2 EQ PUSH2 0x725 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x15E9 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x78F PUSH2 0x10F9 JUMP JUMPDEST POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0x60 DUP2 ADD DUP5 MSTORE SWAP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP3 DIV DUP2 AND SWAP4 DUP4 ADD DUP5 SWAP1 MSTORE PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 SWAP2 DIV AND SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH2 0x7FB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x1519 JUMP JUMPDEST DUP1 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND NUMBER GT ISZERO PUSH2 0xAAA JUMPI PUSH1 0x40 MLOAD PUSH4 0x78ED5D1F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x78ED5D1F SWAP1 PUSH2 0x85F SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x16EF JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x877 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x88B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8AF SWAP2 SWAP1 PUSH2 0x11F4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 PUSH32 0x0 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8FA SWAP2 SWAP1 PUSH2 0x1359 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x912 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x926 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x94A SWAP2 SWAP1 PUSH2 0x1228 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x9ED JUMPI PUSH1 0x0 PUSH2 0x974 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND NUMBER PUSH2 0xF03 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x5 SLOAD PUSH2 0x9A1 DUP6 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH2 0x68C PUSH1 0x6 SLOAD DUP7 PUSH2 0xF7C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH2 0x9A8 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x9DF PUSH2 0x9CE DUP5 PUSH2 0x9C1 DUP5 PUSH5 0xE8D4A51000 PUSH2 0xF7C JUMP JUMPDEST DUP2 PUSH2 0x9C8 JUMPI INVALID JUMPDEST DIV PUSH2 0xFB3 JUMP JUMPDEST DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 PUSH2 0xFDC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP5 MSTORE POP POP JUMPDEST PUSH2 0x9F6 NUMBER PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND PUSH1 0x20 DUP5 DUP2 ADD SWAP2 DUP3 MSTORE PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP6 MLOAD DUP2 SLOAD SWAP4 MLOAD DUP4 DUP9 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP1 SWAP6 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP4 AND OR PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x80 SHL NOT AND PUSH1 0x1 PUSH1 0x80 SHL DUP3 DUP9 AND MUL OR PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x1 PUSH1 0xC0 SHL SWAP6 SWAP1 SWAP7 AND SWAP5 SWAP1 SWAP5 MUL SWAP5 SWAP1 SWAP5 OR SWAP1 SSTORE MLOAD DUP6 SWAP3 PUSH32 0xFC9545022A542541AD085D091FB09A2AB36FEE366A4576AB63714EA907AD353 SWAP3 PUSH2 0xAA0 SWAP3 SWAP1 SWAP2 DUP7 SWAP2 PUSH2 0x1706 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xADF JUMPI PUSH2 0xAD6 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0xACA JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0x787 JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0xAB3 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x3 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0xAF2 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xB2D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x15B4 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND ISZERO PUSH2 0xB69 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x1445 JUMP JUMPDEST PUSH1 0x5 SLOAD NUMBER SWAP1 PUSH2 0xB78 SWAP1 DUP5 PUSH2 0xF2C JUMP JUMPDEST PUSH1 0x5 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 DUP2 ADD PUSH2 0xB97 DUP4 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xBAE DUP6 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 MLOAD DUP2 SLOAD SWAP4 DUP8 ADD MLOAD SWAP7 DUP4 ADD MLOAD DUP7 AND PUSH1 0x1 PUSH1 0xC0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP8 SWAP1 SWAP7 AND PUSH1 0x1 PUSH1 0x80 SHL MUL PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x80 SHL NOT PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR AND SWAP3 SWAP1 SWAP3 OR SWAP5 SWAP1 SWAP5 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE SWAP2 MSTORE PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B ADD DUP4 SWAP1 SSTORE MLOAD DUP3 SWAP1 PUSH32 0x38410508059921573AB9EBDCA2A5034BE738D236366B8F32DE4434EA95ED3C81 SWAP1 PUSH2 0xC8C SWAP1 DUP7 SWAP1 PUSH2 0x16EF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD DUP3 JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0xD14 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x14A9 JUMP JUMPDEST PUSH2 0xD1C PUSH2 0x10F9 JUMP JUMPDEST PUSH2 0xD25 DUP7 PUSH2 0x787 JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD SWAP3 SWAP4 POP SWAP2 ISZERO PUSH2 0xDAF JUMPI PUSH1 0x1 DUP3 ADD SLOAD DUP4 MLOAD DUP4 SLOAD PUSH2 0xD79 SWAP3 SWAP2 PUSH5 0xE8D4A51000 SWAP2 PUSH2 0x6E1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0xF7C JUMP JUMPDEST SWAP1 POP PUSH2 0xDAF PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP8 DUP4 PUSH2 0x100B JUMP JUMPDEST DUP4 DUP3 SSTORE DUP3 MLOAD PUSH5 0xE8D4A51000 SWAP1 PUSH2 0xDCF SWAP1 DUP7 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0xF7C JUMP JUMPDEST DUP2 PUSH2 0xDD6 JUMPI INVALID JUMPDEST DIV DUP3 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2ECE88CA2BC08DD018DB50E1D25A20BF1241E5FAB1C396CAA51F01A54BD2F75B DUP5 PUSH1 0x40 MLOAD PUSH2 0xE23 SWAP2 SWAP1 PUSH2 0x16EF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH32 0x0 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xE89 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH2 0xED0 DUP8 DUP8 PUSH2 0x46C JUMP JUMPDEST DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xEDD JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0xF26 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x1416 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 DUP2 ADD DUP2 DUP2 LT ISZERO PUSH2 0xF26 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x157D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0xF78 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x161E JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0xF97 JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0xF94 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0xF26 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x1655 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 GT ISZERO PUSH2 0xF78 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x1546 JUMP JUMPDEST DUP2 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP4 AND SWAP1 DUP3 AND LT ISZERO PUSH2 0xF26 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x157D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1031 SWAP3 SWAP2 SWAP1 PUSH2 0x136D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH2 0x106A SWAP2 SWAP1 PUSH2 0x1320 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x10A7 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x10AC JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x10D6 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x10D6 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x10D6 SWAP2 SWAP1 PUSH2 0x11D1 JUMP JUMPDEST PUSH2 0x10F2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x1472 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x112D JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1138 DUP2 PUSH2 0x1730 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x1148 DUP2 PUSH2 0x1748 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x1158 DUP2 PUSH2 0x1748 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1175 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x118B JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x119E JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x11AC JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x11BF JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11E2 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x11ED DUP2 PUSH2 0x1748 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1205 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x11ED DUP2 PUSH2 0x1730 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1221 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1239 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1252 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x1264 DUP2 PUSH2 0x1730 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1286 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x1298 DUP2 PUSH2 0x1730 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x12A8 DUP2 PUSH2 0x1730 JUMP JUMPDEST SWAP5 SWAP8 SWAP4 SWAP7 POP SWAP4 SWAP5 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x12D4 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x12E6 DUP2 PUSH2 0x1730 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1309 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1340 JUMPI PUSH1 0x20 DUP2 DUP7 ADD DUP2 ADD MLOAD DUP6 DUP4 ADD MSTORE ADD PUSH2 0x1326 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x134E JUMPI DUP3 DUP3 DUP6 ADD MSTORE JUMPDEST POP SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP4 MLOAD SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x20 SWAP1 PUSH1 0x60 DUP5 ADD SWAP1 DUP3 DUP8 ADD DUP5 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x13C8 JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x13A3 JUMP JUMPDEST POP POP POP DUP4 DUP2 SUB DUP3 DUP6 ADD MSTORE DUP1 DUP6 MLOAD PUSH2 0x13DF DUP2 DUP5 PUSH2 0x16EF JUMP JUMPDEST SWAP2 POP DUP4 DUP8 ADD SWAP3 POP DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1409 JUMPI PUSH2 0x13FB DUP4 DUP6 MLOAD PUSH2 0x1318 JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH2 0x13E8 JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH21 0x426F72696E674D6174683A20556E646572666C6F77 PUSH1 0x58 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH19 0x506F6F6C20616C726561647920657869737473 PUSH1 0x68 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1C SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E6745524332303A205472616E73666572206661696C656400000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x21 SWAP1 DUP3 ADD MSTORE PUSH32 0x4F6E6C79204D4356322063616E2063616C6C20746869732066756E6374696F6E PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0xF9 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH21 0x4F776E61626C653A207A65726F2061646472657373 PUSH1 0x58 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH19 0x141BDBDB08191BD95CC81B9BDD08195E1A5CDD PUSH1 0x6A SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1C SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A2075696E74313238204F766572666C6F7700000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x18 SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A20416464204F766572666C6F770000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C657220213D2070656E64696E67206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A2075696E743634204F766572666C6F770000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x18 SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A204D756C204F766572666C6F770000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP3 DUP4 ADD MLOAD AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1745 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1745 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 JUMPI 0xCA DUP14 0xC3 0x5F 0x23 CODESIZE 0xBE 0xB2 REVERT SWAP15 SWAP16 PUSH15 0xD998D11A2E0CBE90BC43D4389CDC83 DUP7 RETURN CODESIZE STATICCALL PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "398:7011:10:-:0;;;2034:209;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;639:5:1;:18;;-1:-1:-1;;;;;;639:18:1;647:10;639:18;;;;;673:44;;647:10;;639:5;673:44;;639:5;;673:44;-1:-1:-1;;;;;;2132:26:10;;;;;;;;2168:13;:30;;;;2208:28;;;;;;398:7011;;456:563:-1;;;;619:2;607:9;598:7;594:23;590:32;587:2;;;-1:-1;;625:12;587:2;244:6;238:13;256:47;297:5;256:47;:::i;:::-;802:2;852:22;;393:13;921:2;971:22;;83:13;677:88;;-1:-1;393:13;-1:-1;101:33;83:13;101:33;:::i;:::-;929:74;;;;581:438;;;;;:::o;1443:117::-;-1:-1;;;;;1298:54;;1502:35;;1492:2;;1551:1;;1541:12;1492:2;1486:74;:::o;:::-;398:7011:10;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {
                "3542": [
                  {
                    "length": 32,
                    "start": 3464
                  },
                  {
                    "length": 32,
                    "start": 3677
                  }
                ],
                "3579": [
                  {
                    "length": 32,
                    "start": 1275
                  },
                  {
                    "length": 32,
                    "start": 1424
                  },
                  {
                    "length": 32,
                    "start": 2090
                  },
                  {
                    "length": 32,
                    "start": 2239
                  },
                  {
                    "length": 32,
                    "start": 3287
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106101005760003560e01c806357a5b58c1161009757806393f1a40b1161006657806393f1a40b146101fe578063a3d833201461021f578063d63b3c4914610232578063e30c39781461025357610100565b806357a5b58c146101b057806369883b4e146101c3578063771602f7146101d65780638da5cb5b146101e957610100565b80634198709a116100d35780634198709a1461016d57806348e43af4146101755780634e71e0c81461018857806351eb05a61461019057610100565b8063078dfbe714610105578063081e3eda1461011a5780631526fe27146101385780631ab06ee51461015a575b600080fd5b610118610113366004611119565b61025b565b005b61012261034a565b60405161012f91906116ef565b60405180910390f35b61014b610146366004611210565b610350565b60405161012f939291906116c5565b6101186101683660046112f7565b610387565b610122610466565b610122610183366004611240565b61046c565b6101186106fa565b6101a361019e366004611210565b610787565b60405161012f919061168c565b6101186101be366004611163565b610aaf565b6101226101d1366004611210565b610ae5565b6101186101e43660046112f7565b610b03565b6101f1610c99565b60405161012f9190611359565b61021161020c366004611240565b610ca8565b60405161012f9291906116f8565b61011861022d36600461126f565b610ccc565b6102456102403660046112c0565b610e35565b60405161012f929190611386565b6101f1610ef4565b6000546001600160a01b0316331461028e5760405162461bcd60e51b8152600401610285906115b4565b60405180910390fd5b8115610329576001600160a01b0383161515806102a85750805b6102c45760405162461bcd60e51b8152600401610285906114ea565b600080546040516001600160a01b03808716939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0385166001600160a01b031991821617909155600180549091169055610345565b600180546001600160a01b0319166001600160a01b0385161790555b505050565b60035490565b6002602052600090815260409020546001600160801b038116906001600160401b03600160801b8204811691600160c01b90041683565b6000546001600160a01b031633146103b15760405162461bcd60e51b8152600401610285906115b4565b6000828152600260205260409020546005546103e89183916103e291600160c01b90046001600160401b0316610f03565b90610f2c565b6005556103f481610f4f565b6000838152600260205260409081902080546001600160401b0393909316600160c01b026001600160c01b03909316929092179091555182907f942cc7e17a17c164bd977f32ab8c54265d5b9d481e4e352bf874f1e568874e7c9061045a9084906116ef565b60405180910390a25050565b60065481565b60006104766110f9565b506000838152600260209081526040808320815160608101835290546001600160801b0380821683526001600160401b03600160801b8304811684870152600160c01b9092049091168284015287855260048085528386206001600160a01b03808a1688529552838620835194516378ed5d1f60e01b815293969095949092169391927f0000000000000000000000000000000000000000000000000000000000000000909216916378ed5d1f91610530918b91016116ef565b60206040518083038186803b15801561054857600080fd5b505afa15801561055c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058091906111f4565b6001600160a01b03166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016105cb9190611359565b60206040518083038186803b1580156105e357600080fd5b505afa1580156105f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061b9190611228565b905083602001516001600160401b03164311801561063857508015155b156106c457600061065f85602001516001600160401b031643610f0390919063ffffffff16565b9050600060055461069287604001516001600160401b031661068c60065486610f7c90919063ffffffff16565b90610f7c565b8161069957fe5b0490506106bf836106af8364e8d4a51000610f7c565b816106b657fe5b86919004610f2c565b935050505b600183015483546106ef919064e8d4a51000906106e19086610f7c565b816106e857fe5b0490610f03565b979650505050505050565b6001546001600160a01b03163381146107255760405162461bcd60e51b8152600401610285906115e9565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b61078f6110f9565b50600081815260026020908152604091829020825160608101845290546001600160801b03811682526001600160401b03600160801b82048116938301849052600160c01b90910416928101929092526107fb5760405162461bcd60e51b815260040161028590611519565b80602001516001600160401b0316431115610aaa576040516378ed5d1f60e01b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906378ed5d1f9061085f9086906004016116ef565b60206040518083038186803b15801561087757600080fd5b505afa15801561088b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108af91906111f4565b6001600160a01b03166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016108fa9190611359565b60206040518083038186803b15801561091257600080fd5b505afa158015610926573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061094a9190611228565b905080156109ed57600061097483602001516001600160401b031643610f0390919063ffffffff16565b905060006005546109a185604001516001600160401b031661068c60065486610f7c90919063ffffffff16565b816109a857fe5b0490506109df6109ce846109c18464e8d4a51000610f7c565b816109c857fe5b04610fb3565b85516001600160801b031690610fdc565b6001600160801b0316845250505b6109f643610f4f565b6001600160401b03908116602084810191825260008681526002909152604090819020855181549351838801516001600160801b03199095166001600160801b0383161767ffffffffffffffff60801b1916600160801b82881602176001600160c01b0316600160c01b95909616949094029490941790555185927f0fc9545022a542541ad085d091fb09a2ab36fee366a4576ab63714ea907ad35392610aa09290918691611706565b60405180910390a2505b919050565b8060005b81811015610adf57610ad6848483818110610aca57fe5b90506020020135610787565b50600101610ab3565b50505050565b60038181548110610af257fe5b600091825260209091200154905081565b6000546001600160a01b03163314610b2d5760405162461bcd60e51b8152600401610285906115b4565b600081815260026020526040902054600160801b90046001600160401b031615610b695760405162461bcd60e51b815260040161028590611445565b6005544390610b789084610f2c565b60055560408051606081019091526000815260208101610b9783610f4f565b6001600160401b03168152602001610bae85610f4f565b6001600160401b0390811690915260008481526002602090815260408083208551815493870151968301518616600160c01b026001600160c01b0397909616600160801b0267ffffffffffffffff60801b196001600160801b039092166001600160801b031990951694909417169290921794909416929092179091556003805460018101825591527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b018390555182907f38410508059921573ab9ebdca2a5034be738d236366b8f32de4434ea95ed3c8190610c8c9086906116ef565b60405180910390a2505050565b6000546001600160a01b031681565b60046020908152600092835260408084209091529082529020805460019091015482565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610d145760405162461bcd60e51b8152600401610285906114a9565b610d1c6110f9565b610d2586610787565b60008781526004602090815260408083206001600160a01b038a168452909152812080549293509115610daf57600182015483518354610d79929164e8d4a51000916106e1916001600160801b0316610f7c565b9050610daf6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016878361100b565b838255825164e8d4a5100090610dcf9086906001600160801b0316610f7c565b81610dd657fe5b048260010181905550856001600160a01b031688886001600160a01b03167f2ece88ca2bc08dd018db50e1d25a20bf1241e5fab1c396caa51f01a54bd2f75b84604051610e2391906116ef565b60405180910390a45050505050505050565b60408051600180825281830190925260609182918291602080830190803683370190505090507f000000000000000000000000000000000000000000000000000000000000000081600081518110610e8957fe5b6001600160a01b039290921660209283029190910190910152604080516001808252818301909252606091816020016020820280368337019050509050610ed0878761046c565b81600081518110610edd57fe5b602090810291909101015290969095509350505050565b6001546001600160a01b031681565b80820382811115610f265760405162461bcd60e51b815260040161028590611416565b92915050565b81810181811015610f265760405162461bcd60e51b81526004016102859061157d565b60006001600160401b03821115610f785760405162461bcd60e51b81526004016102859061161e565b5090565b6000811580610f9757505080820282828281610f9457fe5b04145b610f265760405162461bcd60e51b815260040161028590611655565b60006001600160801b03821115610f785760405162461bcd60e51b815260040161028590611546565b8181016001600160801b038083169082161015610f265760405162461bcd60e51b81526004016102859061157d565b60006060846001600160a01b031663a9059cbb858560405160240161103192919061136d565b6040516020818303038152906040529060e01b6020820180516001600160e01b03838183161783525050505060405161106a9190611320565b6000604051808303816000865af19150503d80600081146110a7576040519150601f19603f3d011682016040523d82523d6000602084013e6110ac565b606091505b50915091508180156110d65750805115806110d65750808060200190518101906110d691906111d1565b6110f25760405162461bcd60e51b815260040161028590611472565b5050505050565b604080516060810182526000808252602082018190529181019190915290565b60008060006060848603121561112d578283fd5b833561113881611730565b9250602084013561114881611748565b9150604084013561115881611748565b809150509250925092565b60008060208385031215611175578182fd5b82356001600160401b038082111561118b578384fd5b818501915085601f83011261119e578384fd5b8135818111156111ac578485fd5b86602080830285010111156111bf578485fd5b60209290920196919550909350505050565b6000602082840312156111e2578081fd5b81516111ed81611748565b9392505050565b600060208284031215611205578081fd5b81516111ed81611730565b600060208284031215611221578081fd5b5035919050565b600060208284031215611239578081fd5b5051919050565b60008060408385031215611252578182fd5b82359150602083013561126481611730565b809150509250929050565b600080600080600060a08688031215611286578081fd5b85359450602086013561129881611730565b935060408601356112a881611730565b94979396509394606081013594506080013592915050565b6000806000606084860312156112d4578283fd5b8335925060208401356112e681611730565b929592945050506040919091013590565b60008060408385031215611309578182fd5b50508035926020909101359150565b815260200190565b60008251815b818110156113405760208186018101518583015201611326565b8181111561134e5782828501525b509190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b604080825283519082018190526000906020906060840190828701845b828110156113c85781516001600160a01b0316845292840192908401906001016113a3565b505050838103828501528085516113df81846116ef565b91508387019250845b81811015611409576113fb838551611318565b9385019392506001016113e8565b5090979650505050505050565b602080825260159082015274426f72696e674d6174683a20556e646572666c6f7760581b604082015260600190565b602080825260139082015272506f6f6c20616c72656164792065786973747360681b604082015260600190565b6020808252601c908201527f426f72696e6745524332303a205472616e73666572206661696c656400000000604082015260600190565b60208082526021908201527f4f6e6c79204d4356322063616e2063616c6c20746869732066756e6374696f6e6040820152601760f91b606082015260800190565b6020808252601590820152744f776e61626c653a207a65726f206164647265737360581b604082015260600190565b602080825260139082015272141bdbdb08191bd95cc81b9bdd08195e1a5cdd606a1b604082015260600190565b6020808252601c908201527f426f72696e674d6174683a2075696e74313238204f766572666c6f7700000000604082015260600190565b60208082526018908201527f426f72696e674d6174683a20416464204f766572666c6f770000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e6572604082015260600190565b6020808252601b908201527f426f72696e674d6174683a2075696e743634204f766572666c6f770000000000604082015260600190565b60208082526018908201527f426f72696e674d6174683a204d756c204f766572666c6f770000000000000000604082015260600190565b81516001600160801b031681526020808301516001600160401b0390811691830191909152604092830151169181019190915260600190565b6001600160801b039390931683526001600160401b03918216602084015216604082015260600190565b90815260200190565b918252602082015260400190565b6001600160401b0393909316835260208301919091526001600160801b0316604082015260600190565b6001600160a01b038116811461174557600080fd5b50565b801515811461174557600080fdfea264697066735822122057ca8dc35f2338beb2fd9e9f6ed998d11a2e0cbe90bc43d4389cdc8386f338fa64736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x100 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x57A5B58C GT PUSH2 0x97 JUMPI DUP1 PUSH4 0x93F1A40B GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x93F1A40B EQ PUSH2 0x1FE JUMPI DUP1 PUSH4 0xA3D83320 EQ PUSH2 0x21F JUMPI DUP1 PUSH4 0xD63B3C49 EQ PUSH2 0x232 JUMPI DUP1 PUSH4 0xE30C3978 EQ PUSH2 0x253 JUMPI PUSH2 0x100 JUMP JUMPDEST DUP1 PUSH4 0x57A5B58C EQ PUSH2 0x1B0 JUMPI DUP1 PUSH4 0x69883B4E EQ PUSH2 0x1C3 JUMPI DUP1 PUSH4 0x771602F7 EQ PUSH2 0x1D6 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x1E9 JUMPI PUSH2 0x100 JUMP JUMPDEST DUP1 PUSH4 0x4198709A GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x4198709A EQ PUSH2 0x16D JUMPI DUP1 PUSH4 0x48E43AF4 EQ PUSH2 0x175 JUMPI DUP1 PUSH4 0x4E71E0C8 EQ PUSH2 0x188 JUMPI DUP1 PUSH4 0x51EB05A6 EQ PUSH2 0x190 JUMPI PUSH2 0x100 JUMP JUMPDEST DUP1 PUSH4 0x78DFBE7 EQ PUSH2 0x105 JUMPI DUP1 PUSH4 0x81E3EDA EQ PUSH2 0x11A JUMPI DUP1 PUSH4 0x1526FE27 EQ PUSH2 0x138 JUMPI DUP1 PUSH4 0x1AB06EE5 EQ PUSH2 0x15A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x118 PUSH2 0x113 CALLDATASIZE PUSH1 0x4 PUSH2 0x1119 JUMP JUMPDEST PUSH2 0x25B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x122 PUSH2 0x34A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12F SWAP2 SWAP1 PUSH2 0x16EF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x14B PUSH2 0x146 CALLDATASIZE PUSH1 0x4 PUSH2 0x1210 JUMP JUMPDEST PUSH2 0x350 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12F SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x16C5 JUMP JUMPDEST PUSH2 0x118 PUSH2 0x168 CALLDATASIZE PUSH1 0x4 PUSH2 0x12F7 JUMP JUMPDEST PUSH2 0x387 JUMP JUMPDEST PUSH2 0x122 PUSH2 0x466 JUMP JUMPDEST PUSH2 0x122 PUSH2 0x183 CALLDATASIZE PUSH1 0x4 PUSH2 0x1240 JUMP JUMPDEST PUSH2 0x46C JUMP JUMPDEST PUSH2 0x118 PUSH2 0x6FA JUMP JUMPDEST PUSH2 0x1A3 PUSH2 0x19E CALLDATASIZE PUSH1 0x4 PUSH2 0x1210 JUMP JUMPDEST PUSH2 0x787 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12F SWAP2 SWAP1 PUSH2 0x168C JUMP JUMPDEST PUSH2 0x118 PUSH2 0x1BE CALLDATASIZE PUSH1 0x4 PUSH2 0x1163 JUMP JUMPDEST PUSH2 0xAAF JUMP JUMPDEST PUSH2 0x122 PUSH2 0x1D1 CALLDATASIZE PUSH1 0x4 PUSH2 0x1210 JUMP JUMPDEST PUSH2 0xAE5 JUMP JUMPDEST PUSH2 0x118 PUSH2 0x1E4 CALLDATASIZE PUSH1 0x4 PUSH2 0x12F7 JUMP JUMPDEST PUSH2 0xB03 JUMP JUMPDEST PUSH2 0x1F1 PUSH2 0xC99 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12F SWAP2 SWAP1 PUSH2 0x1359 JUMP JUMPDEST PUSH2 0x211 PUSH2 0x20C CALLDATASIZE PUSH1 0x4 PUSH2 0x1240 JUMP JUMPDEST PUSH2 0xCA8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12F SWAP3 SWAP2 SWAP1 PUSH2 0x16F8 JUMP JUMPDEST PUSH2 0x118 PUSH2 0x22D CALLDATASIZE PUSH1 0x4 PUSH2 0x126F JUMP JUMPDEST PUSH2 0xCCC JUMP JUMPDEST PUSH2 0x245 PUSH2 0x240 CALLDATASIZE PUSH1 0x4 PUSH2 0x12C0 JUMP JUMPDEST PUSH2 0xE35 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12F SWAP3 SWAP2 SWAP1 PUSH2 0x1386 JUMP JUMPDEST PUSH2 0x1F1 PUSH2 0xEF4 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x28E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x15B4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 ISZERO PUSH2 0x329 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO ISZERO DUP1 PUSH2 0x2A8 JUMPI POP DUP1 JUMPDEST PUSH2 0x2C4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x14EA JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE PUSH2 0x345 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND OR SWAP1 SSTORE JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP3 DIV DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV AND DUP4 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x3B1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x15B4 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x5 SLOAD PUSH2 0x3E8 SWAP2 DUP4 SWAP2 PUSH2 0x3E2 SWAP2 PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH2 0xF03 JUMP JUMPDEST SWAP1 PUSH2 0xF2C JUMP JUMPDEST PUSH1 0x5 SSTORE PUSH2 0x3F4 DUP2 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP4 SWAP1 SWAP4 AND PUSH1 0x1 PUSH1 0xC0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD DUP3 SWAP1 PUSH32 0x942CC7E17A17C164BD977F32AB8C54265D5B9D481E4E352BF874F1E568874E7C SWAP1 PUSH2 0x45A SWAP1 DUP5 SWAP1 PUSH2 0x16EF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x476 PUSH2 0x10F9 JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH1 0x60 DUP2 ADD DUP4 MSTORE SWAP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP4 DIV DUP2 AND DUP5 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 SWAP3 DIV SWAP1 SWAP2 AND DUP3 DUP5 ADD MSTORE DUP8 DUP6 MSTORE PUSH1 0x4 DUP1 DUP6 MSTORE DUP4 DUP7 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND DUP9 MSTORE SWAP6 MSTORE DUP4 DUP7 KECCAK256 DUP4 MLOAD SWAP5 MLOAD PUSH4 0x78ED5D1F PUSH1 0xE0 SHL DUP2 MSTORE SWAP4 SWAP7 SWAP1 SWAP6 SWAP5 SWAP1 SWAP3 AND SWAP4 SWAP2 SWAP3 PUSH32 0x0 SWAP1 SWAP3 AND SWAP2 PUSH4 0x78ED5D1F SWAP2 PUSH2 0x530 SWAP2 DUP12 SWAP2 ADD PUSH2 0x16EF JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x548 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x55C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x580 SWAP2 SWAP1 PUSH2 0x11F4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 PUSH32 0x0 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP2 SWAP1 PUSH2 0x1359 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5F7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x61B SWAP2 SWAP1 PUSH2 0x1228 JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND NUMBER GT DUP1 ISZERO PUSH2 0x638 JUMPI POP DUP1 ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x6C4 JUMPI PUSH1 0x0 PUSH2 0x65F DUP6 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND NUMBER PUSH2 0xF03 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x5 SLOAD PUSH2 0x692 DUP8 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH2 0x68C PUSH1 0x6 SLOAD DUP7 PUSH2 0xF7C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH2 0xF7C JUMP JUMPDEST DUP2 PUSH2 0x699 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x6BF DUP4 PUSH2 0x6AF DUP4 PUSH5 0xE8D4A51000 PUSH2 0xF7C JUMP JUMPDEST DUP2 PUSH2 0x6B6 JUMPI INVALID JUMPDEST DUP7 SWAP2 SWAP1 DIV PUSH2 0xF2C JUMP JUMPDEST SWAP4 POP POP POP JUMPDEST PUSH1 0x1 DUP4 ADD SLOAD DUP4 SLOAD PUSH2 0x6EF SWAP2 SWAP1 PUSH5 0xE8D4A51000 SWAP1 PUSH2 0x6E1 SWAP1 DUP7 PUSH2 0xF7C JUMP JUMPDEST DUP2 PUSH2 0x6E8 JUMPI INVALID JUMPDEST DIV SWAP1 PUSH2 0xF03 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER DUP2 EQ PUSH2 0x725 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x15E9 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x78F PUSH2 0x10F9 JUMP JUMPDEST POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0x60 DUP2 ADD DUP5 MSTORE SWAP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP3 DIV DUP2 AND SWAP4 DUP4 ADD DUP5 SWAP1 MSTORE PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 SWAP2 DIV AND SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH2 0x7FB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x1519 JUMP JUMPDEST DUP1 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND NUMBER GT ISZERO PUSH2 0xAAA JUMPI PUSH1 0x40 MLOAD PUSH4 0x78ED5D1F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x78ED5D1F SWAP1 PUSH2 0x85F SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x16EF JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x877 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x88B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8AF SWAP2 SWAP1 PUSH2 0x11F4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 PUSH32 0x0 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8FA SWAP2 SWAP1 PUSH2 0x1359 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x912 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x926 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x94A SWAP2 SWAP1 PUSH2 0x1228 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x9ED JUMPI PUSH1 0x0 PUSH2 0x974 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND NUMBER PUSH2 0xF03 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x5 SLOAD PUSH2 0x9A1 DUP6 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH2 0x68C PUSH1 0x6 SLOAD DUP7 PUSH2 0xF7C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH2 0x9A8 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x9DF PUSH2 0x9CE DUP5 PUSH2 0x9C1 DUP5 PUSH5 0xE8D4A51000 PUSH2 0xF7C JUMP JUMPDEST DUP2 PUSH2 0x9C8 JUMPI INVALID JUMPDEST DIV PUSH2 0xFB3 JUMP JUMPDEST DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 PUSH2 0xFDC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP5 MSTORE POP POP JUMPDEST PUSH2 0x9F6 NUMBER PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND PUSH1 0x20 DUP5 DUP2 ADD SWAP2 DUP3 MSTORE PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP6 MLOAD DUP2 SLOAD SWAP4 MLOAD DUP4 DUP9 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP1 SWAP6 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP4 AND OR PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x80 SHL NOT AND PUSH1 0x1 PUSH1 0x80 SHL DUP3 DUP9 AND MUL OR PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x1 PUSH1 0xC0 SHL SWAP6 SWAP1 SWAP7 AND SWAP5 SWAP1 SWAP5 MUL SWAP5 SWAP1 SWAP5 OR SWAP1 SSTORE MLOAD DUP6 SWAP3 PUSH32 0xFC9545022A542541AD085D091FB09A2AB36FEE366A4576AB63714EA907AD353 SWAP3 PUSH2 0xAA0 SWAP3 SWAP1 SWAP2 DUP7 SWAP2 PUSH2 0x1706 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xADF JUMPI PUSH2 0xAD6 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0xACA JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0x787 JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0xAB3 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x3 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0xAF2 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xB2D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x15B4 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND ISZERO PUSH2 0xB69 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x1445 JUMP JUMPDEST PUSH1 0x5 SLOAD NUMBER SWAP1 PUSH2 0xB78 SWAP1 DUP5 PUSH2 0xF2C JUMP JUMPDEST PUSH1 0x5 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 DUP2 ADD PUSH2 0xB97 DUP4 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xBAE DUP6 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 MLOAD DUP2 SLOAD SWAP4 DUP8 ADD MLOAD SWAP7 DUP4 ADD MLOAD DUP7 AND PUSH1 0x1 PUSH1 0xC0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP8 SWAP1 SWAP7 AND PUSH1 0x1 PUSH1 0x80 SHL MUL PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x80 SHL NOT PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR AND SWAP3 SWAP1 SWAP3 OR SWAP5 SWAP1 SWAP5 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE SWAP2 MSTORE PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B ADD DUP4 SWAP1 SSTORE MLOAD DUP3 SWAP1 PUSH32 0x38410508059921573AB9EBDCA2A5034BE738D236366B8F32DE4434EA95ED3C81 SWAP1 PUSH2 0xC8C SWAP1 DUP7 SWAP1 PUSH2 0x16EF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD DUP3 JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0xD14 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x14A9 JUMP JUMPDEST PUSH2 0xD1C PUSH2 0x10F9 JUMP JUMPDEST PUSH2 0xD25 DUP7 PUSH2 0x787 JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD SWAP3 SWAP4 POP SWAP2 ISZERO PUSH2 0xDAF JUMPI PUSH1 0x1 DUP3 ADD SLOAD DUP4 MLOAD DUP4 SLOAD PUSH2 0xD79 SWAP3 SWAP2 PUSH5 0xE8D4A51000 SWAP2 PUSH2 0x6E1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0xF7C JUMP JUMPDEST SWAP1 POP PUSH2 0xDAF PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP8 DUP4 PUSH2 0x100B JUMP JUMPDEST DUP4 DUP3 SSTORE DUP3 MLOAD PUSH5 0xE8D4A51000 SWAP1 PUSH2 0xDCF SWAP1 DUP7 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0xF7C JUMP JUMPDEST DUP2 PUSH2 0xDD6 JUMPI INVALID JUMPDEST DIV DUP3 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2ECE88CA2BC08DD018DB50E1D25A20BF1241E5FAB1C396CAA51F01A54BD2F75B DUP5 PUSH1 0x40 MLOAD PUSH2 0xE23 SWAP2 SWAP1 PUSH2 0x16EF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH32 0x0 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xE89 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH2 0xED0 DUP8 DUP8 PUSH2 0x46C JUMP JUMPDEST DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xEDD JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0xF26 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x1416 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 DUP2 ADD DUP2 DUP2 LT ISZERO PUSH2 0xF26 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x157D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0xF78 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x161E JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0xF97 JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0xF94 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0xF26 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x1655 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 GT ISZERO PUSH2 0xF78 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x1546 JUMP JUMPDEST DUP2 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP4 AND SWAP1 DUP3 AND LT ISZERO PUSH2 0xF26 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x157D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1031 SWAP3 SWAP2 SWAP1 PUSH2 0x136D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH2 0x106A SWAP2 SWAP1 PUSH2 0x1320 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x10A7 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x10AC JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x10D6 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x10D6 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x10D6 SWAP2 SWAP1 PUSH2 0x11D1 JUMP JUMPDEST PUSH2 0x10F2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x285 SWAP1 PUSH2 0x1472 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x112D JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1138 DUP2 PUSH2 0x1730 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x1148 DUP2 PUSH2 0x1748 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x1158 DUP2 PUSH2 0x1748 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1175 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x118B JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x119E JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x11AC JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x11BF JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11E2 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x11ED DUP2 PUSH2 0x1748 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1205 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x11ED DUP2 PUSH2 0x1730 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1221 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1239 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1252 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x1264 DUP2 PUSH2 0x1730 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1286 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x1298 DUP2 PUSH2 0x1730 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x12A8 DUP2 PUSH2 0x1730 JUMP JUMPDEST SWAP5 SWAP8 SWAP4 SWAP7 POP SWAP4 SWAP5 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x12D4 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x12E6 DUP2 PUSH2 0x1730 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1309 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1340 JUMPI PUSH1 0x20 DUP2 DUP7 ADD DUP2 ADD MLOAD DUP6 DUP4 ADD MSTORE ADD PUSH2 0x1326 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x134E JUMPI DUP3 DUP3 DUP6 ADD MSTORE JUMPDEST POP SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP4 MLOAD SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x20 SWAP1 PUSH1 0x60 DUP5 ADD SWAP1 DUP3 DUP8 ADD DUP5 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x13C8 JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x13A3 JUMP JUMPDEST POP POP POP DUP4 DUP2 SUB DUP3 DUP6 ADD MSTORE DUP1 DUP6 MLOAD PUSH2 0x13DF DUP2 DUP5 PUSH2 0x16EF JUMP JUMPDEST SWAP2 POP DUP4 DUP8 ADD SWAP3 POP DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1409 JUMPI PUSH2 0x13FB DUP4 DUP6 MLOAD PUSH2 0x1318 JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH2 0x13E8 JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH21 0x426F72696E674D6174683A20556E646572666C6F77 PUSH1 0x58 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH19 0x506F6F6C20616C726561647920657869737473 PUSH1 0x68 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1C SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E6745524332303A205472616E73666572206661696C656400000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x21 SWAP1 DUP3 ADD MSTORE PUSH32 0x4F6E6C79204D4356322063616E2063616C6C20746869732066756E6374696F6E PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0xF9 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH21 0x4F776E61626C653A207A65726F2061646472657373 PUSH1 0x58 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH19 0x141BDBDB08191BD95CC81B9BDD08195E1A5CDD PUSH1 0x6A SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1C SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A2075696E74313238204F766572666C6F7700000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x18 SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A20416464204F766572666C6F770000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C657220213D2070656E64696E67206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A2075696E743634204F766572666C6F770000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x18 SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A204D756C204F766572666C6F770000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP3 DUP4 ADD MLOAD AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1745 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1745 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 JUMPI 0xCA DUP14 0xC3 0x5F 0x23 CODESIZE 0xBE 0xB2 REVERT SWAP15 SWAP16 PUSH15 0xD998D11A2E0CBE90BC43D4389CDC83 DUP7 RETURN CODESIZE STATICCALL PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "398:7011:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;774:472:1;;;;;;:::i;:::-;;:::i;:::-;;3579:97:10;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1188:45;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;4672:263::-;;;;;;:::i;:::-;;:::i;1523:28::-;;;:::i;5143:830::-;;;;;;:::i;:::-;;:::i;1295:348:1:-;;;:::i;6518:888:10:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;6151:188::-;;;;;;:::i;:::-;;:::i;1240:24::-;;;;;;:::i;:::-;;:::i;3926:513::-;;;;;;:::i;:::-;;:::i;350:20:1:-;;;:::i;:::-;;;;;;;:::i;1328:66:10:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;2250:685::-;;;;;;:::i;:::-;;:::i;2945:420::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;397:27:1:-;;;:::i;774:472::-;1746:5;;-1:-1:-1;;;;;1746:5:1;1732:10;:19;1724:64;;;;-1:-1:-1;;;1724:64:1;;;;;;;:::i;:::-;;;;;;;;;879:6:::1;875:364;;;-1:-1:-1::0;;;;;933:22:1;::::1;::::0;::::1;::::0;:34:::1;;;959:8;933:34;925:68;;;;-1:-1:-1::0;;;925:68:1::1;;;;;;;:::i;:::-;1060:5;::::0;;1039:37:::1;::::0;-1:-1:-1;;;;;1039:37:1;;::::1;::::0;1060:5;::::1;::::0;1039:37:::1;::::0;::::1;1091:5;:16:::0;;-1:-1:-1;;;;;1091:16:1;::::1;-1:-1:-1::0;;;;;;1091:16:1;;::::1;;::::0;;;;1122:25;;;;::::1;::::0;;875:364:::1;;;1204:12;:23:::0;;-1:-1:-1;;;;;;1204:23:1::1;-1:-1:-1::0;;;;;1204:23:1;::::1;;::::0;;875:364:::1;774:472:::0;;;:::o;3579:97:10:-;3655:7;:14;;3579:97::o;1188:45::-;;;;;;;;;;;;-1:-1:-1;;;;;1188:45:10;;;-1:-1:-1;;;;;;;;1188:45:10;;;;;-1:-1:-1;;;1188:45:10;;;;:::o;4672:263::-;1746:5:1;;-1:-1:-1;;;;;1746:5:1;1732:10;:19;1724:64;;;;-1:-1:-1;;;1724:64:1;;;;;;;:::i;:::-;4785:14:10::1;::::0;;;:8:::1;:14;::::0;;;;:25;4765:15:::1;::::0;:63:::1;::::0;4816:11;;4765:46:::1;::::0;-1:-1:-1;;;4785:25:10;::::1;-1:-1:-1::0;;;;;4785:25:10::1;4765:19;:46::i;:::-;:50:::0;::::1;:63::i;:::-;4747:15;:81:::0;4866:18:::1;:11:::0;:16:::1;:18::i;:::-;4838:14;::::0;;;:8:::1;:14;::::0;;;;;;:46;;-1:-1:-1;;;;;4838:46:10;;;::::1;-1:-1:-1::0;;;4838:46:10::1;-1:-1:-1::0;;;;;4838:46:10;;::::1;::::0;;;::::1;::::0;;;4899:29;4847:4;;4899:29:::1;::::0;::::1;::::0;4916:11;;4899:29:::1;:::i;:::-;;;;;;;;4672:263:::0;;:::o;1523:28::-;;;;:::o;5143:830::-;5215:15;5242:20;;:::i;:::-;-1:-1:-1;5265:14:10;;;;:8;:14;;;;;;;;5242:37;;;;;;;;;-1:-1:-1;;;;;5242:37:10;;;;;-1:-1:-1;;;;;;;;5242:37:10;;;;;;;;-1:-1:-1;;;5242:37:10;;;;;;;;;;5313:14;;;:8;:14;;;;;;-1:-1:-1;;;;;5313:21:10;;;;;;;;;;5376:26;;5431:39;;-1:-1:-1;;;5431:39:10;;5242:37;;5313:21;;5344:58;;;;;5265:14;;5443:12;5431:33;;;;;;:39;;5274:4;;5431:39;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5431:49:10;;5481:12;5431:63;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5412:82;;5523:4;:20;;;-1:-1:-1;;;;;5508:35:10;:12;:35;:52;;;;-1:-1:-1;5547:13:10;;;5508:52;5504:360;;;5576:14;5593:38;5610:4;:20;;;-1:-1:-1;;;;;5593:38:10;:12;:16;;:38;;;;:::i;:::-;5576:55;;5645:24;5721:15;;5672:46;5702:4;:15;;;-1:-1:-1;;;;;5672:46:10;:25;5683:13;;5672:6;:10;;:25;;;;:::i;:::-;:29;;:46::i;:::-;:64;;;;;;;-1:-1:-1;5774:79:10;5844:8;5800:41;5672:64;1604:4;5800:20;:41::i;:::-;:52;;;;;5774:21;;5800:52;;5774:25;:79::i;:::-;5750:103;;5504:360;;;5950:15;;;;5884:11;;5883:83;;5950:15;1604:4;;5884:38;;5900:21;5884:15;:38::i;:::-;:60;;;;;;;5883:66;:83::i;:::-;5873:93;5143:830;-1:-1:-1;;;;;;;5143:830:10:o;1295:348:1:-;1363:12;;-1:-1:-1;;;;;1363:12:1;1423:10;:27;;1415:72;;;;-1:-1:-1;;;1415:72:1;;;;;;;:::i;:::-;1546:5;;;1525:42;;-1:-1:-1;;;;;1525:42:1;;;;1546:5;;;1525:42;;;1578:5;:21;;-1:-1:-1;;;;;1578:21:1;;;-1:-1:-1;;;;;;1578:21:1;;;;;;;1610:25;;;;;;;1295:348::o;6518:888:10:-;6567:20;;:::i;:::-;-1:-1:-1;6606:13:10;;;;:8;:13;;;;;;;;;6599:20;;;;;;;;;-1:-1:-1;;;;;6599:20:10;;;;-1:-1:-1;;;;;;;;6599:20:10;;;;;;;;;;-1:-1:-1;;;6599:20:10;;;;;;;;;;;6629:57;;;;-1:-1:-1;;;6629:57:10;;;;;;;:::i;:::-;6715:4;:20;;;-1:-1:-1;;;;;6700:35:10;:12;:35;6696:704;;;6770:38;;-1:-1:-1;;;6770:38:10;;6751:16;;-1:-1:-1;;;;;6782:12:10;6770:33;;;;:38;;6804:3;;6770:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;6770:48:10;;6819:12;6770:62;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6751:81;-1:-1:-1;6851:12:10;;6847:356;;6883:14;6900:38;6917:4;:20;;;-1:-1:-1;;;;;6900:38:10;:12;:16;;:38;;;;:::i;:::-;6883:55;;6956:24;7032:15;;6983:46;7013:4;:15;;;-1:-1:-1;;;;;6983:46:10;:25;6994:13;;6983:6;:10;;:25;;;;:::i;:46::-;:64;;;;;;;-1:-1:-1;7094:94:10;7125:62;7170:8;7126:41;6983:64;1604:4;7126:20;:41::i;:::-;:52;;;;;;7125:60;:62::i;:::-;7094:26;;-1:-1:-1;;;;;7094:30:10;;;:94::i;:::-;-1:-1:-1;;;;;7065:123:10;;;-1:-1:-1;;6847:356:10;7239:19;:12;:17;:19::i;:::-;-1:-1:-1;;;;;7216:42:10;;;:20;;;;:42;;;7272:13;;;;:8;:13;;;;;;;;:20;;;;;;;;;;-1:-1:-1;;;;;;7272:20:10;;;-1:-1:-1;;;;;7272:20:10;;;-1:-1:-1;;;;7272:20:10;-1:-1:-1;;;7272:20:10;;;;;-1:-1:-1;;;;;7272:20:10;-1:-1:-1;;;7272:20:10;;;;;;;;;;;;;;7311:78;7272:13;;7311:78;;;;7272:20;;7352:8;;7311:78;:::i;:::-;;;;;;;;6696:704;;6518:888;;;:::o;6151:188::-;6234:4;6220:11;6255:78;6279:3;6275:1;:7;6255:78;;;6303:19;6314:4;;6319:1;6314:7;;;;;;;;;;;;;6303:10;:19::i;:::-;-1:-1:-1;6284:3:10;;6255:78;;;;6151:188;;;:::o;1240:24::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1240:24:10;:::o;3926:513::-;1746:5:1;;-1:-1:-1;;;;;1746:5:1;1732:10;:19;1724:64;;;;-1:-1:-1;;;1724:64:1;;;;;;;:::i;:::-;4008:14:10::1;::::0;;;:8:::1;:14;::::0;;;;:30;-1:-1:-1;;;4008:30:10;::::1;-1:-1:-1::0;;;;;4008:30:10::1;:35:::0;4000:67:::1;;;;-1:-1:-1::0;;;4000:67:10::1;;;;;;;:::i;:::-;4143:15;::::0;4103:12:::1;::::0;4143:31:::1;::::0;4163:10;4143:19:::1;:31::i;:::-;4125:15;:49:::0;4202:154:::1;::::0;;::::1;::::0;::::1;::::0;;;-1:-1:-1;4202:154:10;;::::1;::::0;::::1;4285:22;:15:::0;:20:::1;:22::i;:::-;-1:-1:-1::0;;;;;4202:154:10::1;;;;;4237:17;:10;:15;:17::i;:::-;-1:-1:-1::0;;;;;4202:154:10;;::::1;::::0;;;4185:14:::1;::::0;;;:8:::1;:14;::::0;;;;;;;:171;;;;;;::::1;::::0;;;::::1;::::0;;::::1;-1:-1:-1::0;;;4185:171:10::1;-1:-1:-1::0;;;;;4185:171:10;;;::::1;-1:-1:-1::0;;;4185:171:10::1;-1:-1:-1::0;;;;;;;;;4185:171:10;;::::1;-1:-1:-1::0;;;;;;4185:171:10;;::::1;::::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;4366:7:::1;:18:::0;;4185:171;4366:18;::::1;::::0;;;;;::::1;::::0;;;4399:33;4194:4;;4399:33:::1;::::0;::::1;::::0;4421:10;;4399:33:::1;:::i;:::-;;;;;;;;1799:1:1;3926:513:10::0;;:::o;350:20:1:-;;;-1:-1:-1;;;;;350:20:1;;:::o;1328:66:10:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2250:685::-;3420:10;-1:-1:-1;;;;;3434:12:10;3420:26;;3399:106;;;;-1:-1:-1;;;3399:106:10;;;;;;;:::i;:::-;2382:20:::1;;:::i;:::-;2405:15;2416:3;2405:10;:15::i;:::-;2430:21;2454:13:::0;;;:8:::1;:13;::::0;;;;;;;-1:-1:-1;;;;;2454:20:10;::::1;::::0;;;;;;;2513:11;;2382:38;;-1:-1:-1;2454:20:10;2513:15;2509:249:::1;;2663:15;::::0;::::1;::::0;2587:26;;2571:11;;2570:126:::1;::::0;2663:15;1604:4:::1;::::0;2571:43:::1;::::0;-1:-1:-1;;;;;2571:43:10::1;:15;:43::i;2570:126::-;2544:152:::0;-1:-1:-1;2710:37:10::1;-1:-1:-1::0;;;;;2710:11:10::1;:24;2735:2:::0;2544:152;2710:24:::1;:37::i;:::-;2767:21:::0;;;2828:26;;1604:4:::1;::::0;2816:39:::1;::::0;2781:7;;-1:-1:-1;;;;;2816:39:10::1;:11;:39::i;:::-;:61;;;;;;2798:4;:15;;:79;;;;2925:2;-1:-1:-1::0;;;;;2892:36:10::1;2911:3;2904:5;-1:-1:-1::0;;;;;2892:36:10::1;;2916:7;2892:36;;;;;;:::i;:::-;;;;;;;;3515:1;;;2250:685:::0;;;;;:::o;2945:420::-;3140:15;;;3153:1;3140:15;;;;;;;;;3036:28;;;;;;3140:15;;;;;;;;;;;-1:-1:-1;3140:15:10;3108:47;;3185:11;3165:13;3179:1;3165:16;;;;;;;;-1:-1:-1;;;;;3165:32:10;;;;:16;;;;;;;;;;;:32;3241:16;;;3255:1;3241:16;;;;;;;;;3207:31;;3241:16;;;;;;;;;;;;-1:-1:-1;3241:16:10;3207:50;;3287:23;3300:3;3305:4;3287:12;:23::i;:::-;3267:14;3282:1;3267:17;;;;;;;;;;;;;;;;;:43;3328:13;;;;-1:-1:-1;2945:420:10;-1:-1:-1;;;;2945:420:10:o;397:27:1:-;;;-1:-1:-1;;;;;397:27:1;;:::o;342:122:4:-;425:5;;;420:16;;;;412:50;;;;-1:-1:-1;;;412:50:4;;;;;;;:::i;:::-;342:122;;;;:::o;211:125::-;294:5;;;289:16;;;;281:53;;;;-1:-1:-1;;;281:53:4;;;;;;;:::i;780:156::-;828:8;-1:-1:-1;;;;;857:15:4;;;849:55;;;;-1:-1:-1;;;849:55:4;;;;;;;:::i;:::-;-1:-1:-1;926:1:4;780:156::o;470:137::-;528:9;548:6;;;:28;;-1:-1:-1;;563:5:4;;;575:1;570;563:5;570:1;558:13;;;;;:18;548:28;540:65;;;;-1:-1:-1;;;540:65:4;;;;;;;:::i;613:161::-;662:9;-1:-1:-1;;;;;692:16:4;;;684:57;;;;-1:-1:-1;;;684:57:4;;;;;;;:::i;1134:125::-;1217:5;;;-1:-1:-1;;;;;1212:16:4;;;;;;;;1204:53;;;;-1:-1:-1;;;1204:53:4;;;;;;;:::i;951:304:3:-;1036:12;1050:17;1079:5;-1:-1:-1;;;;;1071:19:3;1114:10;1126:2;1130:6;1091:46;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1091:46:3;;;;;;;;;;;1071:67;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1035:103;;;;1157:7;:57;;;;-1:-1:-1;1169:11:3;;:16;;:44;;;1200:4;1189:24;;;;;;;;;;;;:::i;:::-;1149:98;;;;-1:-1:-1;;;1149:98:3;;;;;;;:::i;:::-;951:304;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1233:479::-;;;;1365:2;1353:9;1344:7;1340:23;1336:32;1333:2;;;-1:-1;;1371:12;1333:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;1423:63;-1:-1;1523:2;1559:22;;584:20;609:30;584:20;609:30;:::i;:::-;1531:60;-1:-1;1628:2;1664:22;;584:20;609:30;584:20;609:30;:::i;:::-;1636:60;;;;1327:385;;;;;:::o;1719:397::-;;;1858:2;1846:9;1837:7;1833:23;1829:32;1826:2;;;-1:-1;;1864:12;1826:2;1922:17;1909:31;-1:-1;;;;;1960:18;1952:6;1949:30;1946:2;;;-1:-1;;1982:12;1946:2;2083:6;2072:9;2068:22;;;290:3;283:4;275:6;271:17;267:27;257:2;;-1:-1;;298:12;257:2;341:6;328:20;1960:18;360:6;357:30;354:2;;;-1:-1;;390:12;354:2;485:3;1858:2;;469:6;465:17;426:6;451:32;;448:41;445:2;;;-1:-1;;492:12;445:2;1858;422:17;;;;;2002:98;;-1:-1;1820:296;;-1:-1;;;;1820:296::o;2123:257::-;;2235:2;2223:9;2214:7;2210:23;2206:32;2203:2;;;-1:-1;;2241:12;2203:2;732:6;726:13;744:30;768:5;744:30;:::i;:::-;2293:71;2197:183;-1:-1;;;2197:183::o;2387:291::-;;2516:2;2504:9;2495:7;2491:23;2487:32;2484:2;;;-1:-1;;2522:12;2484:2;884:6;878:13;896:47;937:5;896:47;:::i;2685:241::-;;2789:2;2777:9;2768:7;2764:23;2760:32;2757:2;;;-1:-1;;2795:12;2757:2;-1:-1;1022:20;;2751:175;-1:-1;2751:175::o;2933:263::-;;3048:2;3036:9;3027:7;3023:23;3019:32;3016:2;;;-1:-1;;3054:12;3016:2;-1:-1;1170:13;;3010:186;-1:-1;3010:186::o;3203:366::-;;;3324:2;3312:9;3303:7;3299:23;3295:32;3292:2;;;-1:-1;;3330:12;3292:2;1035:6;1022:20;3382:63;;3482:2;3525:9;3521:22;72:20;97:33;124:5;97:33;:::i;:::-;3490:63;;;;3286:283;;;;;:::o;3576:743::-;;;;;;3748:3;3736:9;3727:7;3723:23;3719:33;3716:2;;;-1:-1;;3755:12;3716:2;1035:6;1022:20;3807:63;;3907:2;3950:9;3946:22;72:20;97:33;124:5;97:33;:::i;:::-;3915:63;-1:-1;4015:2;4054:22;;72:20;97:33;72:20;97:33;:::i;:::-;3710:609;;;;-1:-1;4023:63;;4123:2;4162:22;;1022:20;;-1:-1;4231:3;4271:22;1022:20;;3710:609;-1:-1;;3710:609::o;4326:491::-;;;;4464:2;4452:9;4443:7;4439:23;4435:32;4432:2;;;-1:-1;;4470:12;4432:2;1035:6;1022:20;4522:63;;4622:2;4665:9;4661:22;72:20;97:33;124:5;97:33;:::i;:::-;4426:391;;4630:63;;-1:-1;;;4730:2;4769:22;;;;1022:20;;4426:391::o;4824:366::-;;;4945:2;4933:9;4924:7;4920:23;4916:32;4913:2;;;-1:-1;;4951:12;4913:2;-1:-1;;1022:20;;;5103:2;5142:22;;;1022:20;;-1:-1;4907:283::o;5408:173::-;12978:37;;5570:4;5561:14;;5488:93::o;13371:271::-;;7405:5;22197:12;-1:-1;24658:101;24672:6;24669:1;24666:13;24658:101;;;7549:4;24739:11;;;;;24733:18;24720:11;;;24713:39;24687:10;24658:101;;;24774:6;24771:1;24768:13;24765:2;;;-1:-1;24830:6;24825:3;24821:16;24814:27;24765:2;-1:-1;7580:16;;;;;13505:137;-1:-1;;13505:137::o;13649:222::-;-1:-1;;;;;23937:54;;;;5660:37;;13776:2;13761:18;;13747:124::o;13878:333::-;-1:-1;;;;;23937:54;;;;5660:37;;14197:2;14182:18;;12978:37;14033:2;14018:18;;14004:207::o;14218:657::-;14487:2;14501:47;;;22197:12;;14472:18;;;22873:19;;;14218:657;;22922:4;;22913:14;;;;21879;;;14218:657;6198:288;6223:6;6220:1;6217:13;6198:288;;;6284:13;;-1:-1;;;;;23937:54;7683:64;;5379:14;;;;22613;;;;1960:18;6238:9;6198:288;;;6202:14;;;14732:9;14726:4;14722:20;22922:4;14706:9;14702:18;14695:48;14757:108;6740:5;22197:12;6759:86;6838:6;6833:3;6759:86;:::i;:::-;6752:93;;22922:4;6916:5;21879:14;6928:21;;-1:-1;6955:260;6980:6;6977:1;6974:13;6955:260;;;7068:63;7127:3;7047:6;7041:13;7068:63;:::i;:::-;22613:14;;;;7061:70;-1:-1;6245:1;6995:9;6955:260;;;-1:-1;14749:116;;14458:417;-1:-1;;;;;;;14458:417::o;14882:416::-;15082:2;15096:47;;;7984:2;15067:18;;;22873:19;-1:-1;;;22913:14;;;8000:44;8063:12;;;15053:245::o;15305:416::-;15505:2;15519:47;;;8314:2;15490:18;;;22873:19;-1:-1;;;22913:14;;;8330:42;8391:12;;;15476:245::o;15728:416::-;15928:2;15942:47;;;8642:2;15913:18;;;22873:19;8678:30;22913:14;;;8658:51;8728:12;;;15899:245::o;16151:416::-;16351:2;16365:47;;;8979:2;16336:18;;;22873:19;9015:34;22913:14;;;8995:55;-1:-1;;;9070:12;;;9063:25;9107:12;;;16322:245::o;16574:416::-;16774:2;16788:47;;;9358:2;16759:18;;;22873:19;-1:-1;;;22913:14;;;9374:44;9437:12;;;16745:245::o;16997:416::-;17197:2;17211:47;;;9688:2;17182:18;;;22873:19;-1:-1;;;22913:14;;;9704:42;9765:12;;;17168:245::o;17420:416::-;17620:2;17634:47;;;10016:2;17605:18;;;22873:19;10052:30;22913:14;;;10032:51;10102:12;;;17591:245::o;17843:416::-;18043:2;18057:47;;;10353:2;18028:18;;;22873:19;10389:26;22913:14;;;10369:47;10435:12;;;18014:245::o;18266:416::-;18466:2;18480:47;;;18451:18;;;22873:19;10722:34;22913:14;;;10702:55;10776:12;;;18437:245::o;18689:416::-;18889:2;18903:47;;;18874:18;;;22873:19;11063:34;22913:14;;;11043:55;11117:12;;;18860:245::o;19112:416::-;19312:2;19326:47;;;11368:2;19297:18;;;22873:19;11404:29;22913:14;;;11384:50;11453:12;;;19283:245::o;19535:416::-;19735:2;19749:47;;;11704:2;19720:18;;;22873:19;11740:26;22913:14;;;11720:47;11786:12;;;19706:245::o;19958:326::-;12113:23;;-1:-1;;;;;23817:46;12615:37;;12295:4;12284:16;;;12278:23;-1:-1;;;;;24143:30;;;12353:14;;;13206:36;;;;12453:4;12442:16;;;12436:23;24143:30;12511:14;;;13206:36;;;;20137:2;20122:18;;20108:176::o;20291:436::-;-1:-1;;;;;23817:46;;;;12615:37;;-1:-1;;;;;24143:30;;;20632:2;20617:18;;13206:36;24143:30;20713:2;20698:18;;13206:36;20470:2;20455:18;;20441:286::o;20734:222::-;12978:37;;;20861:2;20846:18;;20832:124::o;20963:333::-;12978:37;;;21282:2;21267:18;;12978:37;21118:2;21103:18;;21089:207::o;21303:440::-;-1:-1;;;;;24143:30;;;;13206:36;;21646:2;21631:18;;12978:37;;;;-1:-1;;;;;23817:46;21729:2;21714:18;;12855:50;21484:2;21469:18;;21455:288::o;24862:117::-;-1:-1;;;;;23937:54;;24921:35;;24911:2;;24970:1;;24960:12;24911:2;24905:74;:::o;24986:111::-;25067:5;23617:13;23610:21;25045:5;25042:32;25032:2;;25088:1;;25078:12"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "1205600",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "add(uint256,uint256)": "infinite",
                "claimOwnership()": "45089",
                "massUpdatePools(uint256[])": "infinite",
                "onGoldNuggetReward(uint256,address,address,uint256,uint256)": "infinite",
                "owner()": "1159",
                "pendingOwner()": "1158",
                "pendingToken(uint256,address)": "infinite",
                "pendingTokens(uint256,address,uint256)": "infinite",
                "poolIds(uint256)": "2041",
                "poolInfo(uint256)": "1411",
                "poolLength()": "1074",
                "set(uint256,uint256)": "infinite",
                "tokenPerBlock()": "1051",
                "transferOwnership(address,bool,bool)": "infinite",
                "updatePool(uint256)": "infinite",
                "userInfo(uint256,address)": "2204"
              }
            },
            "methodIdentifiers": {
              "add(uint256,uint256)": "771602f7",
              "claimOwnership()": "4e71e0c8",
              "massUpdatePools(uint256[])": "57a5b58c",
              "onGoldNuggetReward(uint256,address,address,uint256,uint256)": "a3d83320",
              "owner()": "8da5cb5b",
              "pendingOwner()": "e30c3978",
              "pendingToken(uint256,address)": "48e43af4",
              "pendingTokens(uint256,address,uint256)": "d63b3c49",
              "poolIds(uint256)": "69883b4e",
              "poolInfo(uint256)": "1526fe27",
              "poolLength()": "081e3eda",
              "set(uint256,uint256)": "1ab06ee5",
              "tokenPerBlock()": "4198709a",
              "transferOwnership(address,bool,bool)": "078dfbe7",
              "updatePool(uint256)": "51eb05a6",
              "userInfo(uint256,address)": "93f1a40b"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"_rewardToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenPerBlock\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_GOLDMINER_V2\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"LogInit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"LogOnReward\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"allocPoint\",\"type\":\"uint256\"}],\"name\":\"LogPoolAddition\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"allocPoint\",\"type\":\"uint256\"}],\"name\":\"LogSetPool\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"lastRewardBlock\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"accGoldNuggetPerShare\",\"type\":\"uint256\"}],\"name\":\"LogUpdatePool\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"allocPoint\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"}],\"name\":\"add\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"pids\",\"type\":\"uint256[]\"}],\"name\":\"massUpdatePools\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lpToken\",\"type\":\"uint256\"}],\"name\":\"onGoldNuggetReward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"pendingToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"pending\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"pendingTokens\",\"outputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"rewardTokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"rewardAmounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"poolIds\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"poolInfo\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"accGoldNuggetPerShare\",\"type\":\"uint128\"},{\"internalType\":\"uint64\",\"name\":\"lastRewardBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"allocPoint\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"poolLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"pools\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_allocPoint\",\"type\":\"uint256\"}],\"name\":\"set\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenPerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"direct\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"renounce\",\"type\":\"bool\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"}],\"name\":\"updatePool\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"accGoldNuggetPerShare\",\"type\":\"uint128\"},{\"internalType\":\"uint64\",\"name\":\"lastRewardBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"allocPoint\",\"type\":\"uint64\"}],\"internalType\":\"struct ComplexRewarder.PoolInfo\",\"name\":\"pool\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"userInfo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rewardDebt\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"@0xKeno\",\"kind\":\"dev\",\"methods\":{\"add(uint256,uint256)\":{\"params\":{\"_pid\":\"Pid on MCV2\",\"allocPoint\":\"AP of the new pool.\"}},\"massUpdatePools(uint256[])\":{\"params\":{\"pids\":\"Pool IDs of all to be updated. Make sure to update all active pools.\"}},\"pendingToken(uint256,address)\":{\"params\":{\"_pid\":\"The index of the pool. See `poolInfo`.\",\"_user\":\"Address of user.\"},\"returns\":{\"pending\":\"GOLN reward for a given user.\"}},\"set(uint256,uint256)\":{\"params\":{\"_allocPoint\":\"New AP of the pool.\",\"_pid\":\"The index of the pool. See `poolInfo`.\"}},\"updatePool(uint256)\":{\"params\":{\"pid\":\"The index of the pool. See `poolInfo`.\"},\"returns\":{\"pool\":\"Returns the pool that was updated.\"}}},\"stateVariables\":{\"totalAllocPoint\":{\"details\":\"Total allocation points. Must be the sum of all allocation points in all pools.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"add(uint256,uint256)\":{\"notice\":\"Add a new LP to the pool.  Can only be called by the owner. DO NOT add the same LP token more than once. Rewards will be messed up if you do.\"},\"massUpdatePools(uint256[])\":{\"notice\":\"Update reward variables for all pools. Be careful of gas spending!\"},\"pendingToken(uint256,address)\":{\"notice\":\"View function to see pending Token\"},\"poolInfo(uint256)\":{\"notice\":\"Info of each pool.\"},\"poolLength()\":{\"notice\":\"Returns the number of MCV2 pools.\"},\"set(uint256,uint256)\":{\"notice\":\"Update the given pool's GOLN allocation point and `IRewarder` contract. Can only be called by the owner.\"},\"updatePool(uint256)\":{\"notice\":\"Update reward variables of the given pool.\"},\"userInfo(uint256,address)\":{\"notice\":\"Info of each user that stakes LP tokens.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/mocks/ComplexRewarder.sol\":\"ComplexRewarder\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@boringcrypto/boring-solidity/contracts/BoringBatchable.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\r\\n// Audit on 5-Jan-2021 by Keno and BoringCrypto\\r\\n\\r\\n// P1 - P3: OK\\r\\npragma solidity 0.6.12;\\r\\npragma experimental ABIEncoderV2;\\r\\n// solhint-disable avoid-low-level-calls\\r\\n\\r\\nimport \\\"./libraries/BoringERC20.sol\\\";\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BaseBoringBatchable {\\r\\n    function _getRevertMsg(bytes memory _returnData) internal pure returns (string memory) {\\r\\n        // If the _res length is less than 68, then the transaction failed silently (without a revert message)\\r\\n        if (_returnData.length < 68) return \\\"Transaction reverted silently\\\";\\r\\n\\r\\n        assembly {\\r\\n            // Slice the sighash.\\r\\n            _returnData := add(_returnData, 0x04)\\r\\n        }\\r\\n        return abi.decode(_returnData, (string)); // All that remains is the revert string\\r\\n    }    \\r\\n    \\r\\n    // F3 - F9: OK\\r\\n    // F1: External is ok here because this is the batch function, adding it to a batch makes no sense\\r\\n    // F2: Calls in the batch may be payable, delegatecall operates in the same context, so each call in the batch has access to msg.value\\r\\n    // C1 - C21: OK\\r\\n    // C3: The length of the loop is fully under user control, so can't be exploited\\r\\n    // C7: Delegatecall is only used on the same contract, so it's safe\\r\\n    function batch(bytes[] calldata calls, bool revertOnFail) external payable returns(bool[] memory successes, bytes[] memory results) {\\r\\n        // Interactions\\r\\n        successes = new bool[](calls.length);\\r\\n        results = new bytes[](calls.length);\\r\\n        for (uint256 i = 0; i < calls.length; i++) {\\r\\n            (bool success, bytes memory result) = address(this).delegatecall(calls[i]);\\r\\n            require(success || !revertOnFail, _getRevertMsg(result));\\r\\n            successes[i] = success;\\r\\n            results[i] = result;\\r\\n        }\\r\\n    }\\r\\n}\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BoringBatchable is BaseBoringBatchable {\\r\\n    // F1 - F9: OK\\r\\n    // F6: Parameters can be used front-run the permit and the user's permit will fail (due to nonce or other revert)\\r\\n    //     if part of a batch this could be used to grief once as the second call would not need the permit\\r\\n    // C1 - C21: OK\\r\\n    function permitToken(IERC20 token, address from, address to, uint256 amount, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {\\r\\n        // Interactions\\r\\n        // X1 - X5\\r\\n        token.permit(from, to, amount, deadline, v, r, s);\\r\\n    }\\r\\n}\",\"keccak256\":\"0xe0b0316b015447ee28c6b7d96c4347b410a66e5d26e922ef3bcccc22f3b4d590\",\"license\":\"UNLICENSED\"},\"@boringcrypto/boring-solidity/contracts/BoringOwnable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\n// Audit on 5-Jan-2021 by Keno and BoringCrypto\\r\\n\\r\\n// P1 - P3: OK\\r\\npragma solidity 0.6.12;\\r\\n\\r\\n// Source: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol + Claimable.sol\\r\\n// Edited by BoringCrypto\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BoringOwnableData {\\r\\n    // V1 - V5: OK\\r\\n    address public owner;\\r\\n    // V1 - V5: OK\\r\\n    address public pendingOwner;\\r\\n}\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BoringOwnable is BoringOwnableData {\\r\\n    // E1: OK\\r\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\r\\n\\r\\n    constructor () public {\\r\\n        owner = msg.sender;\\r\\n        emit OwnershipTransferred(address(0), msg.sender);\\r\\n    }\\r\\n\\r\\n    // F1 - F9: OK\\r\\n    // C1 - C21: OK\\r\\n    function transferOwnership(address newOwner, bool direct, bool renounce) public onlyOwner {\\r\\n        if (direct) {\\r\\n            // Checks\\r\\n            require(newOwner != address(0) || renounce, \\\"Ownable: zero address\\\");\\r\\n\\r\\n            // Effects\\r\\n            emit OwnershipTransferred(owner, newOwner);\\r\\n            owner = newOwner;\\r\\n            pendingOwner = address(0);\\r\\n        } else {\\r\\n            // Effects\\r\\n            pendingOwner = newOwner;\\r\\n        }\\r\\n    }\\r\\n\\r\\n    // F1 - F9: OK\\r\\n    // C1 - C21: OK\\r\\n    function claimOwnership() public {\\r\\n        address _pendingOwner = pendingOwner;\\r\\n        \\r\\n        // Checks\\r\\n        require(msg.sender == _pendingOwner, \\\"Ownable: caller != pending owner\\\");\\r\\n\\r\\n        // Effects\\r\\n        emit OwnershipTransferred(owner, _pendingOwner);\\r\\n        owner = _pendingOwner;\\r\\n        pendingOwner = address(0);\\r\\n    }\\r\\n\\r\\n    // M1 - M5: OK\\r\\n    // C1 - C21: OK\\r\\n    modifier onlyOwner() {\\r\\n        require(msg.sender == owner, \\\"Ownable: caller is not the owner\\\");\\r\\n        _;\\r\\n    }\\r\\n}\",\"keccak256\":\"0xfafb586b248c1c697227f5745397562cfe5be2f04e19fb80fc79fc94e3afaba1\",\"license\":\"MIT\"},\"@boringcrypto/boring-solidity/contracts/interfaces/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity 0.6.12;\\r\\n\\r\\ninterface IERC20 {\\r\\n    function totalSupply() external view returns (uint256);\\r\\n    function balanceOf(address account) external view returns (uint256);\\r\\n    function allowance(address owner, address spender) external view returns (uint256);\\r\\n    function approve(address spender, uint256 amount) external returns (bool);\\r\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\r\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\r\\n\\r\\n    // EIP 2612\\r\\n    function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;\\r\\n}\",\"keccak256\":\"0x8004f86e4536cca55b8eeb2621fe18e1ee57d779396ddef50bce5bf70fb59867\",\"license\":\"MIT\"},\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\r\\npragma solidity 0.6.12;\\r\\n\\r\\nimport \\\"../interfaces/IERC20.sol\\\";\\r\\n\\r\\nlibrary BoringERC20 {\\r\\n    function safeSymbol(IERC20 token) internal view returns(string memory) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x95d89b41));\\r\\n        return success && data.length > 0 ? abi.decode(data, (string)) : \\\"???\\\";\\r\\n    }\\r\\n\\r\\n    function safeName(IERC20 token) internal view returns(string memory) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x06fdde03));\\r\\n        return success && data.length > 0 ? abi.decode(data, (string)) : \\\"???\\\";\\r\\n    }\\r\\n\\r\\n    function safeDecimals(IERC20 token) internal view returns (uint8) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x313ce567));\\r\\n        return success && data.length == 32 ? abi.decode(data, (uint8)) : 18;\\r\\n    }\\r\\n\\r\\n    function safeTransfer(IERC20 token, address to, uint256 amount) internal {\\r\\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0xa9059cbb, to, amount));\\r\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"BoringERC20: Transfer failed\\\");\\r\\n    }\\r\\n\\r\\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 amount) internal {\\r\\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0x23b872dd, from, to, amount));\\r\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"BoringERC20: TransferFrom failed\\\");\\r\\n    }\\r\\n}\",\"keccak256\":\"0x69f1ccf716991e5d6d64dc0e3bc3828fd1990bc18400d680b1aa1960675daaaa\",\"license\":\"UNLICENSED\"},\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity 0.6.12;\\r\\n// a library for performing overflow-safe math, updated with awesomeness from of DappHub (https://github.com/dapphub/ds-math)\\r\\nlibrary BoringMath {\\r\\n    function add(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {require(b == 0 || (c = a * b)/b == a, \\\"BoringMath: Mul Overflow\\\");}\\r\\n    function to128(uint256 a) internal pure returns (uint128 c) {\\r\\n        require(a <= uint128(-1), \\\"BoringMath: uint128 Overflow\\\");\\r\\n        c = uint128(a);\\r\\n    }\\r\\n    function to64(uint256 a) internal pure returns (uint64 c) {\\r\\n        require(a <= uint64(-1), \\\"BoringMath: uint64 Overflow\\\");\\r\\n        c = uint64(a);\\r\\n    }\\r\\n    function to32(uint256 a) internal pure returns (uint32 c) {\\r\\n        require(a <= uint32(-1), \\\"BoringMath: uint32 Overflow\\\");\\r\\n        c = uint32(a);\\r\\n    }\\r\\n}\\r\\n\\r\\nlibrary BoringMath128 {\\r\\n    function add(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\\r\\n\\r\\nlibrary BoringMath64 {\\r\\n    function add(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\\r\\n\\r\\nlibrary BoringMath32 {\\r\\n    function add(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\",\"keccak256\":\"0x2d0e99483c5618251d4b52e8551918253bf044c63e0d09a2f1f652671f9ff762\",\"license\":\"MIT\"},\"contracts/GoldMinerV2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.6.12;\\npragma experimental ABIEncoderV2;\\n\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\\\";\\nimport \\\"@boringcrypto/boring-solidity/contracts/BoringBatchable.sol\\\";\\nimport \\\"@boringcrypto/boring-solidity/contracts/BoringOwnable.sol\\\";\\nimport \\\"./libraries/SignedSafeMath.sol\\\";\\nimport \\\"./interfaces/IRewarder.sol\\\";\\nimport \\\"./interfaces/IGoldMiner.sol\\\";\\n\\ninterface IMigratorMiner {\\n    // Take the current LP token address and return the new LP token address.\\n    // Migrator should have full access to the caller's LP token.\\n    function migrate(IERC20 token) external returns (IERC20);\\n}\\n\\n/// @notice The (older) GoldMiner contract gives out a constant number of GOLN tokens per block.\\n/// It is the only address with minting rights for GOLN.\\n/// The idea for this GoldMiner V2 (MCV2) contract is therefore to be the owner of a dummy token\\n/// that is deposited into the GoldMiner V1 (MCV1) contract.\\n/// The allocation point for this pool on MCV1 is the total allocation point for all pools that receive double incentives.\\ncontract GoldMinerV2 is BoringOwnable, BoringBatchable {\\n    using BoringMath for uint256;\\n    using BoringMath128 for uint128;\\n    using BoringERC20 for IERC20;\\n    using SignedSafeMath for int256;\\n\\n    /// @notice Info of each MCV2 user.\\n    /// `amount` LP token amount the user has provided.\\n    /// `rewardDebt` The amount of GOLN entitled to the user.\\n    struct UserInfo {\\n        uint256 amount;\\n        int256 rewardDebt;\\n    }\\n\\n    /// @notice Info of each MCV2 pool.\\n    /// `allocPoint` The amount of allocation points assigned to the pool.\\n    /// Also known as the amount of GOLN to distribute per block.\\n    struct PoolInfo {\\n        uint128 accGoldNuggetPerShare;\\n        uint64 lastRewardBlock;\\n        uint64 allocPoint;\\n    }\\n\\n    /// @notice Address of MCV1 contract.\\n    IGoldMiner public immutable GOLD_MINER;\\n    /// @notice Address of GOLN contract.\\n    IERC20 public immutable GOLN;\\n    /// @notice The index of MCV2 master pool in MCV1.\\n    uint256 public immutable GOLD_PID;\\n    // @notice The migrator contract. It has a lot of power. Can only be set through governance (owner).\\n    IMigratorMiner public migrator;\\n\\n    /// @notice Info of each MCV2 pool.\\n    PoolInfo[] public poolInfo;\\n    /// @notice Address of the LP token for each MCV2 pool.\\n    IERC20[] public lpToken;\\n    /// @notice Address of each `IRewarder` contract in MCV2.\\n    IRewarder[] public rewarder;\\n\\n    /// @notice Info of each user that stakes LP tokens.\\n    mapping (uint256 => mapping (address => UserInfo)) public userInfo;\\n    /// @dev Total allocation points. Must be the sum of all allocation points in all pools.\\n    uint256 public totalAllocPoint;\\n\\n    uint256 private constant GOLDMINER_GOLN_PER_BLOCK = 1e20;\\n    uint256 private constant ACC_GOLN_PRECISION = 1e12;\\n\\n    event Deposit(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\\n    event Withdraw(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\\n    event EmergencyWithdraw(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\\n    event Harvest(address indexed user, uint256 indexed pid, uint256 amount);\\n    event LogPoolAddition(uint256 indexed pid, uint256 allocPoint, IERC20 indexed lpToken, IRewarder indexed rewarder);\\n    event LogSetPool(uint256 indexed pid, uint256 allocPoint, IRewarder indexed rewarder, bool overwrite);\\n    event LogUpdatePool(uint256 indexed pid, uint64 lastRewardBlock, uint256 lpSupply, uint256 accGoldNuggetPerShare);\\n    event LogInit();\\n\\n    /// @param _GOLD_MINER The LuckySwap MCV1 contract address.\\n    /// @param _goldnugget The GOLN token contract address.\\n    /// @param _GOLD_PID The pool ID of the dummy token on the base MCV1 contract.\\n    constructor(IGoldMiner _GOLD_MINER, IERC20 _goldnugget, uint256 _GOLD_PID) public {\\n        GOLD_MINER = _GOLD_MINER;\\n        GOLN = _goldnugget;\\n        GOLD_PID = _GOLD_PID;\\n    }\\n\\n    /// @notice Deposits a dummy token to `GOLD_MINER` MCV1. This is required because MCV1 holds the minting rights for GOLN.\\n    /// Any balance of transaction sender in `dummyToken` is transferred.\\n    /// The allocation point for the pool on MCV1 is the total allocation point for all pools that receive double incentives.\\n    /// @param dummyToken The address of the ERC-20 token to deposit into MCV1.\\n    function init(IERC20 dummyToken) external {\\n        uint256 balance = dummyToken.balanceOf(msg.sender);\\n        require(balance != 0, \\\"GoldMinerV2: Balance must exceed 0\\\");\\n        dummyToken.safeTransferFrom(msg.sender, address(this), balance);\\n        dummyToken.approve(address(GOLD_MINER), balance);\\n        GOLD_MINER.deposit(GOLD_PID, balance);\\n        emit LogInit();\\n    }\\n\\n    /// @notice Returns the number of MCV2 pools.\\n    function poolLength() public view returns (uint256 pools) {\\n        pools = poolInfo.length;\\n    }\\n\\n    /// @notice Add a new LP to the pool. Can only be called by the owner.\\n    /// DO NOT add the same LP token more than once. Rewards will be messed up if you do.\\n    /// @param allocPoint AP of the new pool.\\n    /// @param _lpToken Address of the LP ERC-20 token.\\n    /// @param _rewarder Address of the rewarder delegate.\\n    function add(uint256 allocPoint, IERC20 _lpToken, IRewarder _rewarder) public onlyOwner {\\n        uint256 lastRewardBlock = block.number;\\n        totalAllocPoint = totalAllocPoint.add(allocPoint);\\n        lpToken.push(_lpToken);\\n        rewarder.push(_rewarder);\\n\\n        poolInfo.push(PoolInfo({\\n            allocPoint: allocPoint.to64(),\\n            lastRewardBlock: lastRewardBlock.to64(),\\n            accGoldNuggetPerShare: 0\\n        }));\\n        emit LogPoolAddition(lpToken.length.sub(1), allocPoint, _lpToken, _rewarder);\\n    }\\n\\n    /// @notice Update the given pool's GOLN allocation point and `IRewarder` contract. Can only be called by the owner.\\n    /// @param _pid The index of the pool. See `poolInfo`.\\n    /// @param _allocPoint New AP of the pool.\\n    /// @param _rewarder Address of the rewarder delegate.\\n    /// @param overwrite True if _rewarder should be `set`. Otherwise `_rewarder` is ignored.\\n    function set(uint256 _pid, uint256 _allocPoint, IRewarder _rewarder, bool overwrite) public onlyOwner {\\n        totalAllocPoint = totalAllocPoint.sub(poolInfo[_pid].allocPoint).add(_allocPoint);\\n        poolInfo[_pid].allocPoint = _allocPoint.to64();\\n        if (overwrite) { rewarder[_pid] = _rewarder; }\\n        emit LogSetPool(_pid, _allocPoint, overwrite ? _rewarder : rewarder[_pid], overwrite);\\n    }\\n\\n    /// @notice Set the `migrator` contract. Can only be called by the owner.\\n    /// @param _migrator The contract address to set.\\n    function setMigrator(IMigratorMiner _migrator) public onlyOwner {\\n        migrator = _migrator;\\n    }\\n\\n    /// @notice Migrate LP token to another LP contract through the `migrator` contract.\\n    /// @param _pid The index of the pool. See `poolInfo`.\\n    function migrate(uint256 _pid) public {\\n        require(address(migrator) != address(0), \\\"GoldMinerV2: no migrator set\\\");\\n        IERC20 _lpToken = lpToken[_pid];\\n        uint256 bal = _lpToken.balanceOf(address(this));\\n        _lpToken.approve(address(migrator), bal);\\n        IERC20 newLpToken = migrator.migrate(_lpToken);\\n        require(bal == newLpToken.balanceOf(address(this)), \\\"GoldMinerV2: migrated balance must match\\\");\\n        lpToken[_pid] = newLpToken;\\n    }\\n\\n    /// @notice View function to see pending GOLN on frontend.\\n    /// @param _pid The index of the pool. See `poolInfo`.\\n    /// @param _user Address of user.\\n    /// @return pending GOLN reward for a given user.\\n    function pendingGoldNugget(uint256 _pid, address _user) external view returns (uint256 pending) {\\n        PoolInfo memory pool = poolInfo[_pid];\\n        UserInfo storage user = userInfo[_pid][_user];\\n        uint256 accGoldNuggetPerShare = pool.accGoldNuggetPerShare;\\n        uint256 lpSupply = lpToken[_pid].balanceOf(address(this));\\n        if (block.number > pool.lastRewardBlock && lpSupply != 0) {\\n            uint256 blocks = block.number.sub(pool.lastRewardBlock);\\n            uint256 goldnuggetReward = blocks.mul(goldnuggetPerBlock()).mul(pool.allocPoint) / totalAllocPoint;\\n            accGoldNuggetPerShare = accGoldNuggetPerShare.add(goldnuggetReward.mul(ACC_GOLN_PRECISION) / lpSupply);\\n        }\\n        pending = int256(user.amount.mul(accGoldNuggetPerShare) / ACC_GOLN_PRECISION).sub(user.rewardDebt).toUInt256();\\n    }\\n\\n    /// @notice Update reward variables for all pools. Be careful of gas spending!\\n    /// @param pids Pool IDs of all to be updated. Make sure to update all active pools.\\n    function massUpdatePools(uint256[] calldata pids) external {\\n        uint256 len = pids.length;\\n        for (uint256 i = 0; i < len; ++i) {\\n            updatePool(pids[i]);\\n        }\\n    }\\n\\n    /// @notice Calculates and returns the `amount` of GOLN per block.\\n    function goldnuggetPerBlock() public view returns (uint256 amount) {\\n        amount = uint256(GOLDMINER_GOLN_PER_BLOCK)\\n            .mul(GOLD_MINER.poolInfo(GOLD_PID).allocPoint) / GOLD_MINER.totalAllocPoint();\\n    }\\n\\n    /// @notice Update reward variables of the given pool.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @return pool Returns the pool that was updated.\\n    function updatePool(uint256 pid) public returns (PoolInfo memory pool) {\\n        pool = poolInfo[pid];\\n        if (block.number > pool.lastRewardBlock) {\\n            uint256 lpSupply = lpToken[pid].balanceOf(address(this));\\n            if (lpSupply > 0) {\\n                uint256 blocks = block.number.sub(pool.lastRewardBlock);\\n                uint256 goldnuggetReward = blocks.mul(goldnuggetPerBlock()).mul(pool.allocPoint) / totalAllocPoint;\\n                pool.accGoldNuggetPerShare = pool.accGoldNuggetPerShare.add((goldnuggetReward.mul(ACC_GOLN_PRECISION) / lpSupply).to128());\\n            }\\n            pool.lastRewardBlock = block.number.to64();\\n            poolInfo[pid] = pool;\\n            emit LogUpdatePool(pid, pool.lastRewardBlock, lpSupply, pool.accGoldNuggetPerShare);\\n        }\\n    }\\n\\n    /// @notice Deposit LP tokens to MCV2 for GOLN allocation.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param amount LP token amount to deposit.\\n    /// @param to The receiver of `amount` deposit benefit.\\n    function deposit(uint256 pid, uint256 amount, address to) public {\\n        PoolInfo memory pool = updatePool(pid);\\n        UserInfo storage user = userInfo[pid][to];\\n\\n        // Effects\\n        user.amount = user.amount.add(amount);\\n        user.rewardDebt = user.rewardDebt.add(int256(amount.mul(pool.accGoldNuggetPerShare) / ACC_GOLN_PRECISION));\\n\\n        // Interactions\\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onGoldNuggetReward(pid, to, to, 0, user.amount);\\n        }\\n\\n        lpToken[pid].safeTransferFrom(msg.sender, address(this), amount);\\n\\n        emit Deposit(msg.sender, pid, amount, to);\\n    }\\n\\n    /// @notice Withdraw LP tokens from MCV2.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param amount LP token amount to withdraw.\\n    /// @param to Receiver of the LP tokens.\\n    function withdraw(uint256 pid, uint256 amount, address to) public {\\n        PoolInfo memory pool = updatePool(pid);\\n        UserInfo storage user = userInfo[pid][msg.sender];\\n\\n        // Effects\\n        user.rewardDebt = user.rewardDebt.sub(int256(amount.mul(pool.accGoldNuggetPerShare) / ACC_GOLN_PRECISION));\\n        user.amount = user.amount.sub(amount);\\n\\n        // Interactions\\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onGoldNuggetReward(pid, msg.sender, to, 0, user.amount);\\n        }\\n\\n        lpToken[pid].safeTransfer(to, amount);\\n\\n        emit Withdraw(msg.sender, pid, amount, to);\\n    }\\n\\n    /// @notice Harvest proceeds for transaction sender to `to`.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param to Receiver of GOLN rewards.\\n    function harvest(uint256 pid, address to) public {\\n        PoolInfo memory pool = updatePool(pid);\\n        UserInfo storage user = userInfo[pid][msg.sender];\\n        int256 accumulatedGoldNugget = int256(user.amount.mul(pool.accGoldNuggetPerShare) / ACC_GOLN_PRECISION);\\n        uint256 _pendingGoldNugget = accumulatedGoldNugget.sub(user.rewardDebt).toUInt256();\\n\\n        // Effects\\n        user.rewardDebt = accumulatedGoldNugget;\\n\\n        // Interactions\\n        if (_pendingGoldNugget != 0) {\\n            GOLN.safeTransfer(to, _pendingGoldNugget);\\n        }\\n\\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onGoldNuggetReward( pid, msg.sender, to, _pendingGoldNugget, user.amount);\\n        }\\n\\n        emit Harvest(msg.sender, pid, _pendingGoldNugget);\\n    }\\n\\n    /// @notice Withdraw LP tokens from MCV2 and harvest proceeds for transaction sender to `to`.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param amount LP token amount to withdraw.\\n    /// @param to Receiver of the LP tokens and GOLN rewards.\\n    function withdrawAndHarvest(uint256 pid, uint256 amount, address to) public {\\n        PoolInfo memory pool = updatePool(pid);\\n        UserInfo storage user = userInfo[pid][msg.sender];\\n        int256 accumulatedGoldNugget = int256(user.amount.mul(pool.accGoldNuggetPerShare) / ACC_GOLN_PRECISION);\\n        uint256 _pendingGoldNugget = accumulatedGoldNugget.sub(user.rewardDebt).toUInt256();\\n\\n        // Effects\\n        user.rewardDebt = accumulatedGoldNugget.sub(int256(amount.mul(pool.accGoldNuggetPerShare) / ACC_GOLN_PRECISION));\\n        user.amount = user.amount.sub(amount);\\n\\n        // Interactions\\n        GOLN.safeTransfer(to, _pendingGoldNugget);\\n\\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onGoldNuggetReward(pid, msg.sender, to, _pendingGoldNugget, user.amount);\\n        }\\n\\n        lpToken[pid].safeTransfer(to, amount);\\n\\n        emit Withdraw(msg.sender, pid, amount, to);\\n        emit Harvest(msg.sender, pid, _pendingGoldNugget);\\n    }\\n\\n    /// @notice Harvests GOLN from `GOLD_MINER` MCV1 and pool `GOLD_PID` to this MCV2 contract.\\n    function harvestFromGoldMiner() public {\\n        GOLD_MINER.deposit(GOLD_PID, 0);\\n    }\\n\\n    /// @notice Withdraw without caring about rewards. EMERGENCY ONLY.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param to Receiver of the LP tokens.\\n    function emergencyWithdraw(uint256 pid, address to) public {\\n        UserInfo storage user = userInfo[pid][msg.sender];\\n        uint256 amount = user.amount;\\n        user.amount = 0;\\n        user.rewardDebt = 0;\\n\\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onGoldNuggetReward(pid, msg.sender, to, 0, 0);\\n        }\\n\\n        // Note: transfer can fail or succeed if `amount` is zero.\\n        lpToken[pid].safeTransfer(to, amount);\\n        emit EmergencyWithdraw(msg.sender, pid, amount, to);\\n    }\\n}\\n\",\"keccak256\":\"0xfc23639df5c42593066a6bce649c0e034e5f35289c903ad4d854798807c4914a\",\"license\":\"MIT\"},\"contracts/interfaces/IGoldMiner.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity 0.6.12;\\npragma experimental ABIEncoderV2;\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\\\";\\n\\ninterface IGoldMiner {\\n    using BoringERC20 for IERC20;\\n    struct UserInfo {\\n        uint256 amount;     // How many LP tokens the user has provided.\\n        uint256 rewardDebt; // Reward debt. See explanation below.\\n    }\\n\\n    struct PoolInfo {\\n        IERC20 lpToken;           // Address of LP token contract.\\n        uint256 allocPoint;       // How many allocation points assigned to this pool. GOLN to distribute per block.\\n        uint256 lastRewardBlock;  // Last block number that GOLN distribution occurs.\\n        uint256 accGoldNuggetPerShare; // Accumulated GOLN per share, times 1e12. See below.\\n    }\\n\\n    function poolInfo(uint256 pid) external view returns (IGoldMiner.PoolInfo memory);\\n    function totalAllocPoint() external view returns (uint256);\\n    function deposit(uint256 _pid, uint256 _amount) external;\\n}\\n\",\"keccak256\":\"0xe6ba2f319be5134738042eb6e1e104324752729a4582177ef88350856b4a7280\",\"license\":\"MIT\"},\"contracts/interfaces/IRewarder.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.6.12;\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\\\";\\ninterface IRewarder {\\n    using BoringERC20 for IERC20;\\n    function onGoldNuggetReward(uint256 pid, address user, address recipient, uint256 goldnuggetAmount, uint256 newLpAmount) external;\\n    function pendingTokens(uint256 pid, address user, uint256 goldnuggetAmount) external view returns (IERC20[] memory, uint256[] memory);\\n}\\n\",\"keccak256\":\"0x92579e172bd0f29fd768cf7c6ccd1a8a74204d8bac7d7ae95538370d1265ac5c\",\"license\":\"MIT\"},\"contracts/libraries/SignedSafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.6.12;\\n\\nlibrary SignedSafeMath {\\n    int256 constant private _INT256_MIN = -2**255;\\n\\n    /**\\n     * @dev Returns the multiplication of two signed integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `*` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Multiplication cannot overflow.\\n     */\\n    function mul(int256 a, int256 b) internal pure returns (int256) {\\n        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\\n        // benefit is lost if 'b' is also tested.\\n        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\\n        if (a == 0) {\\n            return 0;\\n        }\\n\\n        require(!(a == -1 && b == _INT256_MIN), \\\"SignedSafeMath: multiplication overflow\\\");\\n\\n        int256 c = a * b;\\n        require(c / a == b, \\\"SignedSafeMath: multiplication overflow\\\");\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Returns the integer division of two signed integers. Reverts on\\n     * division by zero. The result is rounded towards zero.\\n     *\\n     * Counterpart to Solidity's `/` operator. Note: this function uses a\\n     * `revert` opcode (which leaves remaining gas untouched) while Solidity\\n     * uses an invalid opcode to revert (consuming all remaining gas).\\n     *\\n     * Requirements:\\n     *\\n     * - The divisor cannot be zero.\\n     */\\n    function div(int256 a, int256 b) internal pure returns (int256) {\\n        require(b != 0, \\\"SignedSafeMath: division by zero\\\");\\n        require(!(b == -1 && a == _INT256_MIN), \\\"SignedSafeMath: division overflow\\\");\\n\\n        int256 c = a / b;\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Returns the subtraction of two signed integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `-` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Subtraction cannot overflow.\\n     */\\n    function sub(int256 a, int256 b) internal pure returns (int256) {\\n        int256 c = a - b;\\n        require((b >= 0 && c <= a) || (b < 0 && c > a), \\\"SignedSafeMath: subtraction overflow\\\");\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Returns the addition of two signed integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `+` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Addition cannot overflow.\\n     */\\n    function add(int256 a, int256 b) internal pure returns (int256) {\\n        int256 c = a + b;\\n        require((b >= 0 && c >= a) || (b < 0 && c < a), \\\"SignedSafeMath: addition overflow\\\");\\n\\n        return c;\\n    }\\n\\n    function toUInt256(int256 a) internal pure returns (uint256) {\\n        require(a >= 0, \\\"Integer < 0\\\");\\n        return uint256(a);\\n    }\\n}\",\"keccak256\":\"0x4991beb21b224dfcdc3d251e0a60fdc304d4f6b699b2c35d08f3974e5b84c86a\",\"license\":\"MIT\"},\"contracts/mocks/ComplexRewarder.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.6.12;\\npragma experimental ABIEncoderV2;\\nimport \\\"../interfaces/IRewarder.sol\\\";\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\\\";\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\\\";\\nimport \\\"@boringcrypto/boring-solidity/contracts/BoringOwnable.sol\\\";\\nimport \\\"../GoldMinerV2.sol\\\";\\n\\n/// @author @0xKeno\\ncontract ComplexRewarder is IRewarder,  BoringOwnable{\\n    using BoringMath for uint256;\\n    using BoringMath128 for uint128;\\n    using BoringERC20 for IERC20;\\n\\n    IERC20 private immutable rewardToken;\\n\\n    /// @notice Info of each MCV2 user.\\n    /// `amount` LP token amount the user has provided.\\n    /// `rewardDebt` The amount of GOLN entitled to the user.\\n    struct UserInfo {\\n        uint256 amount;\\n        uint256 rewardDebt;\\n    }\\n\\n    /// @notice Info of each MCV2 pool.\\n    /// `allocPoint` The amount of allocation points assigned to the pool.\\n    /// Also known as the amount of GOLN to distribute per block.\\n    struct PoolInfo {\\n        uint128 accGoldNuggetPerShare;\\n        uint64 lastRewardBlock;\\n        uint64 allocPoint;\\n    }\\n\\n    /// @notice Info of each pool.\\n    mapping (uint256 => PoolInfo) public poolInfo;\\n\\n    uint256[] public poolIds;\\n\\n    /// @notice Info of each user that stakes LP tokens.\\n    mapping (uint256 => mapping (address => UserInfo)) public userInfo;\\n    /// @dev Total allocation points. Must be the sum of all allocation points in all pools.\\n    uint256 totalAllocPoint;\\n\\n    uint256 public tokenPerBlock;\\n    uint256 private constant ACC_TOKEN_PRECISION = 1e12;\\n\\n    address private immutable GOLDMINER_V2;\\n\\n    event LogOnReward(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\\n    event LogPoolAddition(uint256 indexed pid, uint256 allocPoint);\\n    event LogSetPool(uint256 indexed pid, uint256 allocPoint);\\n    event LogUpdatePool(uint256 indexed pid, uint64 lastRewardBlock, uint256 lpSupply, uint256 accGoldNuggetPerShare);\\n    event LogInit();\\n\\n    constructor (IERC20 _rewardToken, uint256 _tokenPerBlock, address _GOLDMINER_V2) public {\\n        rewardToken = _rewardToken;\\n        tokenPerBlock = _tokenPerBlock;\\n        GOLDMINER_V2 = _GOLDMINER_V2;\\n    }\\n\\n\\n    function onGoldNuggetReward (uint256 pid, address _user, address to, uint256, uint256 lpToken) onlyMCV2 override external {\\n        PoolInfo memory pool = updatePool(pid);\\n        UserInfo storage user = userInfo[pid][_user];\\n        uint256 pending;\\n        if (user.amount > 0) {\\n            pending =\\n                (user.amount.mul(pool.accGoldNuggetPerShare) / ACC_TOKEN_PRECISION).sub(\\n                    user.rewardDebt\\n                );\\n            rewardToken.safeTransfer(to, pending);\\n        }\\n        user.amount = lpToken;\\n        user.rewardDebt = lpToken.mul(pool.accGoldNuggetPerShare) / ACC_TOKEN_PRECISION;\\n        emit LogOnReward(_user, pid, pending, to);\\n    }\\n    \\n    function pendingTokens(uint256 pid, address user, uint256) override external view returns (IERC20[] memory rewardTokens, uint256[] memory rewardAmounts) {\\n        IERC20[] memory _rewardTokens = new IERC20[](1);\\n        _rewardTokens[0] = (rewardToken);\\n        uint256[] memory _rewardAmounts = new uint256[](1);\\n        _rewardAmounts[0] = pendingToken(pid, user);\\n        return (_rewardTokens, _rewardAmounts);\\n    }\\n\\n    modifier onlyMCV2 {\\n        require(\\n            msg.sender == GOLDMINER_V2,\\n            \\\"Only MCV2 can call this function.\\\"\\n        );\\n        _;\\n    }\\n\\n    /// @notice Returns the number of MCV2 pools.\\n    function poolLength() public view returns (uint256 pools) {\\n        pools = poolIds.length;\\n    }\\n\\n    /// @notice Add a new LP to the pool.  Can only be called by the owner.\\n    /// DO NOT add the same LP token more than once. Rewards will be messed up if you do.\\n    /// @param allocPoint AP of the new pool.\\n    /// @param _pid Pid on MCV2\\n    function add(uint256 allocPoint, uint256 _pid) public onlyOwner {\\n        require(poolInfo[_pid].lastRewardBlock == 0, \\\"Pool already exists\\\");\\n        uint256 lastRewardBlock = block.number;\\n        totalAllocPoint = totalAllocPoint.add(allocPoint);\\n\\n        poolInfo[_pid] = PoolInfo({\\n            allocPoint: allocPoint.to64(),\\n            lastRewardBlock: lastRewardBlock.to64(),\\n            accGoldNuggetPerShare: 0\\n        });\\n        poolIds.push(_pid);\\n        emit LogPoolAddition(_pid, allocPoint);\\n    }\\n\\n    /// @notice Update the given pool's GOLN allocation point and `IRewarder` contract. Can only be called by the owner.\\n    /// @param _pid The index of the pool. See `poolInfo`.\\n    /// @param _allocPoint New AP of the pool.\\n    function set(uint256 _pid, uint256 _allocPoint) public onlyOwner {\\n        totalAllocPoint = totalAllocPoint.sub(poolInfo[_pid].allocPoint).add(_allocPoint);\\n        poolInfo[_pid].allocPoint = _allocPoint.to64();\\n        emit LogSetPool(_pid, _allocPoint);\\n    }\\n\\n    /// @notice View function to see pending Token\\n    /// @param _pid The index of the pool. See `poolInfo`.\\n    /// @param _user Address of user.\\n    /// @return pending GOLN reward for a given user.\\n    function pendingToken(uint256 _pid, address _user) public view returns (uint256 pending) {\\n        PoolInfo memory pool = poolInfo[_pid];\\n        UserInfo storage user = userInfo[_pid][_user];\\n        uint256 accGoldNuggetPerShare = pool.accGoldNuggetPerShare;\\n        uint256 lpSupply = GoldMinerV2(GOLDMINER_V2).lpToken(_pid).balanceOf(GOLDMINER_V2);\\n        if (block.number > pool.lastRewardBlock && lpSupply != 0) {\\n            uint256 blocks = block.number.sub(pool.lastRewardBlock);\\n            uint256 goldnuggetReward = blocks.mul(tokenPerBlock).mul(pool.allocPoint) / totalAllocPoint;\\n            accGoldNuggetPerShare = accGoldNuggetPerShare.add(goldnuggetReward.mul(ACC_TOKEN_PRECISION) / lpSupply);\\n        }\\n        pending = (user.amount.mul(accGoldNuggetPerShare) / ACC_TOKEN_PRECISION).sub(user.rewardDebt);\\n    }\\n\\n    /// @notice Update reward variables for all pools. Be careful of gas spending!\\n    /// @param pids Pool IDs of all to be updated. Make sure to update all active pools.\\n    function massUpdatePools(uint256[] calldata pids) external {\\n        uint256 len = pids.length;\\n        for (uint256 i = 0; i < len; ++i) {\\n            updatePool(pids[i]);\\n        }\\n    }\\n\\n    /// @notice Update reward variables of the given pool.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @return pool Returns the pool that was updated.\\n    function updatePool(uint256 pid) public returns (PoolInfo memory pool) {\\n        pool = poolInfo[pid];\\n        require(pool.lastRewardBlock != 0, \\\"Pool does not exist\\\");\\n        if (block.number > pool.lastRewardBlock) {\\n            uint256 lpSupply = GoldMinerV2(GOLDMINER_V2).lpToken(pid).balanceOf(GOLDMINER_V2);\\n\\n            if (lpSupply > 0) {\\n                uint256 blocks = block.number.sub(pool.lastRewardBlock);\\n                uint256 goldnuggetReward = blocks.mul(tokenPerBlock).mul(pool.allocPoint) / totalAllocPoint;\\n                pool.accGoldNuggetPerShare = pool.accGoldNuggetPerShare.add((goldnuggetReward.mul(ACC_TOKEN_PRECISION) / lpSupply).to128());\\n            }\\n            pool.lastRewardBlock = block.number.to64();\\n            poolInfo[pid] = pool;\\n            emit LogUpdatePool(pid, pool.lastRewardBlock, lpSupply, pool.accGoldNuggetPerShare);\\n        }\\n    }\\n\\n}\\n\",\"keccak256\":\"0xaf201ceaf31477c3b7a7f6318a3752a247eb33a2b1eff50891cdb09674f18234\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 149,
                "contract": "contracts/mocks/ComplexRewarder.sol:ComplexRewarder",
                "label": "owner",
                "offset": 0,
                "slot": "0",
                "type": "t_address"
              },
              {
                "astId": 151,
                "contract": "contracts/mocks/ComplexRewarder.sol:ComplexRewarder",
                "label": "pendingOwner",
                "offset": 0,
                "slot": "1",
                "type": "t_address"
              },
              {
                "astId": 3559,
                "contract": "contracts/mocks/ComplexRewarder.sol:ComplexRewarder",
                "label": "poolInfo",
                "offset": 0,
                "slot": "2",
                "type": "t_mapping(t_uint256,t_struct(PoolInfo)3554_storage)"
              },
              {
                "astId": 3562,
                "contract": "contracts/mocks/ComplexRewarder.sol:ComplexRewarder",
                "label": "poolIds",
                "offset": 0,
                "slot": "3",
                "type": "t_array(t_uint256)dyn_storage"
              },
              {
                "astId": 3569,
                "contract": "contracts/mocks/ComplexRewarder.sol:ComplexRewarder",
                "label": "userInfo",
                "offset": 0,
                "slot": "4",
                "type": "t_mapping(t_uint256,t_mapping(t_address,t_struct(UserInfo)3547_storage))"
              },
              {
                "astId": 3572,
                "contract": "contracts/mocks/ComplexRewarder.sol:ComplexRewarder",
                "label": "totalAllocPoint",
                "offset": 0,
                "slot": "5",
                "type": "t_uint256"
              },
              {
                "astId": 3574,
                "contract": "contracts/mocks/ComplexRewarder.sol:ComplexRewarder",
                "label": "tokenPerBlock",
                "offset": 0,
                "slot": "6",
                "type": "t_uint256"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_array(t_uint256)dyn_storage": {
                "base": "t_uint256",
                "encoding": "dynamic_array",
                "label": "uint256[]",
                "numberOfBytes": "32"
              },
              "t_mapping(t_address,t_struct(UserInfo)3547_storage)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => struct ComplexRewarder.UserInfo)",
                "numberOfBytes": "32",
                "value": "t_struct(UserInfo)3547_storage"
              },
              "t_mapping(t_uint256,t_mapping(t_address,t_struct(UserInfo)3547_storage))": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => mapping(address => struct ComplexRewarder.UserInfo))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_address,t_struct(UserInfo)3547_storage)"
              },
              "t_mapping(t_uint256,t_struct(PoolInfo)3554_storage)": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => struct ComplexRewarder.PoolInfo)",
                "numberOfBytes": "32",
                "value": "t_struct(PoolInfo)3554_storage"
              },
              "t_struct(PoolInfo)3554_storage": {
                "encoding": "inplace",
                "label": "struct ComplexRewarder.PoolInfo",
                "members": [
                  {
                    "astId": 3549,
                    "contract": "contracts/mocks/ComplexRewarder.sol:ComplexRewarder",
                    "label": "accGoldNuggetPerShare",
                    "offset": 0,
                    "slot": "0",
                    "type": "t_uint128"
                  },
                  {
                    "astId": 3551,
                    "contract": "contracts/mocks/ComplexRewarder.sol:ComplexRewarder",
                    "label": "lastRewardBlock",
                    "offset": 16,
                    "slot": "0",
                    "type": "t_uint64"
                  },
                  {
                    "astId": 3553,
                    "contract": "contracts/mocks/ComplexRewarder.sol:ComplexRewarder",
                    "label": "allocPoint",
                    "offset": 24,
                    "slot": "0",
                    "type": "t_uint64"
                  }
                ],
                "numberOfBytes": "32"
              },
              "t_struct(UserInfo)3547_storage": {
                "encoding": "inplace",
                "label": "struct ComplexRewarder.UserInfo",
                "members": [
                  {
                    "astId": 3544,
                    "contract": "contracts/mocks/ComplexRewarder.sol:ComplexRewarder",
                    "label": "amount",
                    "offset": 0,
                    "slot": "0",
                    "type": "t_uint256"
                  },
                  {
                    "astId": 3546,
                    "contract": "contracts/mocks/ComplexRewarder.sol:ComplexRewarder",
                    "label": "rewardDebt",
                    "offset": 0,
                    "slot": "1",
                    "type": "t_uint256"
                  }
                ],
                "numberOfBytes": "64"
              },
              "t_uint128": {
                "encoding": "inplace",
                "label": "uint128",
                "numberOfBytes": "16"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              },
              "t_uint64": {
                "encoding": "inplace",
                "label": "uint64",
                "numberOfBytes": "8"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "add(uint256,uint256)": {
                "notice": "Add a new LP to the pool.  Can only be called by the owner. DO NOT add the same LP token more than once. Rewards will be messed up if you do."
              },
              "massUpdatePools(uint256[])": {
                "notice": "Update reward variables for all pools. Be careful of gas spending!"
              },
              "pendingToken(uint256,address)": {
                "notice": "View function to see pending Token"
              },
              "poolInfo(uint256)": {
                "notice": "Info of each pool."
              },
              "poolLength()": {
                "notice": "Returns the number of MCV2 pools."
              },
              "set(uint256,uint256)": {
                "notice": "Update the given pool's GOLN allocation point and `IRewarder` contract. Can only be called by the owner."
              },
              "updatePool(uint256)": {
                "notice": "Update reward variables of the given pool."
              },
              "userInfo(uint256,address)": {
                "notice": "Info of each user that stakes LP tokens."
              }
            },
            "version": 1
          }
        }
      },
      "contracts/mocks/ComplexRewarderTime.sol": {
        "ComplexRewarderTime": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "_rewardToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_rewardPerSecond",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_GOLDMINER_V2",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [],
              "name": "LogInit",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "LogOnReward",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "allocPoint",
                  "type": "uint256"
                }
              ],
              "name": "LogPoolAddition",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "rewardPerSecond",
                  "type": "uint256"
                }
              ],
              "name": "LogRewardPerSecond",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "allocPoint",
                  "type": "uint256"
                }
              ],
              "name": "LogSetPool",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint64",
                  "name": "lastRewardTime",
                  "type": "uint64"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "lpSupply",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "accGoldNuggetPerShare",
                  "type": "uint256"
                }
              ],
              "name": "LogUpdatePool",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "allocPoint",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_pid",
                  "type": "uint256"
                }
              ],
              "name": "add",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "claimOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256[]",
                  "name": "pids",
                  "type": "uint256[]"
                }
              ],
              "name": "massUpdatePools",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_user",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "lpToken",
                  "type": "uint256"
                }
              ],
              "name": "onGoldNuggetReward",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "pendingOwner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_pid",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_user",
                  "type": "address"
                }
              ],
              "name": "pendingToken",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "pending",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "pendingTokens",
              "outputs": [
                {
                  "internalType": "contract IERC20[]",
                  "name": "rewardTokens",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "rewardAmounts",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "poolIds",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "poolInfo",
              "outputs": [
                {
                  "internalType": "uint128",
                  "name": "accGoldNuggetPerShare",
                  "type": "uint128"
                },
                {
                  "internalType": "uint64",
                  "name": "lastRewardTime",
                  "type": "uint64"
                },
                {
                  "internalType": "uint64",
                  "name": "allocPoint",
                  "type": "uint64"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "poolLength",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "pools",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "rewardPerSecond",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_pid",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_allocPoint",
                  "type": "uint256"
                }
              ],
              "name": "set",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_rewardPerSecond",
                  "type": "uint256"
                }
              ],
              "name": "setRewardPerSecond",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "direct",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "renounce",
                  "type": "bool"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                }
              ],
              "name": "updatePool",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "uint128",
                      "name": "accGoldNuggetPerShare",
                      "type": "uint128"
                    },
                    {
                      "internalType": "uint64",
                      "name": "lastRewardTime",
                      "type": "uint64"
                    },
                    {
                      "internalType": "uint64",
                      "name": "allocPoint",
                      "type": "uint64"
                    }
                  ],
                  "internalType": "struct ComplexRewarderTime.PoolInfo",
                  "name": "pool",
                  "type": "tuple"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "userInfo",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "rewardDebt",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "author": "@0xKeno",
            "kind": "dev",
            "methods": {
              "add(uint256,uint256)": {
                "params": {
                  "_pid": "Pid on MCV2",
                  "allocPoint": "AP of the new pool."
                }
              },
              "massUpdatePools(uint256[])": {
                "params": {
                  "pids": "Pool IDs of all to be updated. Make sure to update all active pools."
                }
              },
              "pendingToken(uint256,address)": {
                "params": {
                  "_pid": "The index of the pool. See `poolInfo`.",
                  "_user": "Address of user."
                },
                "returns": {
                  "pending": "GOLN reward for a given user."
                }
              },
              "set(uint256,uint256)": {
                "params": {
                  "_allocPoint": "New AP of the pool.",
                  "_pid": "The index of the pool. See `poolInfo`."
                }
              },
              "setRewardPerSecond(uint256)": {
                "params": {
                  "_rewardPerSecond": "The amount of GoldNugget to be distributed per second."
                }
              },
              "updatePool(uint256)": {
                "params": {
                  "pid": "The index of the pool. See `poolInfo`."
                },
                "returns": {
                  "pool": "Returns the pool that was updated."
                }
              }
            },
            "stateVariables": {
              "totalAllocPoint": {
                "details": "Total allocation points. Must be the sum of all allocation points in all pools."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60c06040523480156200001157600080fd5b50604051620018f9380380620018f9833981016040819052620000349162000099565b600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36001600160601b0319606093841b811660805260069290925590911b1660a052620000f9565b600080600060608486031215620000ae578283fd5b8351620000bb81620000e0565b602085015160408601519194509250620000d581620000e0565b809150509250925092565b6001600160a01b0381168114620000f657600080fd5b50565b60805160601c60a05160601c6117bd6200013c6000398061051352806105a8528061081852806108ad5280610d35525080610de65280610ebb52506117bd6000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806366da5815116100a25780638f10369a116100715780638f10369a1461021457806393f1a40b1461021c578063a3d833201461023d578063d63b3c4914610250578063e30c3978146102715761010b565b806366da5815146101c657806369883b4e146101d9578063771602f7146101ec5780638da5cb5b146101ff5761010b565b806348e43af4116100de57806348e43af4146101785780634e71e0c81461018b57806351eb05a61461019357806357a5b58c146101b35761010b565b8063078dfbe714610110578063081e3eda146101255780631526fe27146101435780631ab06ee514610165575b600080fd5b61012361011e366004611177565b610279565b005b61012d610368565b60405161013a9190611720565b60405180910390f35b61015661015136600461126e565b61036e565b60405161013a939291906116f6565b610123610173366004611355565b6103a5565b61012d61018636600461129e565b610484565b610123610712565b6101a66101a136600461126e565b61079f565b60405161013a91906116bd565b6101236101c13660046111c1565b610a9d565b6101236101d436600461126e565b610ad3565b61012d6101e736600461126e565b610b3d565b6101236101fa366004611355565b610b5b565b610207610cf1565b60405161013a91906113b7565b61012d610d00565b61022f61022a36600461129e565b610d06565b60405161013a929190611729565b61012361024b3660046112cd565b610d2a565b61026361025e36600461131e565b610e93565b60405161013a9291906113e4565b610207610f52565b6000546001600160a01b031633146102ac5760405162461bcd60e51b81526004016102a3906115e5565b60405180910390fd5b8115610347576001600160a01b0383161515806102c65750805b6102e25760405162461bcd60e51b81526004016102a390611548565b600080546040516001600160a01b03808716939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0385166001600160a01b031991821617909155600180549091169055610363565b600180546001600160a01b0319166001600160a01b0385161790555b505050565b60035490565b6002602052600090815260409020546001600160801b038116906001600160401b03600160801b8204811691600160c01b90041683565b6000546001600160a01b031633146103cf5760405162461bcd60e51b81526004016102a3906115e5565b60008281526002602052604090205460055461040691839161040091600160c01b90046001600160401b0316610f61565b90610f8a565b60055561041281610fad565b6000838152600260205260409081902080546001600160401b0393909316600160c01b026001600160c01b03909316929092179091555182907f942cc7e17a17c164bd977f32ab8c54265d5b9d481e4e352bf874f1e568874e7c90610478908490611720565b60405180910390a25050565b600061048e611157565b506000838152600260209081526040808320815160608101835290546001600160801b0380821683526001600160401b03600160801b8304811684870152600160c01b9092049091168284015287855260048085528386206001600160a01b03808a1688529552838620835194516378ed5d1f60e01b815293969095949092169391927f0000000000000000000000000000000000000000000000000000000000000000909216916378ed5d1f91610548918b9101611720565b60206040518083038186803b15801561056057600080fd5b505afa158015610574573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105989190611252565b6001600160a01b03166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016105e391906113b7565b60206040518083038186803b1580156105fb57600080fd5b505afa15801561060f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106339190611286565b905083602001516001600160401b03164211801561065057508015155b156106dc57600061067785602001516001600160401b031642610f6190919063ffffffff16565b905060006005546106aa87604001516001600160401b03166106a460065486610fda90919063ffffffff16565b90610fda565b816106b157fe5b0490506106d7836106c78364e8d4a51000610fda565b816106ce57fe5b86919004610f8a565b935050505b60018301548354610707919064e8d4a51000906106f99086610fda565b8161070057fe5b0490610f61565b979650505050505050565b6001546001600160a01b031633811461073d5760405162461bcd60e51b81526004016102a39061161a565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b6107a7611157565b50600081815260026020908152604091829020825160608101845290546001600160801b03811682526001600160401b03600160801b82048116938301849052600160c01b9091041692810192909252421115610a98576040516378ed5d1f60e01b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906378ed5d1f9061084d908690600401611720565b60206040518083038186803b15801561086557600080fd5b505afa158015610879573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089d9190611252565b6001600160a01b03166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016108e891906113b7565b60206040518083038186803b15801561090057600080fd5b505afa158015610914573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109389190611286565b905080156109db57600061096283602001516001600160401b031642610f6190919063ffffffff16565b9050600060055461098f85604001516001600160401b03166106a460065486610fda90919063ffffffff16565b8161099657fe5b0490506109cd6109bc846109af8464e8d4a51000610fda565b816109b657fe5b04611011565b85516001600160801b03169061103a565b6001600160801b0316845250505b6109e442610fad565b6001600160401b03908116602084810191825260008681526002909152604090819020855181549351838801516001600160801b03199095166001600160801b0383161767ffffffffffffffff60801b1916600160801b82881602176001600160c01b0316600160c01b95909616949094029490941790555185927f0fc9545022a542541ad085d091fb09a2ab36fee366a4576ab63714ea907ad35392610a8e9290918691611737565b60405180910390a2505b919050565b8060005b81811015610acd57610ac4848483818110610ab857fe5b9050602002013561079f565b50600101610aa1565b50505050565b6000546001600160a01b03163314610afd5760405162461bcd60e51b81526004016102a3906115e5565b60068190556040517fde89cb17ac7f58f94792b3e91e086ed85403819c24ceea882491f960ccb1a27890610b32908390611720565b60405180910390a150565b60038181548110610b4a57fe5b600091825260209091200154905081565b6000546001600160a01b03163314610b855760405162461bcd60e51b81526004016102a3906115e5565b600081815260026020526040902054600160801b90046001600160401b031615610bc15760405162461bcd60e51b81526004016102a3906114a3565b6005544290610bd09084610f8a565b60055560408051606081019091526000815260208101610bef83610fad565b6001600160401b03168152602001610c0685610fad565b6001600160401b0390811690915260008481526002602090815260408083208551815493870151968301518616600160c01b026001600160c01b0397909616600160801b0267ffffffffffffffff60801b196001600160801b039092166001600160801b031990951694909417169290921794909416929092179091556003805460018101825591527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b018390555182907f38410508059921573ab9ebdca2a5034be738d236366b8f32de4434ea95ed3c8190610ce4908690611720565b60405180910390a2505050565b6000546001600160a01b031681565b60065481565b60046020908152600092835260408084209091529082529020805460019091015482565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610d725760405162461bcd60e51b81526004016102a390611507565b610d7a611157565b610d838661079f565b60008781526004602090815260408083206001600160a01b038a168452909152812080549293509115610e0d57600182015483518354610dd7929164e8d4a51000916106f9916001600160801b0316610fda565b9050610e0d6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168783611069565b838255825164e8d4a5100090610e2d9086906001600160801b0316610fda565b81610e3457fe5b048260010181905550856001600160a01b031688886001600160a01b03167f2ece88ca2bc08dd018db50e1d25a20bf1241e5fab1c396caa51f01a54bd2f75b84604051610e819190611720565b60405180910390a45050505050505050565b60408051600180825281830190925260609182918291602080830190803683370190505090507f000000000000000000000000000000000000000000000000000000000000000081600081518110610ee757fe5b6001600160a01b039290921660209283029190910190910152604080516001808252818301909252606091816020016020820280368337019050509050610f2e8787610484565b81600081518110610f3b57fe5b602090810291909101015290969095509350505050565b6001546001600160a01b031681565b80820382811115610f845760405162461bcd60e51b81526004016102a390611474565b92915050565b81810181811015610f845760405162461bcd60e51b81526004016102a3906115ae565b60006001600160401b03821115610fd65760405162461bcd60e51b81526004016102a39061164f565b5090565b6000811580610ff557505080820282828281610ff257fe5b04145b610f845760405162461bcd60e51b81526004016102a390611686565b60006001600160801b03821115610fd65760405162461bcd60e51b81526004016102a390611577565b8181016001600160801b038083169082161015610f845760405162461bcd60e51b81526004016102a3906115ae565b60006060846001600160a01b031663a9059cbb858560405160240161108f9291906113cb565b6040516020818303038152906040529060e01b6020820180516001600160e01b0383818316178352505050506040516110c8919061137e565b6000604051808303816000865af19150503d8060008114611105576040519150601f19603f3d011682016040523d82523d6000602084013e61110a565b606091505b5091509150818015611134575080511580611134575080806020019051810190611134919061122f565b6111505760405162461bcd60e51b81526004016102a3906114d0565b5050505050565b604080516060810182526000808252602082018190529181019190915290565b60008060006060848603121561118b578283fd5b833561119681611761565b925060208401356111a681611779565b915060408401356111b681611779565b809150509250925092565b600080602083850312156111d3578182fd5b82356001600160401b03808211156111e9578384fd5b818501915085601f8301126111fc578384fd5b81358181111561120a578485fd5b866020808302850101111561121d578485fd5b60209290920196919550909350505050565b600060208284031215611240578081fd5b815161124b81611779565b9392505050565b600060208284031215611263578081fd5b815161124b81611761565b60006020828403121561127f578081fd5b5035919050565b600060208284031215611297578081fd5b5051919050565b600080604083850312156112b0578182fd5b8235915060208301356112c281611761565b809150509250929050565b600080600080600060a086880312156112e4578081fd5b8535945060208601356112f681611761565b9350604086013561130681611761565b94979396509394606081013594506080013592915050565b600080600060608486031215611332578283fd5b83359250602084013561134481611761565b929592945050506040919091013590565b60008060408385031215611367578182fd5b50508035926020909101359150565b815260200190565b60008251815b8181101561139e5760208186018101518583015201611384565b818111156113ac5782828501525b509190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b604080825283519082018190526000906020906060840190828701845b828110156114265781516001600160a01b031684529284019290840190600101611401565b5050508381038285015280855161143d8184611720565b91508387019250845b8181101561146757611459838551611376565b938501939250600101611446565b5090979650505050505050565b602080825260159082015274426f72696e674d6174683a20556e646572666c6f7760581b604082015260600190565b602080825260139082015272506f6f6c20616c72656164792065786973747360681b604082015260600190565b6020808252601c908201527f426f72696e6745524332303a205472616e73666572206661696c656400000000604082015260600190565b60208082526021908201527f4f6e6c79204d4356322063616e2063616c6c20746869732066756e6374696f6e6040820152601760f91b606082015260800190565b6020808252601590820152744f776e61626c653a207a65726f206164647265737360581b604082015260600190565b6020808252601c908201527f426f72696e674d6174683a2075696e74313238204f766572666c6f7700000000604082015260600190565b60208082526018908201527f426f72696e674d6174683a20416464204f766572666c6f770000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e6572604082015260600190565b6020808252601b908201527f426f72696e674d6174683a2075696e743634204f766572666c6f770000000000604082015260600190565b60208082526018908201527f426f72696e674d6174683a204d756c204f766572666c6f770000000000000000604082015260600190565b81516001600160801b031681526020808301516001600160401b0390811691830191909152604092830151169181019190915260600190565b6001600160801b039390931683526001600160401b03918216602084015216604082015260600190565b90815260200190565b918252602082015260400190565b6001600160401b0393909316835260208301919091526001600160801b0316604082015260600190565b6001600160a01b038116811461177657600080fd5b50565b801515811461177657600080fdfea264697066735822122031c355556e830683db08f26640ffc256adc10c3c14db12d442d0bb0583eeadd464736f6c634300060c0033",
              "opcodes": "PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x18F9 CODESIZE SUB DUP1 PUSH3 0x18F9 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x99 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP4 DUP5 SHL DUP2 AND PUSH1 0x80 MSTORE PUSH1 0x6 SWAP3 SWAP1 SWAP3 SSTORE SWAP1 SWAP2 SHL AND PUSH1 0xA0 MSTORE PUSH3 0xF9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0xAE JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 MLOAD PUSH3 0xBB DUP2 PUSH3 0xE0 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x40 DUP7 ADD MLOAD SWAP2 SWAP5 POP SWAP3 POP PUSH3 0xD5 DUP2 PUSH3 0xE0 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0xF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x17BD PUSH3 0x13C PUSH1 0x0 CODECOPY DUP1 PUSH2 0x513 MSTORE DUP1 PUSH2 0x5A8 MSTORE DUP1 PUSH2 0x818 MSTORE DUP1 PUSH2 0x8AD MSTORE DUP1 PUSH2 0xD35 MSTORE POP DUP1 PUSH2 0xDE6 MSTORE DUP1 PUSH2 0xEBB MSTORE POP PUSH2 0x17BD PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x10B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x66DA5815 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0x8F10369A GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x8F10369A EQ PUSH2 0x214 JUMPI DUP1 PUSH4 0x93F1A40B EQ PUSH2 0x21C JUMPI DUP1 PUSH4 0xA3D83320 EQ PUSH2 0x23D JUMPI DUP1 PUSH4 0xD63B3C49 EQ PUSH2 0x250 JUMPI DUP1 PUSH4 0xE30C3978 EQ PUSH2 0x271 JUMPI PUSH2 0x10B JUMP JUMPDEST DUP1 PUSH4 0x66DA5815 EQ PUSH2 0x1C6 JUMPI DUP1 PUSH4 0x69883B4E EQ PUSH2 0x1D9 JUMPI DUP1 PUSH4 0x771602F7 EQ PUSH2 0x1EC JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x1FF JUMPI PUSH2 0x10B JUMP JUMPDEST DUP1 PUSH4 0x48E43AF4 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0x48E43AF4 EQ PUSH2 0x178 JUMPI DUP1 PUSH4 0x4E71E0C8 EQ PUSH2 0x18B JUMPI DUP1 PUSH4 0x51EB05A6 EQ PUSH2 0x193 JUMPI DUP1 PUSH4 0x57A5B58C EQ PUSH2 0x1B3 JUMPI PUSH2 0x10B JUMP JUMPDEST DUP1 PUSH4 0x78DFBE7 EQ PUSH2 0x110 JUMPI DUP1 PUSH4 0x81E3EDA EQ PUSH2 0x125 JUMPI DUP1 PUSH4 0x1526FE27 EQ PUSH2 0x143 JUMPI DUP1 PUSH4 0x1AB06EE5 EQ PUSH2 0x165 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x123 PUSH2 0x11E CALLDATASIZE PUSH1 0x4 PUSH2 0x1177 JUMP JUMPDEST PUSH2 0x279 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x12D PUSH2 0x368 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13A SWAP2 SWAP1 PUSH2 0x1720 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x156 PUSH2 0x151 CALLDATASIZE PUSH1 0x4 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x36E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x16F6 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x173 CALLDATASIZE PUSH1 0x4 PUSH2 0x1355 JUMP JUMPDEST PUSH2 0x3A5 JUMP JUMPDEST PUSH2 0x12D PUSH2 0x186 CALLDATASIZE PUSH1 0x4 PUSH2 0x129E JUMP JUMPDEST PUSH2 0x484 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x712 JUMP JUMPDEST PUSH2 0x1A6 PUSH2 0x1A1 CALLDATASIZE PUSH1 0x4 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x79F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13A SWAP2 SWAP1 PUSH2 0x16BD JUMP JUMPDEST PUSH2 0x123 PUSH2 0x1C1 CALLDATASIZE PUSH1 0x4 PUSH2 0x11C1 JUMP JUMPDEST PUSH2 0xA9D JUMP JUMPDEST PUSH2 0x123 PUSH2 0x1D4 CALLDATASIZE PUSH1 0x4 PUSH2 0x126E JUMP JUMPDEST PUSH2 0xAD3 JUMP JUMPDEST PUSH2 0x12D PUSH2 0x1E7 CALLDATASIZE PUSH1 0x4 PUSH2 0x126E JUMP JUMPDEST PUSH2 0xB3D JUMP JUMPDEST PUSH2 0x123 PUSH2 0x1FA CALLDATASIZE PUSH1 0x4 PUSH2 0x1355 JUMP JUMPDEST PUSH2 0xB5B JUMP JUMPDEST PUSH2 0x207 PUSH2 0xCF1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13A SWAP2 SWAP1 PUSH2 0x13B7 JUMP JUMPDEST PUSH2 0x12D PUSH2 0xD00 JUMP JUMPDEST PUSH2 0x22F PUSH2 0x22A CALLDATASIZE PUSH1 0x4 PUSH2 0x129E JUMP JUMPDEST PUSH2 0xD06 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13A SWAP3 SWAP2 SWAP1 PUSH2 0x1729 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x24B CALLDATASIZE PUSH1 0x4 PUSH2 0x12CD JUMP JUMPDEST PUSH2 0xD2A JUMP JUMPDEST PUSH2 0x263 PUSH2 0x25E CALLDATASIZE PUSH1 0x4 PUSH2 0x131E JUMP JUMPDEST PUSH2 0xE93 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13A SWAP3 SWAP2 SWAP1 PUSH2 0x13E4 JUMP JUMPDEST PUSH2 0x207 PUSH2 0xF52 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x2AC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x15E5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 ISZERO PUSH2 0x347 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO ISZERO DUP1 PUSH2 0x2C6 JUMPI POP DUP1 JUMPDEST PUSH2 0x2E2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x1548 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE PUSH2 0x363 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND OR SWAP1 SSTORE JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP3 DIV DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV AND DUP4 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x3CF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x15E5 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x5 SLOAD PUSH2 0x406 SWAP2 DUP4 SWAP2 PUSH2 0x400 SWAP2 PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH2 0xF61 JUMP JUMPDEST SWAP1 PUSH2 0xF8A JUMP JUMPDEST PUSH1 0x5 SSTORE PUSH2 0x412 DUP2 PUSH2 0xFAD JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP4 SWAP1 SWAP4 AND PUSH1 0x1 PUSH1 0xC0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD DUP3 SWAP1 PUSH32 0x942CC7E17A17C164BD977F32AB8C54265D5B9D481E4E352BF874F1E568874E7C SWAP1 PUSH2 0x478 SWAP1 DUP5 SWAP1 PUSH2 0x1720 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48E PUSH2 0x1157 JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH1 0x60 DUP2 ADD DUP4 MSTORE SWAP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP4 DIV DUP2 AND DUP5 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 SWAP3 DIV SWAP1 SWAP2 AND DUP3 DUP5 ADD MSTORE DUP8 DUP6 MSTORE PUSH1 0x4 DUP1 DUP6 MSTORE DUP4 DUP7 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND DUP9 MSTORE SWAP6 MSTORE DUP4 DUP7 KECCAK256 DUP4 MLOAD SWAP5 MLOAD PUSH4 0x78ED5D1F PUSH1 0xE0 SHL DUP2 MSTORE SWAP4 SWAP7 SWAP1 SWAP6 SWAP5 SWAP1 SWAP3 AND SWAP4 SWAP2 SWAP3 PUSH32 0x0 SWAP1 SWAP3 AND SWAP2 PUSH4 0x78ED5D1F SWAP2 PUSH2 0x548 SWAP2 DUP12 SWAP2 ADD PUSH2 0x1720 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x560 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x574 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x598 SWAP2 SWAP1 PUSH2 0x1252 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 PUSH32 0x0 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5E3 SWAP2 SWAP1 PUSH2 0x13B7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x60F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x633 SWAP2 SWAP1 PUSH2 0x1286 JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND TIMESTAMP GT DUP1 ISZERO PUSH2 0x650 JUMPI POP DUP1 ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x6DC JUMPI PUSH1 0x0 PUSH2 0x677 DUP6 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND TIMESTAMP PUSH2 0xF61 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x5 SLOAD PUSH2 0x6AA DUP8 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH2 0x6A4 PUSH1 0x6 SLOAD DUP7 PUSH2 0xFDA SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH2 0xFDA JUMP JUMPDEST DUP2 PUSH2 0x6B1 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x6D7 DUP4 PUSH2 0x6C7 DUP4 PUSH5 0xE8D4A51000 PUSH2 0xFDA JUMP JUMPDEST DUP2 PUSH2 0x6CE JUMPI INVALID JUMPDEST DUP7 SWAP2 SWAP1 DIV PUSH2 0xF8A JUMP JUMPDEST SWAP4 POP POP POP JUMPDEST PUSH1 0x1 DUP4 ADD SLOAD DUP4 SLOAD PUSH2 0x707 SWAP2 SWAP1 PUSH5 0xE8D4A51000 SWAP1 PUSH2 0x6F9 SWAP1 DUP7 PUSH2 0xFDA JUMP JUMPDEST DUP2 PUSH2 0x700 JUMPI INVALID JUMPDEST DIV SWAP1 PUSH2 0xF61 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER DUP2 EQ PUSH2 0x73D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x161A JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x7A7 PUSH2 0x1157 JUMP JUMPDEST POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0x60 DUP2 ADD DUP5 MSTORE SWAP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP3 DIV DUP2 AND SWAP4 DUP4 ADD DUP5 SWAP1 MSTORE PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 SWAP2 DIV AND SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE TIMESTAMP GT ISZERO PUSH2 0xA98 JUMPI PUSH1 0x40 MLOAD PUSH4 0x78ED5D1F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x78ED5D1F SWAP1 PUSH2 0x84D SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x1720 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x865 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x879 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x89D SWAP2 SWAP1 PUSH2 0x1252 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 PUSH32 0x0 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8E8 SWAP2 SWAP1 PUSH2 0x13B7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x900 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x914 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x938 SWAP2 SWAP1 PUSH2 0x1286 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x9DB JUMPI PUSH1 0x0 PUSH2 0x962 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND TIMESTAMP PUSH2 0xF61 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x5 SLOAD PUSH2 0x98F DUP6 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH2 0x6A4 PUSH1 0x6 SLOAD DUP7 PUSH2 0xFDA SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH2 0x996 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x9CD PUSH2 0x9BC DUP5 PUSH2 0x9AF DUP5 PUSH5 0xE8D4A51000 PUSH2 0xFDA JUMP JUMPDEST DUP2 PUSH2 0x9B6 JUMPI INVALID JUMPDEST DIV PUSH2 0x1011 JUMP JUMPDEST DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 PUSH2 0x103A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP5 MSTORE POP POP JUMPDEST PUSH2 0x9E4 TIMESTAMP PUSH2 0xFAD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND PUSH1 0x20 DUP5 DUP2 ADD SWAP2 DUP3 MSTORE PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP6 MLOAD DUP2 SLOAD SWAP4 MLOAD DUP4 DUP9 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP1 SWAP6 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP4 AND OR PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x80 SHL NOT AND PUSH1 0x1 PUSH1 0x80 SHL DUP3 DUP9 AND MUL OR PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x1 PUSH1 0xC0 SHL SWAP6 SWAP1 SWAP7 AND SWAP5 SWAP1 SWAP5 MUL SWAP5 SWAP1 SWAP5 OR SWAP1 SSTORE MLOAD DUP6 SWAP3 PUSH32 0xFC9545022A542541AD085D091FB09A2AB36FEE366A4576AB63714EA907AD353 SWAP3 PUSH2 0xA8E SWAP3 SWAP1 SWAP2 DUP7 SWAP2 PUSH2 0x1737 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xACD JUMPI PUSH2 0xAC4 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0xAB8 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0x79F JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0xAA1 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xAFD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x15E5 JUMP JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0xDE89CB17AC7F58F94792B3E91E086ED85403819C24CEEA882491F960CCB1A278 SWAP1 PUSH2 0xB32 SWAP1 DUP4 SWAP1 PUSH2 0x1720 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x3 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0xB4A JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xB85 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x15E5 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND ISZERO PUSH2 0xBC1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x14A3 JUMP JUMPDEST PUSH1 0x5 SLOAD TIMESTAMP SWAP1 PUSH2 0xBD0 SWAP1 DUP5 PUSH2 0xF8A JUMP JUMPDEST PUSH1 0x5 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 DUP2 ADD PUSH2 0xBEF DUP4 PUSH2 0xFAD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC06 DUP6 PUSH2 0xFAD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 MLOAD DUP2 SLOAD SWAP4 DUP8 ADD MLOAD SWAP7 DUP4 ADD MLOAD DUP7 AND PUSH1 0x1 PUSH1 0xC0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP8 SWAP1 SWAP7 AND PUSH1 0x1 PUSH1 0x80 SHL MUL PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x80 SHL NOT PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR AND SWAP3 SWAP1 SWAP3 OR SWAP5 SWAP1 SWAP5 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE SWAP2 MSTORE PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B ADD DUP4 SWAP1 SSTORE MLOAD DUP3 SWAP1 PUSH32 0x38410508059921573AB9EBDCA2A5034BE738D236366B8F32DE4434EA95ED3C81 SWAP1 PUSH2 0xCE4 SWAP1 DUP7 SWAP1 PUSH2 0x1720 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD DUP3 JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0xD72 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x1507 JUMP JUMPDEST PUSH2 0xD7A PUSH2 0x1157 JUMP JUMPDEST PUSH2 0xD83 DUP7 PUSH2 0x79F JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD SWAP3 SWAP4 POP SWAP2 ISZERO PUSH2 0xE0D JUMPI PUSH1 0x1 DUP3 ADD SLOAD DUP4 MLOAD DUP4 SLOAD PUSH2 0xDD7 SWAP3 SWAP2 PUSH5 0xE8D4A51000 SWAP2 PUSH2 0x6F9 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0xFDA JUMP JUMPDEST SWAP1 POP PUSH2 0xE0D PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP8 DUP4 PUSH2 0x1069 JUMP JUMPDEST DUP4 DUP3 SSTORE DUP3 MLOAD PUSH5 0xE8D4A51000 SWAP1 PUSH2 0xE2D SWAP1 DUP7 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0xFDA JUMP JUMPDEST DUP2 PUSH2 0xE34 JUMPI INVALID JUMPDEST DIV DUP3 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2ECE88CA2BC08DD018DB50E1D25A20BF1241E5FAB1C396CAA51F01A54BD2F75B DUP5 PUSH1 0x40 MLOAD PUSH2 0xE81 SWAP2 SWAP1 PUSH2 0x1720 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH32 0x0 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xEE7 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH2 0xF2E DUP8 DUP8 PUSH2 0x484 JUMP JUMPDEST DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xF3B JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0xF84 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x1474 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 DUP2 ADD DUP2 DUP2 LT ISZERO PUSH2 0xF84 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x15AE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0xFD6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x164F JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0xFF5 JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0xFF2 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0xF84 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x1686 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 GT ISZERO PUSH2 0xFD6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x1577 JUMP JUMPDEST DUP2 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP4 AND SWAP1 DUP3 AND LT ISZERO PUSH2 0xF84 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x15AE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x108F SWAP3 SWAP2 SWAP1 PUSH2 0x13CB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH2 0x10C8 SWAP2 SWAP1 PUSH2 0x137E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1105 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x110A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x1134 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x1134 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1134 SWAP2 SWAP1 PUSH2 0x122F JUMP JUMPDEST PUSH2 0x1150 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x14D0 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x118B JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1196 DUP2 PUSH2 0x1761 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x11A6 DUP2 PUSH2 0x1779 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x11B6 DUP2 PUSH2 0x1779 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x11D3 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x11E9 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x11FC JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x120A JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x121D JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1240 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x124B DUP2 PUSH2 0x1779 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1263 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x124B DUP2 PUSH2 0x1761 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x127F JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1297 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x12B0 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x12C2 DUP2 PUSH2 0x1761 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x12E4 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x12F6 DUP2 PUSH2 0x1761 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x1306 DUP2 PUSH2 0x1761 JUMP JUMPDEST SWAP5 SWAP8 SWAP4 SWAP7 POP SWAP4 SWAP5 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1332 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x1344 DUP2 PUSH2 0x1761 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1367 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x139E JUMPI PUSH1 0x20 DUP2 DUP7 ADD DUP2 ADD MLOAD DUP6 DUP4 ADD MSTORE ADD PUSH2 0x1384 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x13AC JUMPI DUP3 DUP3 DUP6 ADD MSTORE JUMPDEST POP SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP4 MLOAD SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x20 SWAP1 PUSH1 0x60 DUP5 ADD SWAP1 DUP3 DUP8 ADD DUP5 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1426 JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1401 JUMP JUMPDEST POP POP POP DUP4 DUP2 SUB DUP3 DUP6 ADD MSTORE DUP1 DUP6 MLOAD PUSH2 0x143D DUP2 DUP5 PUSH2 0x1720 JUMP JUMPDEST SWAP2 POP DUP4 DUP8 ADD SWAP3 POP DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1467 JUMPI PUSH2 0x1459 DUP4 DUP6 MLOAD PUSH2 0x1376 JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH2 0x1446 JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH21 0x426F72696E674D6174683A20556E646572666C6F77 PUSH1 0x58 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH19 0x506F6F6C20616C726561647920657869737473 PUSH1 0x68 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1C SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E6745524332303A205472616E73666572206661696C656400000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x21 SWAP1 DUP3 ADD MSTORE PUSH32 0x4F6E6C79204D4356322063616E2063616C6C20746869732066756E6374696F6E PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0xF9 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH21 0x4F776E61626C653A207A65726F2061646472657373 PUSH1 0x58 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1C SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A2075696E74313238204F766572666C6F7700000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x18 SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A20416464204F766572666C6F770000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C657220213D2070656E64696E67206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A2075696E743634204F766572666C6F770000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x18 SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A204D756C204F766572666C6F770000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP3 DUP4 ADD MLOAD AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1776 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1776 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 BALANCE 0xC3 SSTORE SSTORE PUSH15 0x830683DB08F26640FFC256ADC10C3C EQ 0xDB SLT 0xD4 TIMESTAMP 0xD0 0xBB SDIV DUP4 0xEE 0xAD 0xD4 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "398:7377:11:-:0;;;2093:215;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;639:5:1;:18;;-1:-1:-1;;;;;;639:18:1;647:10;639:18;;;;;673:44;;647:10;;639:5;673:44;;639:5;;673:44;-1:-1:-1;;;;;;2193:26:11;;;;;;;;2229:15;:34;;;;2273:28;;;;;;398:7377;;456:563:-1;;;;619:2;607:9;598:7;594:23;590:32;587:2;;;-1:-1;;625:12;587:2;244:6;238:13;256:47;297:5;256:47;:::i;:::-;802:2;852:22;;393:13;921:2;971:22;;83:13;677:88;;-1:-1;393:13;-1:-1;101:33;83:13;101:33;:::i;:::-;929:74;;;;581:438;;;;;:::o;1443:117::-;-1:-1;;;;;1298:54;;1502:35;;1492:2;;1551:1;;1541:12;1492:2;1486:74;:::o;:::-;398:7377:11;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {
                "4170": [
                  {
                    "length": 32,
                    "start": 3558
                  },
                  {
                    "length": 32,
                    "start": 3771
                  }
                ],
                "4207": [
                  {
                    "length": 32,
                    "start": 1299
                  },
                  {
                    "length": 32,
                    "start": 1448
                  },
                  {
                    "length": 32,
                    "start": 2072
                  },
                  {
                    "length": 32,
                    "start": 2221
                  },
                  {
                    "length": 32,
                    "start": 3381
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061010b5760003560e01c806366da5815116100a25780638f10369a116100715780638f10369a1461021457806393f1a40b1461021c578063a3d833201461023d578063d63b3c4914610250578063e30c3978146102715761010b565b806366da5815146101c657806369883b4e146101d9578063771602f7146101ec5780638da5cb5b146101ff5761010b565b806348e43af4116100de57806348e43af4146101785780634e71e0c81461018b57806351eb05a61461019357806357a5b58c146101b35761010b565b8063078dfbe714610110578063081e3eda146101255780631526fe27146101435780631ab06ee514610165575b600080fd5b61012361011e366004611177565b610279565b005b61012d610368565b60405161013a9190611720565b60405180910390f35b61015661015136600461126e565b61036e565b60405161013a939291906116f6565b610123610173366004611355565b6103a5565b61012d61018636600461129e565b610484565b610123610712565b6101a66101a136600461126e565b61079f565b60405161013a91906116bd565b6101236101c13660046111c1565b610a9d565b6101236101d436600461126e565b610ad3565b61012d6101e736600461126e565b610b3d565b6101236101fa366004611355565b610b5b565b610207610cf1565b60405161013a91906113b7565b61012d610d00565b61022f61022a36600461129e565b610d06565b60405161013a929190611729565b61012361024b3660046112cd565b610d2a565b61026361025e36600461131e565b610e93565b60405161013a9291906113e4565b610207610f52565b6000546001600160a01b031633146102ac5760405162461bcd60e51b81526004016102a3906115e5565b60405180910390fd5b8115610347576001600160a01b0383161515806102c65750805b6102e25760405162461bcd60e51b81526004016102a390611548565b600080546040516001600160a01b03808716939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0385166001600160a01b031991821617909155600180549091169055610363565b600180546001600160a01b0319166001600160a01b0385161790555b505050565b60035490565b6002602052600090815260409020546001600160801b038116906001600160401b03600160801b8204811691600160c01b90041683565b6000546001600160a01b031633146103cf5760405162461bcd60e51b81526004016102a3906115e5565b60008281526002602052604090205460055461040691839161040091600160c01b90046001600160401b0316610f61565b90610f8a565b60055561041281610fad565b6000838152600260205260409081902080546001600160401b0393909316600160c01b026001600160c01b03909316929092179091555182907f942cc7e17a17c164bd977f32ab8c54265d5b9d481e4e352bf874f1e568874e7c90610478908490611720565b60405180910390a25050565b600061048e611157565b506000838152600260209081526040808320815160608101835290546001600160801b0380821683526001600160401b03600160801b8304811684870152600160c01b9092049091168284015287855260048085528386206001600160a01b03808a1688529552838620835194516378ed5d1f60e01b815293969095949092169391927f0000000000000000000000000000000000000000000000000000000000000000909216916378ed5d1f91610548918b9101611720565b60206040518083038186803b15801561056057600080fd5b505afa158015610574573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105989190611252565b6001600160a01b03166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016105e391906113b7565b60206040518083038186803b1580156105fb57600080fd5b505afa15801561060f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106339190611286565b905083602001516001600160401b03164211801561065057508015155b156106dc57600061067785602001516001600160401b031642610f6190919063ffffffff16565b905060006005546106aa87604001516001600160401b03166106a460065486610fda90919063ffffffff16565b90610fda565b816106b157fe5b0490506106d7836106c78364e8d4a51000610fda565b816106ce57fe5b86919004610f8a565b935050505b60018301548354610707919064e8d4a51000906106f99086610fda565b8161070057fe5b0490610f61565b979650505050505050565b6001546001600160a01b031633811461073d5760405162461bcd60e51b81526004016102a39061161a565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b6107a7611157565b50600081815260026020908152604091829020825160608101845290546001600160801b03811682526001600160401b03600160801b82048116938301849052600160c01b9091041692810192909252421115610a98576040516378ed5d1f60e01b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906378ed5d1f9061084d908690600401611720565b60206040518083038186803b15801561086557600080fd5b505afa158015610879573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089d9190611252565b6001600160a01b03166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016108e891906113b7565b60206040518083038186803b15801561090057600080fd5b505afa158015610914573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109389190611286565b905080156109db57600061096283602001516001600160401b031642610f6190919063ffffffff16565b9050600060055461098f85604001516001600160401b03166106a460065486610fda90919063ffffffff16565b8161099657fe5b0490506109cd6109bc846109af8464e8d4a51000610fda565b816109b657fe5b04611011565b85516001600160801b03169061103a565b6001600160801b0316845250505b6109e442610fad565b6001600160401b03908116602084810191825260008681526002909152604090819020855181549351838801516001600160801b03199095166001600160801b0383161767ffffffffffffffff60801b1916600160801b82881602176001600160c01b0316600160c01b95909616949094029490941790555185927f0fc9545022a542541ad085d091fb09a2ab36fee366a4576ab63714ea907ad35392610a8e9290918691611737565b60405180910390a2505b919050565b8060005b81811015610acd57610ac4848483818110610ab857fe5b9050602002013561079f565b50600101610aa1565b50505050565b6000546001600160a01b03163314610afd5760405162461bcd60e51b81526004016102a3906115e5565b60068190556040517fde89cb17ac7f58f94792b3e91e086ed85403819c24ceea882491f960ccb1a27890610b32908390611720565b60405180910390a150565b60038181548110610b4a57fe5b600091825260209091200154905081565b6000546001600160a01b03163314610b855760405162461bcd60e51b81526004016102a3906115e5565b600081815260026020526040902054600160801b90046001600160401b031615610bc15760405162461bcd60e51b81526004016102a3906114a3565b6005544290610bd09084610f8a565b60055560408051606081019091526000815260208101610bef83610fad565b6001600160401b03168152602001610c0685610fad565b6001600160401b0390811690915260008481526002602090815260408083208551815493870151968301518616600160c01b026001600160c01b0397909616600160801b0267ffffffffffffffff60801b196001600160801b039092166001600160801b031990951694909417169290921794909416929092179091556003805460018101825591527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b018390555182907f38410508059921573ab9ebdca2a5034be738d236366b8f32de4434ea95ed3c8190610ce4908690611720565b60405180910390a2505050565b6000546001600160a01b031681565b60065481565b60046020908152600092835260408084209091529082529020805460019091015482565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610d725760405162461bcd60e51b81526004016102a390611507565b610d7a611157565b610d838661079f565b60008781526004602090815260408083206001600160a01b038a168452909152812080549293509115610e0d57600182015483518354610dd7929164e8d4a51000916106f9916001600160801b0316610fda565b9050610e0d6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168783611069565b838255825164e8d4a5100090610e2d9086906001600160801b0316610fda565b81610e3457fe5b048260010181905550856001600160a01b031688886001600160a01b03167f2ece88ca2bc08dd018db50e1d25a20bf1241e5fab1c396caa51f01a54bd2f75b84604051610e819190611720565b60405180910390a45050505050505050565b60408051600180825281830190925260609182918291602080830190803683370190505090507f000000000000000000000000000000000000000000000000000000000000000081600081518110610ee757fe5b6001600160a01b039290921660209283029190910190910152604080516001808252818301909252606091816020016020820280368337019050509050610f2e8787610484565b81600081518110610f3b57fe5b602090810291909101015290969095509350505050565b6001546001600160a01b031681565b80820382811115610f845760405162461bcd60e51b81526004016102a390611474565b92915050565b81810181811015610f845760405162461bcd60e51b81526004016102a3906115ae565b60006001600160401b03821115610fd65760405162461bcd60e51b81526004016102a39061164f565b5090565b6000811580610ff557505080820282828281610ff257fe5b04145b610f845760405162461bcd60e51b81526004016102a390611686565b60006001600160801b03821115610fd65760405162461bcd60e51b81526004016102a390611577565b8181016001600160801b038083169082161015610f845760405162461bcd60e51b81526004016102a3906115ae565b60006060846001600160a01b031663a9059cbb858560405160240161108f9291906113cb565b6040516020818303038152906040529060e01b6020820180516001600160e01b0383818316178352505050506040516110c8919061137e565b6000604051808303816000865af19150503d8060008114611105576040519150601f19603f3d011682016040523d82523d6000602084013e61110a565b606091505b5091509150818015611134575080511580611134575080806020019051810190611134919061122f565b6111505760405162461bcd60e51b81526004016102a3906114d0565b5050505050565b604080516060810182526000808252602082018190529181019190915290565b60008060006060848603121561118b578283fd5b833561119681611761565b925060208401356111a681611779565b915060408401356111b681611779565b809150509250925092565b600080602083850312156111d3578182fd5b82356001600160401b03808211156111e9578384fd5b818501915085601f8301126111fc578384fd5b81358181111561120a578485fd5b866020808302850101111561121d578485fd5b60209290920196919550909350505050565b600060208284031215611240578081fd5b815161124b81611779565b9392505050565b600060208284031215611263578081fd5b815161124b81611761565b60006020828403121561127f578081fd5b5035919050565b600060208284031215611297578081fd5b5051919050565b600080604083850312156112b0578182fd5b8235915060208301356112c281611761565b809150509250929050565b600080600080600060a086880312156112e4578081fd5b8535945060208601356112f681611761565b9350604086013561130681611761565b94979396509394606081013594506080013592915050565b600080600060608486031215611332578283fd5b83359250602084013561134481611761565b929592945050506040919091013590565b60008060408385031215611367578182fd5b50508035926020909101359150565b815260200190565b60008251815b8181101561139e5760208186018101518583015201611384565b818111156113ac5782828501525b509190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b604080825283519082018190526000906020906060840190828701845b828110156114265781516001600160a01b031684529284019290840190600101611401565b5050508381038285015280855161143d8184611720565b91508387019250845b8181101561146757611459838551611376565b938501939250600101611446565b5090979650505050505050565b602080825260159082015274426f72696e674d6174683a20556e646572666c6f7760581b604082015260600190565b602080825260139082015272506f6f6c20616c72656164792065786973747360681b604082015260600190565b6020808252601c908201527f426f72696e6745524332303a205472616e73666572206661696c656400000000604082015260600190565b60208082526021908201527f4f6e6c79204d4356322063616e2063616c6c20746869732066756e6374696f6e6040820152601760f91b606082015260800190565b6020808252601590820152744f776e61626c653a207a65726f206164647265737360581b604082015260600190565b6020808252601c908201527f426f72696e674d6174683a2075696e74313238204f766572666c6f7700000000604082015260600190565b60208082526018908201527f426f72696e674d6174683a20416464204f766572666c6f770000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e6572604082015260600190565b6020808252601b908201527f426f72696e674d6174683a2075696e743634204f766572666c6f770000000000604082015260600190565b60208082526018908201527f426f72696e674d6174683a204d756c204f766572666c6f770000000000000000604082015260600190565b81516001600160801b031681526020808301516001600160401b0390811691830191909152604092830151169181019190915260600190565b6001600160801b039390931683526001600160401b03918216602084015216604082015260600190565b90815260200190565b918252602082015260400190565b6001600160401b0393909316835260208301919091526001600160801b0316604082015260600190565b6001600160a01b038116811461177657600080fd5b50565b801515811461177657600080fdfea264697066735822122031c355556e830683db08f26640ffc256adc10c3c14db12d442d0bb0583eeadd464736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x10B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x66DA5815 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0x8F10369A GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x8F10369A EQ PUSH2 0x214 JUMPI DUP1 PUSH4 0x93F1A40B EQ PUSH2 0x21C JUMPI DUP1 PUSH4 0xA3D83320 EQ PUSH2 0x23D JUMPI DUP1 PUSH4 0xD63B3C49 EQ PUSH2 0x250 JUMPI DUP1 PUSH4 0xE30C3978 EQ PUSH2 0x271 JUMPI PUSH2 0x10B JUMP JUMPDEST DUP1 PUSH4 0x66DA5815 EQ PUSH2 0x1C6 JUMPI DUP1 PUSH4 0x69883B4E EQ PUSH2 0x1D9 JUMPI DUP1 PUSH4 0x771602F7 EQ PUSH2 0x1EC JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x1FF JUMPI PUSH2 0x10B JUMP JUMPDEST DUP1 PUSH4 0x48E43AF4 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0x48E43AF4 EQ PUSH2 0x178 JUMPI DUP1 PUSH4 0x4E71E0C8 EQ PUSH2 0x18B JUMPI DUP1 PUSH4 0x51EB05A6 EQ PUSH2 0x193 JUMPI DUP1 PUSH4 0x57A5B58C EQ PUSH2 0x1B3 JUMPI PUSH2 0x10B JUMP JUMPDEST DUP1 PUSH4 0x78DFBE7 EQ PUSH2 0x110 JUMPI DUP1 PUSH4 0x81E3EDA EQ PUSH2 0x125 JUMPI DUP1 PUSH4 0x1526FE27 EQ PUSH2 0x143 JUMPI DUP1 PUSH4 0x1AB06EE5 EQ PUSH2 0x165 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x123 PUSH2 0x11E CALLDATASIZE PUSH1 0x4 PUSH2 0x1177 JUMP JUMPDEST PUSH2 0x279 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x12D PUSH2 0x368 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13A SWAP2 SWAP1 PUSH2 0x1720 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x156 PUSH2 0x151 CALLDATASIZE PUSH1 0x4 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x36E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x16F6 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x173 CALLDATASIZE PUSH1 0x4 PUSH2 0x1355 JUMP JUMPDEST PUSH2 0x3A5 JUMP JUMPDEST PUSH2 0x12D PUSH2 0x186 CALLDATASIZE PUSH1 0x4 PUSH2 0x129E JUMP JUMPDEST PUSH2 0x484 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x712 JUMP JUMPDEST PUSH2 0x1A6 PUSH2 0x1A1 CALLDATASIZE PUSH1 0x4 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x79F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13A SWAP2 SWAP1 PUSH2 0x16BD JUMP JUMPDEST PUSH2 0x123 PUSH2 0x1C1 CALLDATASIZE PUSH1 0x4 PUSH2 0x11C1 JUMP JUMPDEST PUSH2 0xA9D JUMP JUMPDEST PUSH2 0x123 PUSH2 0x1D4 CALLDATASIZE PUSH1 0x4 PUSH2 0x126E JUMP JUMPDEST PUSH2 0xAD3 JUMP JUMPDEST PUSH2 0x12D PUSH2 0x1E7 CALLDATASIZE PUSH1 0x4 PUSH2 0x126E JUMP JUMPDEST PUSH2 0xB3D JUMP JUMPDEST PUSH2 0x123 PUSH2 0x1FA CALLDATASIZE PUSH1 0x4 PUSH2 0x1355 JUMP JUMPDEST PUSH2 0xB5B JUMP JUMPDEST PUSH2 0x207 PUSH2 0xCF1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13A SWAP2 SWAP1 PUSH2 0x13B7 JUMP JUMPDEST PUSH2 0x12D PUSH2 0xD00 JUMP JUMPDEST PUSH2 0x22F PUSH2 0x22A CALLDATASIZE PUSH1 0x4 PUSH2 0x129E JUMP JUMPDEST PUSH2 0xD06 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13A SWAP3 SWAP2 SWAP1 PUSH2 0x1729 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x24B CALLDATASIZE PUSH1 0x4 PUSH2 0x12CD JUMP JUMPDEST PUSH2 0xD2A JUMP JUMPDEST PUSH2 0x263 PUSH2 0x25E CALLDATASIZE PUSH1 0x4 PUSH2 0x131E JUMP JUMPDEST PUSH2 0xE93 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13A SWAP3 SWAP2 SWAP1 PUSH2 0x13E4 JUMP JUMPDEST PUSH2 0x207 PUSH2 0xF52 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x2AC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x15E5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 ISZERO PUSH2 0x347 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO ISZERO DUP1 PUSH2 0x2C6 JUMPI POP DUP1 JUMPDEST PUSH2 0x2E2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x1548 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE PUSH2 0x363 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND OR SWAP1 SSTORE JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP3 DIV DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV AND DUP4 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x3CF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x15E5 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x5 SLOAD PUSH2 0x406 SWAP2 DUP4 SWAP2 PUSH2 0x400 SWAP2 PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH2 0xF61 JUMP JUMPDEST SWAP1 PUSH2 0xF8A JUMP JUMPDEST PUSH1 0x5 SSTORE PUSH2 0x412 DUP2 PUSH2 0xFAD JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP4 SWAP1 SWAP4 AND PUSH1 0x1 PUSH1 0xC0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD DUP3 SWAP1 PUSH32 0x942CC7E17A17C164BD977F32AB8C54265D5B9D481E4E352BF874F1E568874E7C SWAP1 PUSH2 0x478 SWAP1 DUP5 SWAP1 PUSH2 0x1720 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48E PUSH2 0x1157 JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH1 0x60 DUP2 ADD DUP4 MSTORE SWAP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP4 DIV DUP2 AND DUP5 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 SWAP3 DIV SWAP1 SWAP2 AND DUP3 DUP5 ADD MSTORE DUP8 DUP6 MSTORE PUSH1 0x4 DUP1 DUP6 MSTORE DUP4 DUP7 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND DUP9 MSTORE SWAP6 MSTORE DUP4 DUP7 KECCAK256 DUP4 MLOAD SWAP5 MLOAD PUSH4 0x78ED5D1F PUSH1 0xE0 SHL DUP2 MSTORE SWAP4 SWAP7 SWAP1 SWAP6 SWAP5 SWAP1 SWAP3 AND SWAP4 SWAP2 SWAP3 PUSH32 0x0 SWAP1 SWAP3 AND SWAP2 PUSH4 0x78ED5D1F SWAP2 PUSH2 0x548 SWAP2 DUP12 SWAP2 ADD PUSH2 0x1720 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x560 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x574 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x598 SWAP2 SWAP1 PUSH2 0x1252 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 PUSH32 0x0 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5E3 SWAP2 SWAP1 PUSH2 0x13B7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x60F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x633 SWAP2 SWAP1 PUSH2 0x1286 JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND TIMESTAMP GT DUP1 ISZERO PUSH2 0x650 JUMPI POP DUP1 ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x6DC JUMPI PUSH1 0x0 PUSH2 0x677 DUP6 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND TIMESTAMP PUSH2 0xF61 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x5 SLOAD PUSH2 0x6AA DUP8 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH2 0x6A4 PUSH1 0x6 SLOAD DUP7 PUSH2 0xFDA SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH2 0xFDA JUMP JUMPDEST DUP2 PUSH2 0x6B1 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x6D7 DUP4 PUSH2 0x6C7 DUP4 PUSH5 0xE8D4A51000 PUSH2 0xFDA JUMP JUMPDEST DUP2 PUSH2 0x6CE JUMPI INVALID JUMPDEST DUP7 SWAP2 SWAP1 DIV PUSH2 0xF8A JUMP JUMPDEST SWAP4 POP POP POP JUMPDEST PUSH1 0x1 DUP4 ADD SLOAD DUP4 SLOAD PUSH2 0x707 SWAP2 SWAP1 PUSH5 0xE8D4A51000 SWAP1 PUSH2 0x6F9 SWAP1 DUP7 PUSH2 0xFDA JUMP JUMPDEST DUP2 PUSH2 0x700 JUMPI INVALID JUMPDEST DIV SWAP1 PUSH2 0xF61 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER DUP2 EQ PUSH2 0x73D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x161A JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x7A7 PUSH2 0x1157 JUMP JUMPDEST POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0x60 DUP2 ADD DUP5 MSTORE SWAP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP3 DIV DUP2 AND SWAP4 DUP4 ADD DUP5 SWAP1 MSTORE PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 SWAP2 DIV AND SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE TIMESTAMP GT ISZERO PUSH2 0xA98 JUMPI PUSH1 0x40 MLOAD PUSH4 0x78ED5D1F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x78ED5D1F SWAP1 PUSH2 0x84D SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x1720 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x865 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x879 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x89D SWAP2 SWAP1 PUSH2 0x1252 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 PUSH32 0x0 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8E8 SWAP2 SWAP1 PUSH2 0x13B7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x900 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x914 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x938 SWAP2 SWAP1 PUSH2 0x1286 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x9DB JUMPI PUSH1 0x0 PUSH2 0x962 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND TIMESTAMP PUSH2 0xF61 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x5 SLOAD PUSH2 0x98F DUP6 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH2 0x6A4 PUSH1 0x6 SLOAD DUP7 PUSH2 0xFDA SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH2 0x996 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x9CD PUSH2 0x9BC DUP5 PUSH2 0x9AF DUP5 PUSH5 0xE8D4A51000 PUSH2 0xFDA JUMP JUMPDEST DUP2 PUSH2 0x9B6 JUMPI INVALID JUMPDEST DIV PUSH2 0x1011 JUMP JUMPDEST DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 PUSH2 0x103A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP5 MSTORE POP POP JUMPDEST PUSH2 0x9E4 TIMESTAMP PUSH2 0xFAD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND PUSH1 0x20 DUP5 DUP2 ADD SWAP2 DUP3 MSTORE PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP6 MLOAD DUP2 SLOAD SWAP4 MLOAD DUP4 DUP9 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP1 SWAP6 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP4 AND OR PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x80 SHL NOT AND PUSH1 0x1 PUSH1 0x80 SHL DUP3 DUP9 AND MUL OR PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB AND PUSH1 0x1 PUSH1 0xC0 SHL SWAP6 SWAP1 SWAP7 AND SWAP5 SWAP1 SWAP5 MUL SWAP5 SWAP1 SWAP5 OR SWAP1 SSTORE MLOAD DUP6 SWAP3 PUSH32 0xFC9545022A542541AD085D091FB09A2AB36FEE366A4576AB63714EA907AD353 SWAP3 PUSH2 0xA8E SWAP3 SWAP1 SWAP2 DUP7 SWAP2 PUSH2 0x1737 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xACD JUMPI PUSH2 0xAC4 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0xAB8 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0x79F JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0xAA1 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xAFD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x15E5 JUMP JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0xDE89CB17AC7F58F94792B3E91E086ED85403819C24CEEA882491F960CCB1A278 SWAP1 PUSH2 0xB32 SWAP1 DUP4 SWAP1 PUSH2 0x1720 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x3 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0xB4A JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xB85 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x15E5 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND ISZERO PUSH2 0xBC1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x14A3 JUMP JUMPDEST PUSH1 0x5 SLOAD TIMESTAMP SWAP1 PUSH2 0xBD0 SWAP1 DUP5 PUSH2 0xF8A JUMP JUMPDEST PUSH1 0x5 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 DUP2 ADD PUSH2 0xBEF DUP4 PUSH2 0xFAD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC06 DUP6 PUSH2 0xFAD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 MLOAD DUP2 SLOAD SWAP4 DUP8 ADD MLOAD SWAP7 DUP4 ADD MLOAD DUP7 AND PUSH1 0x1 PUSH1 0xC0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB SWAP8 SWAP1 SWAP7 AND PUSH1 0x1 PUSH1 0x80 SHL MUL PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x80 SHL NOT PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR AND SWAP3 SWAP1 SWAP3 OR SWAP5 SWAP1 SWAP5 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE SWAP2 MSTORE PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B ADD DUP4 SWAP1 SSTORE MLOAD DUP3 SWAP1 PUSH32 0x38410508059921573AB9EBDCA2A5034BE738D236366B8F32DE4434EA95ED3C81 SWAP1 PUSH2 0xCE4 SWAP1 DUP7 SWAP1 PUSH2 0x1720 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD DUP3 JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0xD72 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x1507 JUMP JUMPDEST PUSH2 0xD7A PUSH2 0x1157 JUMP JUMPDEST PUSH2 0xD83 DUP7 PUSH2 0x79F JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD SWAP3 SWAP4 POP SWAP2 ISZERO PUSH2 0xE0D JUMPI PUSH1 0x1 DUP3 ADD SLOAD DUP4 MLOAD DUP4 SLOAD PUSH2 0xDD7 SWAP3 SWAP2 PUSH5 0xE8D4A51000 SWAP2 PUSH2 0x6F9 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0xFDA JUMP JUMPDEST SWAP1 POP PUSH2 0xE0D PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP8 DUP4 PUSH2 0x1069 JUMP JUMPDEST DUP4 DUP3 SSTORE DUP3 MLOAD PUSH5 0xE8D4A51000 SWAP1 PUSH2 0xE2D SWAP1 DUP7 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0xFDA JUMP JUMPDEST DUP2 PUSH2 0xE34 JUMPI INVALID JUMPDEST DIV DUP3 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2ECE88CA2BC08DD018DB50E1D25A20BF1241E5FAB1C396CAA51F01A54BD2F75B DUP5 PUSH1 0x40 MLOAD PUSH2 0xE81 SWAP2 SWAP1 PUSH2 0x1720 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH32 0x0 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xEE7 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH2 0xF2E DUP8 DUP8 PUSH2 0x484 JUMP JUMPDEST DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xF3B JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0xF84 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x1474 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 DUP2 ADD DUP2 DUP2 LT ISZERO PUSH2 0xF84 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x15AE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0xFD6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x164F JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0xFF5 JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0xFF2 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0xF84 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x1686 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 GT ISZERO PUSH2 0xFD6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x1577 JUMP JUMPDEST DUP2 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP4 AND SWAP1 DUP3 AND LT ISZERO PUSH2 0xF84 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x15AE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x108F SWAP3 SWAP2 SWAP1 PUSH2 0x13CB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH2 0x10C8 SWAP2 SWAP1 PUSH2 0x137E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1105 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x110A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x1134 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x1134 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1134 SWAP2 SWAP1 PUSH2 0x122F JUMP JUMPDEST PUSH2 0x1150 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3 SWAP1 PUSH2 0x14D0 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x118B JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1196 DUP2 PUSH2 0x1761 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x11A6 DUP2 PUSH2 0x1779 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x11B6 DUP2 PUSH2 0x1779 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x11D3 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x11E9 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x11FC JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x120A JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x121D JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1240 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x124B DUP2 PUSH2 0x1779 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1263 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x124B DUP2 PUSH2 0x1761 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x127F JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1297 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x12B0 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x12C2 DUP2 PUSH2 0x1761 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x12E4 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x12F6 DUP2 PUSH2 0x1761 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x1306 DUP2 PUSH2 0x1761 JUMP JUMPDEST SWAP5 SWAP8 SWAP4 SWAP7 POP SWAP4 SWAP5 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1332 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x1344 DUP2 PUSH2 0x1761 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1367 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x139E JUMPI PUSH1 0x20 DUP2 DUP7 ADD DUP2 ADD MLOAD DUP6 DUP4 ADD MSTORE ADD PUSH2 0x1384 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x13AC JUMPI DUP3 DUP3 DUP6 ADD MSTORE JUMPDEST POP SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP4 MLOAD SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x20 SWAP1 PUSH1 0x60 DUP5 ADD SWAP1 DUP3 DUP8 ADD DUP5 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1426 JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1401 JUMP JUMPDEST POP POP POP DUP4 DUP2 SUB DUP3 DUP6 ADD MSTORE DUP1 DUP6 MLOAD PUSH2 0x143D DUP2 DUP5 PUSH2 0x1720 JUMP JUMPDEST SWAP2 POP DUP4 DUP8 ADD SWAP3 POP DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1467 JUMPI PUSH2 0x1459 DUP4 DUP6 MLOAD PUSH2 0x1376 JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH2 0x1446 JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH21 0x426F72696E674D6174683A20556E646572666C6F77 PUSH1 0x58 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH19 0x506F6F6C20616C726561647920657869737473 PUSH1 0x68 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1C SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E6745524332303A205472616E73666572206661696C656400000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x21 SWAP1 DUP3 ADD MSTORE PUSH32 0x4F6E6C79204D4356322063616E2063616C6C20746869732066756E6374696F6E PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0xF9 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH21 0x4F776E61626C653A207A65726F2061646472657373 PUSH1 0x58 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1C SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A2075696E74313238204F766572666C6F7700000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x18 SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A20416464204F766572666C6F770000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C657220213D2070656E64696E67206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A2075696E743634204F766572666C6F770000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x18 SWAP1 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A204D756C204F766572666C6F770000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP3 DUP4 ADD MLOAD AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1776 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1776 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 BALANCE 0xC3 SSTORE SSTORE PUSH15 0x830683DB08F26640FFC256ADC10C3C EQ 0xDB SLT 0xD4 TIMESTAMP 0xD0 0xBB SDIV DUP4 0xEE 0xAD 0xD4 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "398:7377:11:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;774:472:1;;;;;;:::i;:::-;;:::i;:::-;;4009:97:11;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1191:45;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;5100:263::-;;;;;;:::i;:::-;;:::i;5571:832::-;;;;;;:::i;:::-;;:::i;1295:348:1:-;;;:::i;6948:824:11:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;6581:188::-;;;;;;:::i;:::-;;:::i;3622:173::-;;;;;;:::i;:::-;;:::i;1243:24::-;;;;;;:::i;:::-;;:::i;4355:512::-;;;;;;:::i;:::-;;:::i;350:20:1:-;;;:::i;:::-;;;;;;;:::i;1526:30:11:-;;;:::i;1331:66::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;2315:685::-;;;;;;:::i;:::-;;:::i;3010:420::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;397:27:1:-;;;:::i;774:472::-;1746:5;;-1:-1:-1;;;;;1746:5:1;1732:10;:19;1724:64;;;;-1:-1:-1;;;1724:64:1;;;;;;;:::i;:::-;;;;;;;;;879:6:::1;875:364;;;-1:-1:-1::0;;;;;933:22:1;::::1;::::0;::::1;::::0;:34:::1;;;959:8;933:34;925:68;;;;-1:-1:-1::0;;;925:68:1::1;;;;;;;:::i;:::-;1060:5;::::0;;1039:37:::1;::::0;-1:-1:-1;;;;;1039:37:1;;::::1;::::0;1060:5;::::1;::::0;1039:37:::1;::::0;::::1;1091:5;:16:::0;;-1:-1:-1;;;;;1091:16:1;::::1;-1:-1:-1::0;;;;;;1091:16:1;;::::1;;::::0;;;;1122:25;;;;::::1;::::0;;875:364:::1;;;1204:12;:23:::0;;-1:-1:-1;;;;;;1204:23:1::1;-1:-1:-1::0;;;;;1204:23:1;::::1;;::::0;;875:364:::1;774:472:::0;;;:::o;4009:97:11:-;4085:7;:14;;4009:97::o;1191:45::-;;;;;;;;;;;;-1:-1:-1;;;;;1191:45:11;;;-1:-1:-1;;;;;;;;1191:45:11;;;;;-1:-1:-1;;;1191:45:11;;;;:::o;5100:263::-;1746:5:1;;-1:-1:-1;;;;;1746:5:1;1732:10;:19;1724:64;;;;-1:-1:-1;;;1724:64:1;;;;;;;:::i;:::-;5213:14:11::1;::::0;;;:8:::1;:14;::::0;;;;:25;5193:15:::1;::::0;:63:::1;::::0;5244:11;;5193:46:::1;::::0;-1:-1:-1;;;5213:25:11;::::1;-1:-1:-1::0;;;;;5213:25:11::1;5193:19;:46::i;:::-;:50:::0;::::1;:63::i;:::-;5175:15;:81:::0;5294:18:::1;:11:::0;:16:::1;:18::i;:::-;5266:14;::::0;;;:8:::1;:14;::::0;;;;;;:46;;-1:-1:-1;;;;;5266:46:11;;;::::1;-1:-1:-1::0;;;5266:46:11::1;-1:-1:-1::0;;;;;5266:46:11;;::::1;::::0;;;::::1;::::0;;;5327:29;5275:4;;5327:29:::1;::::0;::::1;::::0;5344:11;;5327:29:::1;:::i;:::-;;;;;;;;5100:263:::0;;:::o;5571:832::-;5643:15;5670:20;;:::i;:::-;-1:-1:-1;5693:14:11;;;;:8;:14;;;;;;;;5670:37;;;;;;;;;-1:-1:-1;;;;;5670:37:11;;;;;-1:-1:-1;;;;;;;;5670:37:11;;;;;;;;-1:-1:-1;;;5670:37:11;;;;;;;;;;5741:14;;;:8;:14;;;;;;-1:-1:-1;;;;;5741:21:11;;;;;;;;;;5804:26;;5859:39;;-1:-1:-1;;;5859:39:11;;5670:37;;5741:21;;5772:58;;;;;5693:14;;5871:12;5859:33;;;;;;:39;;5702:4;;5859:39;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5859:49:11;;5909:12;5859:63;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5840:82;;5954:4;:19;;;-1:-1:-1;;;;;5936:37:11;:15;:37;:54;;;;-1:-1:-1;5977:13:11;;;5936:54;5932:362;;;6006:12;6021:40;6041:4;:19;;;-1:-1:-1;;;;;6021:40:11;:15;:19;;:40;;;;:::i;:::-;6006:55;;6075:24;6151:15;;6102:46;6132:4;:15;;;-1:-1:-1;;;;;6102:46:11;:25;6111:15;;6102:4;:8;;:25;;;;:::i;:::-;:29;;:46::i;:::-;:64;;;;;;;-1:-1:-1;6204:79:11;6274:8;6230:41;6102:64;1609:4;6230:20;:41::i;:::-;:52;;;;;6204:21;;6230:52;;6204:25;:79::i;:::-;6180:103;;5932:362;;;6380:15;;;;6314:11;;6313:83;;6380:15;1609:4;;6314:38;;6330:21;6314:15;:38::i;:::-;:60;;;;;;;6313:66;:83::i;:::-;6303:93;5571:832;-1:-1:-1;;;;;;;5571:832:11:o;1295:348:1:-;1363:12;;-1:-1:-1;;;;;1363:12:1;1423:10;:27;;1415:72;;;;-1:-1:-1;;;1415:72:1;;;;;;;:::i;:::-;1546:5;;;1525:42;;-1:-1:-1;;;;;1525:42:1;;;;1546:5;;;1525:42;;;1578:5;:21;;-1:-1:-1;;;;;1578:21:1;;;-1:-1:-1;;;;;;1578:21:1;;;;;;;1610:25;;;;;;;1295:348::o;6948:824:11:-;6997:20;;:::i;:::-;-1:-1:-1;7036:13:11;;;;:8;:13;;;;;;;;;7029:20;;;;;;;;;-1:-1:-1;;;;;7029:20:11;;;;-1:-1:-1;;;;;;;;7029:20:11;;;;;;;;;;-1:-1:-1;;;7029:20:11;;;;;;;;;;;7063:15;:37;7059:707;;;7135:38;;-1:-1:-1;;;7135:38:11;;7116:16;;-1:-1:-1;;;;;7147:12:11;7135:33;;;;:38;;7169:3;;7135:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;7135:48:11;;7184:12;7135:62;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7116:81;-1:-1:-1;7216:12:11;;7212:356;;7248:12;7263:40;7283:4;:19;;;-1:-1:-1;;;;;7263:40:11;:15;:19;;:40;;;;:::i;:::-;7248:55;;7321:24;7397:15;;7348:46;7378:4;:15;;;-1:-1:-1;;;;;7348:46:11;:25;7357:15;;7348:4;:8;;:25;;;;:::i;:46::-;:64;;;;;;;-1:-1:-1;7459:94:11;7490:62;7535:8;7491:41;7348:64;1609:4;7491:20;:41::i;:::-;:52;;;;;;7490:60;:62::i;:::-;7459:26;;-1:-1:-1;;;;;7459:30:11;;;:94::i;:::-;-1:-1:-1;;;;;7430:123:11;;;-1:-1:-1;;7212:356:11;7603:22;:15;:20;:22::i;:::-;-1:-1:-1;;;;;7581:44:11;;;:19;;;;:44;;;7639:13;;;;:8;:13;;;;;;;;:20;;;;;;;;;;-1:-1:-1;;;;;;7639:20:11;;;-1:-1:-1;;;;;7639:20:11;;;-1:-1:-1;;;;7639:20:11;-1:-1:-1;;;7639:20:11;;;;;-1:-1:-1;;;;;7639:20:11;-1:-1:-1;;;7639:20:11;;;;;;;;;;;;;;7678:77;7639:13;;7678:77;;;;7639:20;;7718:8;;7678:77;:::i;:::-;;;;;;;;7059:707;;6948:824;;;:::o;6581:188::-;6664:4;6650:11;6685:78;6709:3;6705:1;:7;6685:78;;;6733:19;6744:4;;6749:1;6744:7;;;;;;;;;;;;;6733:10;:19::i;:::-;-1:-1:-1;6714:3:11;;6685:78;;;;6581:188;;;:::o;3622:173::-;1746:5:1;;-1:-1:-1;;;;;1746:5:1;1732:10;:19;1724:64;;;;-1:-1:-1;;;1724:64:1;;;;;;;:::i;:::-;3703:15:11::1;:34:::0;;;3752:36:::1;::::0;::::1;::::0;::::1;::::0;3721:16;;3752:36:::1;:::i;:::-;;;;;;;;3622:173:::0;:::o;1243:24::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1243:24:11;:::o;4355:512::-;1746:5:1;;-1:-1:-1;;;;;1746:5:1;1732:10;:19;1724:64;;;;-1:-1:-1;;;1724:64:1;;;;;;;:::i;:::-;4437:14:11::1;::::0;;;:8:::1;:14;::::0;;;;:29;-1:-1:-1;;;4437:29:11;::::1;-1:-1:-1::0;;;;;4437:29:11::1;:34:::0;4429:66:::1;;;;-1:-1:-1::0;;;4429:66:11::1;;;;;;;:::i;:::-;4573:15;::::0;4530::::1;::::0;4573:31:::1;::::0;4593:10;4573:19:::1;:31::i;:::-;4555:15;:49:::0;4632:152:::1;::::0;;::::1;::::0;::::1;::::0;;;-1:-1:-1;4632:152:11;;::::1;::::0;::::1;4714:21;:14:::0;:19:::1;:21::i;:::-;-1:-1:-1::0;;;;;4632:152:11::1;;;;;4667:17;:10;:15;:17::i;:::-;-1:-1:-1::0;;;;;4632:152:11;;::::1;::::0;;;4615:14:::1;::::0;;;:8:::1;:14;::::0;;;;;;;:169;;;;;;::::1;::::0;;;::::1;::::0;;::::1;-1:-1:-1::0;;;4615:169:11::1;-1:-1:-1::0;;;;;4615:169:11;;;::::1;-1:-1:-1::0;;;4615:169:11::1;-1:-1:-1::0;;;;;;;;;4615:169:11;;::::1;-1:-1:-1::0;;;;;;4615:169:11;;::::1;::::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;4794:7:::1;:18:::0;;4615:169;4794:18;::::1;::::0;;;;;::::1;::::0;;;4827:33;4624:4;;4827:33:::1;::::0;::::1;::::0;4849:10;;4827:33:::1;:::i;:::-;;;;;;;;1799:1:1;4355:512:11::0;;:::o;350:20:1:-;;;-1:-1:-1;;;;;350:20:1;;:::o;1526:30:11:-;;;;:::o;1331:66::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2315:685::-;3850:10;-1:-1:-1;;;;;3864:12:11;3850:26;;3829:106;;;;-1:-1:-1;;;3829:106:11;;;;;;;:::i;:::-;2447:20:::1;;:::i;:::-;2470:15;2481:3;2470:10;:15::i;:::-;2495:21;2519:13:::0;;;:8:::1;:13;::::0;;;;;;;-1:-1:-1;;;;;2519:20:11;::::1;::::0;;;;;;;2578:11;;2447:38;;-1:-1:-1;2519:20:11;2578:15;2574:249:::1;;2728:15;::::0;::::1;::::0;2652:26;;2636:11;;2635:126:::1;::::0;2728:15;1609:4:::1;::::0;2636:43:::1;::::0;-1:-1:-1;;;;;2636:43:11::1;:15;:43::i;2635:126::-;2609:152:::0;-1:-1:-1;2775:37:11::1;-1:-1:-1::0;;;;;2775:11:11::1;:24;2800:2:::0;2609:152;2775:24:::1;:37::i;:::-;2832:21:::0;;;2893:26;;1609:4:::1;::::0;2881:39:::1;::::0;2846:7;;-1:-1:-1;;;;;2881:39:11::1;:11;:39::i;:::-;:61;;;;;;2863:4;:15;;:79;;;;2990:2;-1:-1:-1::0;;;;;2957:36:11::1;2976:3;2969:5;-1:-1:-1::0;;;;;2957:36:11::1;;2981:7;2957:36;;;;;;:::i;:::-;;;;;;;;3945:1;;;2315:685:::0;;;;;:::o;3010:420::-;3205:15;;;3218:1;3205:15;;;;;;;;;3101:28;;;;;;3205:15;;;;;;;;;;;-1:-1:-1;3205:15:11;3173:47;;3250:11;3230:13;3244:1;3230:16;;;;;;;;-1:-1:-1;;;;;3230:32:11;;;;:16;;;;;;;;;;;:32;3306:16;;;3320:1;3306:16;;;;;;;;;3272:31;;3306:16;;;;;;;;;;;;-1:-1:-1;3306:16:11;3272:50;;3352:23;3365:3;3370:4;3352:12;:23::i;:::-;3332:14;3347:1;3332:17;;;;;;;;;;;;;;;;;:43;3393:13;;;;-1:-1:-1;3010:420:11;-1:-1:-1;;;;3010:420:11:o;397:27:1:-;;;-1:-1:-1;;;;;397:27:1;;:::o;342:122:4:-;425:5;;;420:16;;;;412:50;;;;-1:-1:-1;;;412:50:4;;;;;;;:::i;:::-;342:122;;;;:::o;211:125::-;294:5;;;289:16;;;;281:53;;;;-1:-1:-1;;;281:53:4;;;;;;;:::i;780:156::-;828:8;-1:-1:-1;;;;;857:15:4;;;849:55;;;;-1:-1:-1;;;849:55:4;;;;;;;:::i;:::-;-1:-1:-1;926:1:4;780:156::o;470:137::-;528:9;548:6;;;:28;;-1:-1:-1;;563:5:4;;;575:1;570;563:5;570:1;558:13;;;;;:18;548:28;540:65;;;;-1:-1:-1;;;540:65:4;;;;;;;:::i;613:161::-;662:9;-1:-1:-1;;;;;692:16:4;;;684:57;;;;-1:-1:-1;;;684:57:4;;;;;;;:::i;1134:125::-;1217:5;;;-1:-1:-1;;;;;1212:16:4;;;;;;;;1204:53;;;;-1:-1:-1;;;1204:53:4;;;;;;;:::i;951:304:3:-;1036:12;1050:17;1079:5;-1:-1:-1;;;;;1071:19:3;1114:10;1126:2;1130:6;1091:46;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1091:46:3;;;;;;;;;;;1071:67;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1035:103;;;;1157:7;:57;;;;-1:-1:-1;1169:11:3;;:16;;:44;;;1200:4;1189:24;;;;;;;;;;;;:::i;:::-;1149:98;;;;-1:-1:-1;;;1149:98:3;;;;;;;:::i;:::-;951:304;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1233:479::-;;;;1365:2;1353:9;1344:7;1340:23;1336:32;1333:2;;;-1:-1;;1371:12;1333:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;1423:63;-1:-1;1523:2;1559:22;;584:20;609:30;584:20;609:30;:::i;:::-;1531:60;-1:-1;1628:2;1664:22;;584:20;609:30;584:20;609:30;:::i;:::-;1636:60;;;;1327:385;;;;;:::o;1719:397::-;;;1858:2;1846:9;1837:7;1833:23;1829:32;1826:2;;;-1:-1;;1864:12;1826:2;1922:17;1909:31;-1:-1;;;;;1960:18;1952:6;1949:30;1946:2;;;-1:-1;;1982:12;1946:2;2083:6;2072:9;2068:22;;;290:3;283:4;275:6;271:17;267:27;257:2;;-1:-1;;298:12;257:2;341:6;328:20;1960:18;360:6;357:30;354:2;;;-1:-1;;390:12;354:2;485:3;1858:2;;469:6;465:17;426:6;451:32;;448:41;445:2;;;-1:-1;;492:12;445:2;1858;422:17;;;;;2002:98;;-1:-1;1820:296;;-1:-1;;;;1820:296::o;2123:257::-;;2235:2;2223:9;2214:7;2210:23;2206:32;2203:2;;;-1:-1;;2241:12;2203:2;732:6;726:13;744:30;768:5;744:30;:::i;:::-;2293:71;2197:183;-1:-1;;;2197:183::o;2387:291::-;;2516:2;2504:9;2495:7;2491:23;2487:32;2484:2;;;-1:-1;;2522:12;2484:2;884:6;878:13;896:47;937:5;896:47;:::i;2685:241::-;;2789:2;2777:9;2768:7;2764:23;2760:32;2757:2;;;-1:-1;;2795:12;2757:2;-1:-1;1022:20;;2751:175;-1:-1;2751:175::o;2933:263::-;;3048:2;3036:9;3027:7;3023:23;3019:32;3016:2;;;-1:-1;;3054:12;3016:2;-1:-1;1170:13;;3010:186;-1:-1;3010:186::o;3203:366::-;;;3324:2;3312:9;3303:7;3299:23;3295:32;3292:2;;;-1:-1;;3330:12;3292:2;1035:6;1022:20;3382:63;;3482:2;3525:9;3521:22;72:20;97:33;124:5;97:33;:::i;:::-;3490:63;;;;3286:283;;;;;:::o;3576:743::-;;;;;;3748:3;3736:9;3727:7;3723:23;3719:33;3716:2;;;-1:-1;;3755:12;3716:2;1035:6;1022:20;3807:63;;3907:2;3950:9;3946:22;72:20;97:33;124:5;97:33;:::i;:::-;3915:63;-1:-1;4015:2;4054:22;;72:20;97:33;72:20;97:33;:::i;:::-;3710:609;;;;-1:-1;4023:63;;4123:2;4162:22;;1022:20;;-1:-1;4231:3;4271:22;1022:20;;3710:609;-1:-1;;3710:609::o;4326:491::-;;;;4464:2;4452:9;4443:7;4439:23;4435:32;4432:2;;;-1:-1;;4470:12;4432:2;1035:6;1022:20;4522:63;;4622:2;4665:9;4661:22;72:20;97:33;124:5;97:33;:::i;:::-;4426:391;;4630:63;;-1:-1;;;4730:2;4769:22;;;;1022:20;;4426:391::o;4824:366::-;;;4945:2;4933:9;4924:7;4920:23;4916:32;4913:2;;;-1:-1;;4951:12;4913:2;-1:-1;;1022:20;;;5103:2;5142:22;;;1022:20;;-1:-1;4907:283::o;5408:173::-;12657:37;;5570:4;5561:14;;5488:93::o;13050:271::-;;7405:5;21453:12;-1:-1;23914:101;23928:6;23925:1;23922:13;23914:101;;;7549:4;23995:11;;;;;23989:18;23976:11;;;23969:39;23943:10;23914:101;;;24030:6;24027:1;24024:13;24021:2;;;-1:-1;24086:6;24081:3;24077:16;24070:27;24021:2;-1:-1;7580:16;;;;;13184:137;-1:-1;;13184:137::o;13328:222::-;-1:-1;;;;;23193:54;;;;5660:37;;13455:2;13440:18;;13426:124::o;13557:333::-;-1:-1;;;;;23193:54;;;;5660:37;;13876:2;13861:18;;12657:37;13712:2;13697:18;;13683:207::o;13897:657::-;14166:2;14180:47;;;21453:12;;14151:18;;;22129:19;;;13897:657;;22178:4;;22169:14;;;;21135;;;13897:657;6198:288;6223:6;6220:1;6217:13;6198:288;;;6284:13;;-1:-1;;;;;23193:54;7683:64;;5379:14;;;;21869;;;;1960:18;6238:9;6198:288;;;6202:14;;;14411:9;14405:4;14401:20;22178:4;14385:9;14381:18;14374:48;14436:108;6740:5;21453:12;6759:86;6838:6;6833:3;6759:86;:::i;:::-;6752:93;;22178:4;6916:5;21135:14;6928:21;;-1:-1;6955:260;6980:6;6977:1;6974:13;6955:260;;;7068:63;7127:3;7047:6;7041:13;7068:63;:::i;:::-;21869:14;;;;7061:70;-1:-1;6245:1;6995:9;6955:260;;;-1:-1;14428:116;;14137:417;-1:-1;;;;;;;14137:417::o;14561:416::-;14761:2;14775:47;;;7984:2;14746:18;;;22129:19;-1:-1;;;22169:14;;;8000:44;8063:12;;;14732:245::o;14984:416::-;15184:2;15198:47;;;8314:2;15169:18;;;22129:19;-1:-1;;;22169:14;;;8330:42;8391:12;;;15155:245::o;15407:416::-;15607:2;15621:47;;;8642:2;15592:18;;;22129:19;8678:30;22169:14;;;8658:51;8728:12;;;15578:245::o;15830:416::-;16030:2;16044:47;;;8979:2;16015:18;;;22129:19;9015:34;22169:14;;;8995:55;-1:-1;;;9070:12;;;9063:25;9107:12;;;16001:245::o;16253:416::-;16453:2;16467:47;;;9358:2;16438:18;;;22129:19;-1:-1;;;22169:14;;;9374:44;9437:12;;;16424:245::o;16676:416::-;16876:2;16890:47;;;9688:2;16861:18;;;22129:19;9724:30;22169:14;;;9704:51;9774:12;;;16847:245::o;17099:416::-;17299:2;17313:47;;;10025:2;17284:18;;;22129:19;10061:26;22169:14;;;10041:47;10107:12;;;17270:245::o;17522:416::-;17722:2;17736:47;;;17707:18;;;22129:19;10394:34;22169:14;;;10374:55;10448:12;;;17693:245::o;17945:416::-;18145:2;18159:47;;;18130:18;;;22129:19;10735:34;22169:14;;;10715:55;10789:12;;;18116:245::o;18368:416::-;18568:2;18582:47;;;11040:2;18553:18;;;22129:19;11076:29;22169:14;;;11056:50;11125:12;;;18539:245::o;18791:416::-;18991:2;19005:47;;;11376:2;18976:18;;;22129:19;11412:26;22169:14;;;11392:47;11458:12;;;18962:245::o;19214:326::-;11793:23;;-1:-1;;;;;23073:46;12294:37;;11974:4;11963:16;;;11957:23;-1:-1;;;;;23399:30;;;12032:14;;;12885:36;;;;12132:4;12121:16;;;12115:23;23399:30;12190:14;;;12885:36;;;;19393:2;19378:18;;19364:176::o;19547:436::-;-1:-1;;;;;23073:46;;;;12294:37;;-1:-1;;;;;23399:30;;;19888:2;19873:18;;12885:36;23399:30;19969:2;19954:18;;12885:36;19726:2;19711:18;;19697:286::o;19990:222::-;12657:37;;;20117:2;20102:18;;20088:124::o;20219:333::-;12657:37;;;20538:2;20523:18;;12657:37;20374:2;20359:18;;20345:207::o;20559:440::-;-1:-1;;;;;23399:30;;;;12885:36;;20902:2;20887:18;;12657:37;;;;-1:-1;;;;;23073:46;20985:2;20970:18;;12534:50;20740:2;20725:18;;20711:288::o;24118:117::-;-1:-1;;;;;23193:54;;24177:35;;24167:2;;24226:1;;24216:12;24167:2;24161:74;:::o;24242:111::-;24323:5;22873:13;22866:21;24301:5;24298:32;24288:2;;24344:1;;24334:12"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "1215400",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "add(uint256,uint256)": "infinite",
                "claimOwnership()": "45067",
                "massUpdatePools(uint256[])": "infinite",
                "onGoldNuggetReward(uint256,address,address,uint256,uint256)": "infinite",
                "owner()": "1159",
                "pendingOwner()": "1180",
                "pendingToken(uint256,address)": "infinite",
                "pendingTokens(uint256,address,uint256)": "infinite",
                "poolIds(uint256)": "2041",
                "poolInfo(uint256)": "1411",
                "poolLength()": "1074",
                "rewardPerSecond()": "1050",
                "set(uint256,uint256)": "infinite",
                "setRewardPerSecond(uint256)": "22188",
                "transferOwnership(address,bool,bool)": "infinite",
                "updatePool(uint256)": "infinite",
                "userInfo(uint256,address)": "2226"
              }
            },
            "methodIdentifiers": {
              "add(uint256,uint256)": "771602f7",
              "claimOwnership()": "4e71e0c8",
              "massUpdatePools(uint256[])": "57a5b58c",
              "onGoldNuggetReward(uint256,address,address,uint256,uint256)": "a3d83320",
              "owner()": "8da5cb5b",
              "pendingOwner()": "e30c3978",
              "pendingToken(uint256,address)": "48e43af4",
              "pendingTokens(uint256,address,uint256)": "d63b3c49",
              "poolIds(uint256)": "69883b4e",
              "poolInfo(uint256)": "1526fe27",
              "poolLength()": "081e3eda",
              "rewardPerSecond()": "8f10369a",
              "set(uint256,uint256)": "1ab06ee5",
              "setRewardPerSecond(uint256)": "66da5815",
              "transferOwnership(address,bool,bool)": "078dfbe7",
              "updatePool(uint256)": "51eb05a6",
              "userInfo(uint256,address)": "93f1a40b"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"_rewardToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_rewardPerSecond\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_GOLDMINER_V2\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"LogInit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"LogOnReward\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"allocPoint\",\"type\":\"uint256\"}],\"name\":\"LogPoolAddition\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewardPerSecond\",\"type\":\"uint256\"}],\"name\":\"LogRewardPerSecond\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"allocPoint\",\"type\":\"uint256\"}],\"name\":\"LogSetPool\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"lastRewardTime\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"accGoldNuggetPerShare\",\"type\":\"uint256\"}],\"name\":\"LogUpdatePool\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"allocPoint\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"}],\"name\":\"add\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"pids\",\"type\":\"uint256[]\"}],\"name\":\"massUpdatePools\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lpToken\",\"type\":\"uint256\"}],\"name\":\"onGoldNuggetReward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"pendingToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"pending\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"pendingTokens\",\"outputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"rewardTokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"rewardAmounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"poolIds\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"poolInfo\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"accGoldNuggetPerShare\",\"type\":\"uint128\"},{\"internalType\":\"uint64\",\"name\":\"lastRewardTime\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"allocPoint\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"poolLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"pools\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardPerSecond\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_allocPoint\",\"type\":\"uint256\"}],\"name\":\"set\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_rewardPerSecond\",\"type\":\"uint256\"}],\"name\":\"setRewardPerSecond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"direct\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"renounce\",\"type\":\"bool\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"}],\"name\":\"updatePool\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"accGoldNuggetPerShare\",\"type\":\"uint128\"},{\"internalType\":\"uint64\",\"name\":\"lastRewardTime\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"allocPoint\",\"type\":\"uint64\"}],\"internalType\":\"struct ComplexRewarderTime.PoolInfo\",\"name\":\"pool\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"userInfo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rewardDebt\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"@0xKeno\",\"kind\":\"dev\",\"methods\":{\"add(uint256,uint256)\":{\"params\":{\"_pid\":\"Pid on MCV2\",\"allocPoint\":\"AP of the new pool.\"}},\"massUpdatePools(uint256[])\":{\"params\":{\"pids\":\"Pool IDs of all to be updated. Make sure to update all active pools.\"}},\"pendingToken(uint256,address)\":{\"params\":{\"_pid\":\"The index of the pool. See `poolInfo`.\",\"_user\":\"Address of user.\"},\"returns\":{\"pending\":\"GOLN reward for a given user.\"}},\"set(uint256,uint256)\":{\"params\":{\"_allocPoint\":\"New AP of the pool.\",\"_pid\":\"The index of the pool. See `poolInfo`.\"}},\"setRewardPerSecond(uint256)\":{\"params\":{\"_rewardPerSecond\":\"The amount of GoldNugget to be distributed per second.\"}},\"updatePool(uint256)\":{\"params\":{\"pid\":\"The index of the pool. See `poolInfo`.\"},\"returns\":{\"pool\":\"Returns the pool that was updated.\"}}},\"stateVariables\":{\"totalAllocPoint\":{\"details\":\"Total allocation points. Must be the sum of all allocation points in all pools.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"add(uint256,uint256)\":{\"notice\":\"Add a new LP to the pool. Can only be called by the owner. DO NOT add the same LP token more than once. Rewards will be messed up if you do.\"},\"massUpdatePools(uint256[])\":{\"notice\":\"Update reward variables for all pools. Be careful of gas spending!\"},\"pendingToken(uint256,address)\":{\"notice\":\"View function to see pending Token\"},\"poolInfo(uint256)\":{\"notice\":\"Info of each pool.\"},\"poolLength()\":{\"notice\":\"Returns the number of MCV2 pools.\"},\"set(uint256,uint256)\":{\"notice\":\"Update the given pool's GOLN allocation point and `IRewarder` contract. Can only be called by the owner.\"},\"setRewardPerSecond(uint256)\":{\"notice\":\"Sets the goldnugget per second to be distributed. Can only be called by the owner.\"},\"updatePool(uint256)\":{\"notice\":\"Update reward variables of the given pool.\"},\"userInfo(uint256,address)\":{\"notice\":\"Info of each user that stakes LP tokens.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/mocks/ComplexRewarderTime.sol\":\"ComplexRewarderTime\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@boringcrypto/boring-solidity/contracts/BoringBatchable.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\r\\n// Audit on 5-Jan-2021 by Keno and BoringCrypto\\r\\n\\r\\n// P1 - P3: OK\\r\\npragma solidity 0.6.12;\\r\\npragma experimental ABIEncoderV2;\\r\\n// solhint-disable avoid-low-level-calls\\r\\n\\r\\nimport \\\"./libraries/BoringERC20.sol\\\";\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BaseBoringBatchable {\\r\\n    function _getRevertMsg(bytes memory _returnData) internal pure returns (string memory) {\\r\\n        // If the _res length is less than 68, then the transaction failed silently (without a revert message)\\r\\n        if (_returnData.length < 68) return \\\"Transaction reverted silently\\\";\\r\\n\\r\\n        assembly {\\r\\n            // Slice the sighash.\\r\\n            _returnData := add(_returnData, 0x04)\\r\\n        }\\r\\n        return abi.decode(_returnData, (string)); // All that remains is the revert string\\r\\n    }    \\r\\n    \\r\\n    // F3 - F9: OK\\r\\n    // F1: External is ok here because this is the batch function, adding it to a batch makes no sense\\r\\n    // F2: Calls in the batch may be payable, delegatecall operates in the same context, so each call in the batch has access to msg.value\\r\\n    // C1 - C21: OK\\r\\n    // C3: The length of the loop is fully under user control, so can't be exploited\\r\\n    // C7: Delegatecall is only used on the same contract, so it's safe\\r\\n    function batch(bytes[] calldata calls, bool revertOnFail) external payable returns(bool[] memory successes, bytes[] memory results) {\\r\\n        // Interactions\\r\\n        successes = new bool[](calls.length);\\r\\n        results = new bytes[](calls.length);\\r\\n        for (uint256 i = 0; i < calls.length; i++) {\\r\\n            (bool success, bytes memory result) = address(this).delegatecall(calls[i]);\\r\\n            require(success || !revertOnFail, _getRevertMsg(result));\\r\\n            successes[i] = success;\\r\\n            results[i] = result;\\r\\n        }\\r\\n    }\\r\\n}\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BoringBatchable is BaseBoringBatchable {\\r\\n    // F1 - F9: OK\\r\\n    // F6: Parameters can be used front-run the permit and the user's permit will fail (due to nonce or other revert)\\r\\n    //     if part of a batch this could be used to grief once as the second call would not need the permit\\r\\n    // C1 - C21: OK\\r\\n    function permitToken(IERC20 token, address from, address to, uint256 amount, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {\\r\\n        // Interactions\\r\\n        // X1 - X5\\r\\n        token.permit(from, to, amount, deadline, v, r, s);\\r\\n    }\\r\\n}\",\"keccak256\":\"0xe0b0316b015447ee28c6b7d96c4347b410a66e5d26e922ef3bcccc22f3b4d590\",\"license\":\"UNLICENSED\"},\"@boringcrypto/boring-solidity/contracts/BoringOwnable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\n// Audit on 5-Jan-2021 by Keno and BoringCrypto\\r\\n\\r\\n// P1 - P3: OK\\r\\npragma solidity 0.6.12;\\r\\n\\r\\n// Source: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol + Claimable.sol\\r\\n// Edited by BoringCrypto\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BoringOwnableData {\\r\\n    // V1 - V5: OK\\r\\n    address public owner;\\r\\n    // V1 - V5: OK\\r\\n    address public pendingOwner;\\r\\n}\\r\\n\\r\\n// T1 - T4: OK\\r\\ncontract BoringOwnable is BoringOwnableData {\\r\\n    // E1: OK\\r\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\r\\n\\r\\n    constructor () public {\\r\\n        owner = msg.sender;\\r\\n        emit OwnershipTransferred(address(0), msg.sender);\\r\\n    }\\r\\n\\r\\n    // F1 - F9: OK\\r\\n    // C1 - C21: OK\\r\\n    function transferOwnership(address newOwner, bool direct, bool renounce) public onlyOwner {\\r\\n        if (direct) {\\r\\n            // Checks\\r\\n            require(newOwner != address(0) || renounce, \\\"Ownable: zero address\\\");\\r\\n\\r\\n            // Effects\\r\\n            emit OwnershipTransferred(owner, newOwner);\\r\\n            owner = newOwner;\\r\\n            pendingOwner = address(0);\\r\\n        } else {\\r\\n            // Effects\\r\\n            pendingOwner = newOwner;\\r\\n        }\\r\\n    }\\r\\n\\r\\n    // F1 - F9: OK\\r\\n    // C1 - C21: OK\\r\\n    function claimOwnership() public {\\r\\n        address _pendingOwner = pendingOwner;\\r\\n        \\r\\n        // Checks\\r\\n        require(msg.sender == _pendingOwner, \\\"Ownable: caller != pending owner\\\");\\r\\n\\r\\n        // Effects\\r\\n        emit OwnershipTransferred(owner, _pendingOwner);\\r\\n        owner = _pendingOwner;\\r\\n        pendingOwner = address(0);\\r\\n    }\\r\\n\\r\\n    // M1 - M5: OK\\r\\n    // C1 - C21: OK\\r\\n    modifier onlyOwner() {\\r\\n        require(msg.sender == owner, \\\"Ownable: caller is not the owner\\\");\\r\\n        _;\\r\\n    }\\r\\n}\",\"keccak256\":\"0xfafb586b248c1c697227f5745397562cfe5be2f04e19fb80fc79fc94e3afaba1\",\"license\":\"MIT\"},\"@boringcrypto/boring-solidity/contracts/interfaces/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity 0.6.12;\\r\\n\\r\\ninterface IERC20 {\\r\\n    function totalSupply() external view returns (uint256);\\r\\n    function balanceOf(address account) external view returns (uint256);\\r\\n    function allowance(address owner, address spender) external view returns (uint256);\\r\\n    function approve(address spender, uint256 amount) external returns (bool);\\r\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\r\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\r\\n\\r\\n    // EIP 2612\\r\\n    function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;\\r\\n}\",\"keccak256\":\"0x8004f86e4536cca55b8eeb2621fe18e1ee57d779396ddef50bce5bf70fb59867\",\"license\":\"MIT\"},\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\r\\npragma solidity 0.6.12;\\r\\n\\r\\nimport \\\"../interfaces/IERC20.sol\\\";\\r\\n\\r\\nlibrary BoringERC20 {\\r\\n    function safeSymbol(IERC20 token) internal view returns(string memory) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x95d89b41));\\r\\n        return success && data.length > 0 ? abi.decode(data, (string)) : \\\"???\\\";\\r\\n    }\\r\\n\\r\\n    function safeName(IERC20 token) internal view returns(string memory) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x06fdde03));\\r\\n        return success && data.length > 0 ? abi.decode(data, (string)) : \\\"???\\\";\\r\\n    }\\r\\n\\r\\n    function safeDecimals(IERC20 token) internal view returns (uint8) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x313ce567));\\r\\n        return success && data.length == 32 ? abi.decode(data, (uint8)) : 18;\\r\\n    }\\r\\n\\r\\n    function safeTransfer(IERC20 token, address to, uint256 amount) internal {\\r\\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0xa9059cbb, to, amount));\\r\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"BoringERC20: Transfer failed\\\");\\r\\n    }\\r\\n\\r\\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 amount) internal {\\r\\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0x23b872dd, from, to, amount));\\r\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"BoringERC20: TransferFrom failed\\\");\\r\\n    }\\r\\n}\",\"keccak256\":\"0x69f1ccf716991e5d6d64dc0e3bc3828fd1990bc18400d680b1aa1960675daaaa\",\"license\":\"UNLICENSED\"},\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity 0.6.12;\\r\\n// a library for performing overflow-safe math, updated with awesomeness from of DappHub (https://github.com/dapphub/ds-math)\\r\\nlibrary BoringMath {\\r\\n    function add(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {require(b == 0 || (c = a * b)/b == a, \\\"BoringMath: Mul Overflow\\\");}\\r\\n    function to128(uint256 a) internal pure returns (uint128 c) {\\r\\n        require(a <= uint128(-1), \\\"BoringMath: uint128 Overflow\\\");\\r\\n        c = uint128(a);\\r\\n    }\\r\\n    function to64(uint256 a) internal pure returns (uint64 c) {\\r\\n        require(a <= uint64(-1), \\\"BoringMath: uint64 Overflow\\\");\\r\\n        c = uint64(a);\\r\\n    }\\r\\n    function to32(uint256 a) internal pure returns (uint32 c) {\\r\\n        require(a <= uint32(-1), \\\"BoringMath: uint32 Overflow\\\");\\r\\n        c = uint32(a);\\r\\n    }\\r\\n}\\r\\n\\r\\nlibrary BoringMath128 {\\r\\n    function add(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\\r\\n\\r\\nlibrary BoringMath64 {\\r\\n    function add(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\\r\\n\\r\\nlibrary BoringMath32 {\\r\\n    function add(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\",\"keccak256\":\"0x2d0e99483c5618251d4b52e8551918253bf044c63e0d09a2f1f652671f9ff762\",\"license\":\"MIT\"},\"contracts/GoldMinerV2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.6.12;\\npragma experimental ABIEncoderV2;\\n\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\\\";\\nimport \\\"@boringcrypto/boring-solidity/contracts/BoringBatchable.sol\\\";\\nimport \\\"@boringcrypto/boring-solidity/contracts/BoringOwnable.sol\\\";\\nimport \\\"./libraries/SignedSafeMath.sol\\\";\\nimport \\\"./interfaces/IRewarder.sol\\\";\\nimport \\\"./interfaces/IGoldMiner.sol\\\";\\n\\ninterface IMigratorMiner {\\n    // Take the current LP token address and return the new LP token address.\\n    // Migrator should have full access to the caller's LP token.\\n    function migrate(IERC20 token) external returns (IERC20);\\n}\\n\\n/// @notice The (older) GoldMiner contract gives out a constant number of GOLN tokens per block.\\n/// It is the only address with minting rights for GOLN.\\n/// The idea for this GoldMiner V2 (MCV2) contract is therefore to be the owner of a dummy token\\n/// that is deposited into the GoldMiner V1 (MCV1) contract.\\n/// The allocation point for this pool on MCV1 is the total allocation point for all pools that receive double incentives.\\ncontract GoldMinerV2 is BoringOwnable, BoringBatchable {\\n    using BoringMath for uint256;\\n    using BoringMath128 for uint128;\\n    using BoringERC20 for IERC20;\\n    using SignedSafeMath for int256;\\n\\n    /// @notice Info of each MCV2 user.\\n    /// `amount` LP token amount the user has provided.\\n    /// `rewardDebt` The amount of GOLN entitled to the user.\\n    struct UserInfo {\\n        uint256 amount;\\n        int256 rewardDebt;\\n    }\\n\\n    /// @notice Info of each MCV2 pool.\\n    /// `allocPoint` The amount of allocation points assigned to the pool.\\n    /// Also known as the amount of GOLN to distribute per block.\\n    struct PoolInfo {\\n        uint128 accGoldNuggetPerShare;\\n        uint64 lastRewardBlock;\\n        uint64 allocPoint;\\n    }\\n\\n    /// @notice Address of MCV1 contract.\\n    IGoldMiner public immutable GOLD_MINER;\\n    /// @notice Address of GOLN contract.\\n    IERC20 public immutable GOLN;\\n    /// @notice The index of MCV2 master pool in MCV1.\\n    uint256 public immutable GOLD_PID;\\n    // @notice The migrator contract. It has a lot of power. Can only be set through governance (owner).\\n    IMigratorMiner public migrator;\\n\\n    /// @notice Info of each MCV2 pool.\\n    PoolInfo[] public poolInfo;\\n    /// @notice Address of the LP token for each MCV2 pool.\\n    IERC20[] public lpToken;\\n    /// @notice Address of each `IRewarder` contract in MCV2.\\n    IRewarder[] public rewarder;\\n\\n    /// @notice Info of each user that stakes LP tokens.\\n    mapping (uint256 => mapping (address => UserInfo)) public userInfo;\\n    /// @dev Total allocation points. Must be the sum of all allocation points in all pools.\\n    uint256 public totalAllocPoint;\\n\\n    uint256 private constant GOLDMINER_GOLN_PER_BLOCK = 1e20;\\n    uint256 private constant ACC_GOLN_PRECISION = 1e12;\\n\\n    event Deposit(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\\n    event Withdraw(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\\n    event EmergencyWithdraw(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\\n    event Harvest(address indexed user, uint256 indexed pid, uint256 amount);\\n    event LogPoolAddition(uint256 indexed pid, uint256 allocPoint, IERC20 indexed lpToken, IRewarder indexed rewarder);\\n    event LogSetPool(uint256 indexed pid, uint256 allocPoint, IRewarder indexed rewarder, bool overwrite);\\n    event LogUpdatePool(uint256 indexed pid, uint64 lastRewardBlock, uint256 lpSupply, uint256 accGoldNuggetPerShare);\\n    event LogInit();\\n\\n    /// @param _GOLD_MINER The LuckySwap MCV1 contract address.\\n    /// @param _goldnugget The GOLN token contract address.\\n    /// @param _GOLD_PID The pool ID of the dummy token on the base MCV1 contract.\\n    constructor(IGoldMiner _GOLD_MINER, IERC20 _goldnugget, uint256 _GOLD_PID) public {\\n        GOLD_MINER = _GOLD_MINER;\\n        GOLN = _goldnugget;\\n        GOLD_PID = _GOLD_PID;\\n    }\\n\\n    /// @notice Deposits a dummy token to `GOLD_MINER` MCV1. This is required because MCV1 holds the minting rights for GOLN.\\n    /// Any balance of transaction sender in `dummyToken` is transferred.\\n    /// The allocation point for the pool on MCV1 is the total allocation point for all pools that receive double incentives.\\n    /// @param dummyToken The address of the ERC-20 token to deposit into MCV1.\\n    function init(IERC20 dummyToken) external {\\n        uint256 balance = dummyToken.balanceOf(msg.sender);\\n        require(balance != 0, \\\"GoldMinerV2: Balance must exceed 0\\\");\\n        dummyToken.safeTransferFrom(msg.sender, address(this), balance);\\n        dummyToken.approve(address(GOLD_MINER), balance);\\n        GOLD_MINER.deposit(GOLD_PID, balance);\\n        emit LogInit();\\n    }\\n\\n    /// @notice Returns the number of MCV2 pools.\\n    function poolLength() public view returns (uint256 pools) {\\n        pools = poolInfo.length;\\n    }\\n\\n    /// @notice Add a new LP to the pool. Can only be called by the owner.\\n    /// DO NOT add the same LP token more than once. Rewards will be messed up if you do.\\n    /// @param allocPoint AP of the new pool.\\n    /// @param _lpToken Address of the LP ERC-20 token.\\n    /// @param _rewarder Address of the rewarder delegate.\\n    function add(uint256 allocPoint, IERC20 _lpToken, IRewarder _rewarder) public onlyOwner {\\n        uint256 lastRewardBlock = block.number;\\n        totalAllocPoint = totalAllocPoint.add(allocPoint);\\n        lpToken.push(_lpToken);\\n        rewarder.push(_rewarder);\\n\\n        poolInfo.push(PoolInfo({\\n            allocPoint: allocPoint.to64(),\\n            lastRewardBlock: lastRewardBlock.to64(),\\n            accGoldNuggetPerShare: 0\\n        }));\\n        emit LogPoolAddition(lpToken.length.sub(1), allocPoint, _lpToken, _rewarder);\\n    }\\n\\n    /// @notice Update the given pool's GOLN allocation point and `IRewarder` contract. Can only be called by the owner.\\n    /// @param _pid The index of the pool. See `poolInfo`.\\n    /// @param _allocPoint New AP of the pool.\\n    /// @param _rewarder Address of the rewarder delegate.\\n    /// @param overwrite True if _rewarder should be `set`. Otherwise `_rewarder` is ignored.\\n    function set(uint256 _pid, uint256 _allocPoint, IRewarder _rewarder, bool overwrite) public onlyOwner {\\n        totalAllocPoint = totalAllocPoint.sub(poolInfo[_pid].allocPoint).add(_allocPoint);\\n        poolInfo[_pid].allocPoint = _allocPoint.to64();\\n        if (overwrite) { rewarder[_pid] = _rewarder; }\\n        emit LogSetPool(_pid, _allocPoint, overwrite ? _rewarder : rewarder[_pid], overwrite);\\n    }\\n\\n    /// @notice Set the `migrator` contract. Can only be called by the owner.\\n    /// @param _migrator The contract address to set.\\n    function setMigrator(IMigratorMiner _migrator) public onlyOwner {\\n        migrator = _migrator;\\n    }\\n\\n    /// @notice Migrate LP token to another LP contract through the `migrator` contract.\\n    /// @param _pid The index of the pool. See `poolInfo`.\\n    function migrate(uint256 _pid) public {\\n        require(address(migrator) != address(0), \\\"GoldMinerV2: no migrator set\\\");\\n        IERC20 _lpToken = lpToken[_pid];\\n        uint256 bal = _lpToken.balanceOf(address(this));\\n        _lpToken.approve(address(migrator), bal);\\n        IERC20 newLpToken = migrator.migrate(_lpToken);\\n        require(bal == newLpToken.balanceOf(address(this)), \\\"GoldMinerV2: migrated balance must match\\\");\\n        lpToken[_pid] = newLpToken;\\n    }\\n\\n    /// @notice View function to see pending GOLN on frontend.\\n    /// @param _pid The index of the pool. See `poolInfo`.\\n    /// @param _user Address of user.\\n    /// @return pending GOLN reward for a given user.\\n    function pendingGoldNugget(uint256 _pid, address _user) external view returns (uint256 pending) {\\n        PoolInfo memory pool = poolInfo[_pid];\\n        UserInfo storage user = userInfo[_pid][_user];\\n        uint256 accGoldNuggetPerShare = pool.accGoldNuggetPerShare;\\n        uint256 lpSupply = lpToken[_pid].balanceOf(address(this));\\n        if (block.number > pool.lastRewardBlock && lpSupply != 0) {\\n            uint256 blocks = block.number.sub(pool.lastRewardBlock);\\n            uint256 goldnuggetReward = blocks.mul(goldnuggetPerBlock()).mul(pool.allocPoint) / totalAllocPoint;\\n            accGoldNuggetPerShare = accGoldNuggetPerShare.add(goldnuggetReward.mul(ACC_GOLN_PRECISION) / lpSupply);\\n        }\\n        pending = int256(user.amount.mul(accGoldNuggetPerShare) / ACC_GOLN_PRECISION).sub(user.rewardDebt).toUInt256();\\n    }\\n\\n    /// @notice Update reward variables for all pools. Be careful of gas spending!\\n    /// @param pids Pool IDs of all to be updated. Make sure to update all active pools.\\n    function massUpdatePools(uint256[] calldata pids) external {\\n        uint256 len = pids.length;\\n        for (uint256 i = 0; i < len; ++i) {\\n            updatePool(pids[i]);\\n        }\\n    }\\n\\n    /// @notice Calculates and returns the `amount` of GOLN per block.\\n    function goldnuggetPerBlock() public view returns (uint256 amount) {\\n        amount = uint256(GOLDMINER_GOLN_PER_BLOCK)\\n            .mul(GOLD_MINER.poolInfo(GOLD_PID).allocPoint) / GOLD_MINER.totalAllocPoint();\\n    }\\n\\n    /// @notice Update reward variables of the given pool.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @return pool Returns the pool that was updated.\\n    function updatePool(uint256 pid) public returns (PoolInfo memory pool) {\\n        pool = poolInfo[pid];\\n        if (block.number > pool.lastRewardBlock) {\\n            uint256 lpSupply = lpToken[pid].balanceOf(address(this));\\n            if (lpSupply > 0) {\\n                uint256 blocks = block.number.sub(pool.lastRewardBlock);\\n                uint256 goldnuggetReward = blocks.mul(goldnuggetPerBlock()).mul(pool.allocPoint) / totalAllocPoint;\\n                pool.accGoldNuggetPerShare = pool.accGoldNuggetPerShare.add((goldnuggetReward.mul(ACC_GOLN_PRECISION) / lpSupply).to128());\\n            }\\n            pool.lastRewardBlock = block.number.to64();\\n            poolInfo[pid] = pool;\\n            emit LogUpdatePool(pid, pool.lastRewardBlock, lpSupply, pool.accGoldNuggetPerShare);\\n        }\\n    }\\n\\n    /// @notice Deposit LP tokens to MCV2 for GOLN allocation.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param amount LP token amount to deposit.\\n    /// @param to The receiver of `amount` deposit benefit.\\n    function deposit(uint256 pid, uint256 amount, address to) public {\\n        PoolInfo memory pool = updatePool(pid);\\n        UserInfo storage user = userInfo[pid][to];\\n\\n        // Effects\\n        user.amount = user.amount.add(amount);\\n        user.rewardDebt = user.rewardDebt.add(int256(amount.mul(pool.accGoldNuggetPerShare) / ACC_GOLN_PRECISION));\\n\\n        // Interactions\\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onGoldNuggetReward(pid, to, to, 0, user.amount);\\n        }\\n\\n        lpToken[pid].safeTransferFrom(msg.sender, address(this), amount);\\n\\n        emit Deposit(msg.sender, pid, amount, to);\\n    }\\n\\n    /// @notice Withdraw LP tokens from MCV2.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param amount LP token amount to withdraw.\\n    /// @param to Receiver of the LP tokens.\\n    function withdraw(uint256 pid, uint256 amount, address to) public {\\n        PoolInfo memory pool = updatePool(pid);\\n        UserInfo storage user = userInfo[pid][msg.sender];\\n\\n        // Effects\\n        user.rewardDebt = user.rewardDebt.sub(int256(amount.mul(pool.accGoldNuggetPerShare) / ACC_GOLN_PRECISION));\\n        user.amount = user.amount.sub(amount);\\n\\n        // Interactions\\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onGoldNuggetReward(pid, msg.sender, to, 0, user.amount);\\n        }\\n\\n        lpToken[pid].safeTransfer(to, amount);\\n\\n        emit Withdraw(msg.sender, pid, amount, to);\\n    }\\n\\n    /// @notice Harvest proceeds for transaction sender to `to`.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param to Receiver of GOLN rewards.\\n    function harvest(uint256 pid, address to) public {\\n        PoolInfo memory pool = updatePool(pid);\\n        UserInfo storage user = userInfo[pid][msg.sender];\\n        int256 accumulatedGoldNugget = int256(user.amount.mul(pool.accGoldNuggetPerShare) / ACC_GOLN_PRECISION);\\n        uint256 _pendingGoldNugget = accumulatedGoldNugget.sub(user.rewardDebt).toUInt256();\\n\\n        // Effects\\n        user.rewardDebt = accumulatedGoldNugget;\\n\\n        // Interactions\\n        if (_pendingGoldNugget != 0) {\\n            GOLN.safeTransfer(to, _pendingGoldNugget);\\n        }\\n\\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onGoldNuggetReward( pid, msg.sender, to, _pendingGoldNugget, user.amount);\\n        }\\n\\n        emit Harvest(msg.sender, pid, _pendingGoldNugget);\\n    }\\n\\n    /// @notice Withdraw LP tokens from MCV2 and harvest proceeds for transaction sender to `to`.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param amount LP token amount to withdraw.\\n    /// @param to Receiver of the LP tokens and GOLN rewards.\\n    function withdrawAndHarvest(uint256 pid, uint256 amount, address to) public {\\n        PoolInfo memory pool = updatePool(pid);\\n        UserInfo storage user = userInfo[pid][msg.sender];\\n        int256 accumulatedGoldNugget = int256(user.amount.mul(pool.accGoldNuggetPerShare) / ACC_GOLN_PRECISION);\\n        uint256 _pendingGoldNugget = accumulatedGoldNugget.sub(user.rewardDebt).toUInt256();\\n\\n        // Effects\\n        user.rewardDebt = accumulatedGoldNugget.sub(int256(amount.mul(pool.accGoldNuggetPerShare) / ACC_GOLN_PRECISION));\\n        user.amount = user.amount.sub(amount);\\n\\n        // Interactions\\n        GOLN.safeTransfer(to, _pendingGoldNugget);\\n\\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onGoldNuggetReward(pid, msg.sender, to, _pendingGoldNugget, user.amount);\\n        }\\n\\n        lpToken[pid].safeTransfer(to, amount);\\n\\n        emit Withdraw(msg.sender, pid, amount, to);\\n        emit Harvest(msg.sender, pid, _pendingGoldNugget);\\n    }\\n\\n    /// @notice Harvests GOLN from `GOLD_MINER` MCV1 and pool `GOLD_PID` to this MCV2 contract.\\n    function harvestFromGoldMiner() public {\\n        GOLD_MINER.deposit(GOLD_PID, 0);\\n    }\\n\\n    /// @notice Withdraw without caring about rewards. EMERGENCY ONLY.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @param to Receiver of the LP tokens.\\n    function emergencyWithdraw(uint256 pid, address to) public {\\n        UserInfo storage user = userInfo[pid][msg.sender];\\n        uint256 amount = user.amount;\\n        user.amount = 0;\\n        user.rewardDebt = 0;\\n\\n        IRewarder _rewarder = rewarder[pid];\\n        if (address(_rewarder) != address(0)) {\\n            _rewarder.onGoldNuggetReward(pid, msg.sender, to, 0, 0);\\n        }\\n\\n        // Note: transfer can fail or succeed if `amount` is zero.\\n        lpToken[pid].safeTransfer(to, amount);\\n        emit EmergencyWithdraw(msg.sender, pid, amount, to);\\n    }\\n}\\n\",\"keccak256\":\"0xfc23639df5c42593066a6bce649c0e034e5f35289c903ad4d854798807c4914a\",\"license\":\"MIT\"},\"contracts/interfaces/IGoldMiner.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity 0.6.12;\\npragma experimental ABIEncoderV2;\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\\\";\\n\\ninterface IGoldMiner {\\n    using BoringERC20 for IERC20;\\n    struct UserInfo {\\n        uint256 amount;     // How many LP tokens the user has provided.\\n        uint256 rewardDebt; // Reward debt. See explanation below.\\n    }\\n\\n    struct PoolInfo {\\n        IERC20 lpToken;           // Address of LP token contract.\\n        uint256 allocPoint;       // How many allocation points assigned to this pool. GOLN to distribute per block.\\n        uint256 lastRewardBlock;  // Last block number that GOLN distribution occurs.\\n        uint256 accGoldNuggetPerShare; // Accumulated GOLN per share, times 1e12. See below.\\n    }\\n\\n    function poolInfo(uint256 pid) external view returns (IGoldMiner.PoolInfo memory);\\n    function totalAllocPoint() external view returns (uint256);\\n    function deposit(uint256 _pid, uint256 _amount) external;\\n}\\n\",\"keccak256\":\"0xe6ba2f319be5134738042eb6e1e104324752729a4582177ef88350856b4a7280\",\"license\":\"MIT\"},\"contracts/interfaces/IRewarder.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.6.12;\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\\\";\\ninterface IRewarder {\\n    using BoringERC20 for IERC20;\\n    function onGoldNuggetReward(uint256 pid, address user, address recipient, uint256 goldnuggetAmount, uint256 newLpAmount) external;\\n    function pendingTokens(uint256 pid, address user, uint256 goldnuggetAmount) external view returns (IERC20[] memory, uint256[] memory);\\n}\\n\",\"keccak256\":\"0x92579e172bd0f29fd768cf7c6ccd1a8a74204d8bac7d7ae95538370d1265ac5c\",\"license\":\"MIT\"},\"contracts/libraries/SignedSafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.6.12;\\n\\nlibrary SignedSafeMath {\\n    int256 constant private _INT256_MIN = -2**255;\\n\\n    /**\\n     * @dev Returns the multiplication of two signed integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `*` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Multiplication cannot overflow.\\n     */\\n    function mul(int256 a, int256 b) internal pure returns (int256) {\\n        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\\n        // benefit is lost if 'b' is also tested.\\n        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\\n        if (a == 0) {\\n            return 0;\\n        }\\n\\n        require(!(a == -1 && b == _INT256_MIN), \\\"SignedSafeMath: multiplication overflow\\\");\\n\\n        int256 c = a * b;\\n        require(c / a == b, \\\"SignedSafeMath: multiplication overflow\\\");\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Returns the integer division of two signed integers. Reverts on\\n     * division by zero. The result is rounded towards zero.\\n     *\\n     * Counterpart to Solidity's `/` operator. Note: this function uses a\\n     * `revert` opcode (which leaves remaining gas untouched) while Solidity\\n     * uses an invalid opcode to revert (consuming all remaining gas).\\n     *\\n     * Requirements:\\n     *\\n     * - The divisor cannot be zero.\\n     */\\n    function div(int256 a, int256 b) internal pure returns (int256) {\\n        require(b != 0, \\\"SignedSafeMath: division by zero\\\");\\n        require(!(b == -1 && a == _INT256_MIN), \\\"SignedSafeMath: division overflow\\\");\\n\\n        int256 c = a / b;\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Returns the subtraction of two signed integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `-` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Subtraction cannot overflow.\\n     */\\n    function sub(int256 a, int256 b) internal pure returns (int256) {\\n        int256 c = a - b;\\n        require((b >= 0 && c <= a) || (b < 0 && c > a), \\\"SignedSafeMath: subtraction overflow\\\");\\n\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Returns the addition of two signed integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `+` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Addition cannot overflow.\\n     */\\n    function add(int256 a, int256 b) internal pure returns (int256) {\\n        int256 c = a + b;\\n        require((b >= 0 && c >= a) || (b < 0 && c < a), \\\"SignedSafeMath: addition overflow\\\");\\n\\n        return c;\\n    }\\n\\n    function toUInt256(int256 a) internal pure returns (uint256) {\\n        require(a >= 0, \\\"Integer < 0\\\");\\n        return uint256(a);\\n    }\\n}\",\"keccak256\":\"0x4991beb21b224dfcdc3d251e0a60fdc304d4f6b699b2c35d08f3974e5b84c86a\",\"license\":\"MIT\"},\"contracts/mocks/ComplexRewarderTime.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.6.12;\\npragma experimental ABIEncoderV2;\\nimport \\\"../interfaces/IRewarder.sol\\\";\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\\\";\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\\\";\\nimport \\\"@boringcrypto/boring-solidity/contracts/BoringOwnable.sol\\\";\\nimport \\\"../GoldMinerV2.sol\\\";\\n\\n/// @author @0xKeno\\ncontract ComplexRewarderTime is IRewarder,  BoringOwnable{\\n    using BoringMath for uint256;\\n    using BoringMath128 for uint128;\\n    using BoringERC20 for IERC20;\\n\\n    IERC20 private immutable rewardToken;\\n\\n    /// @notice Info of each MCV2 user.\\n    /// `amount` LP token amount the user has provided.\\n    /// `rewardDebt` The amount of GOLN entitled to the user.\\n    struct UserInfo {\\n        uint256 amount;\\n        uint256 rewardDebt;\\n    }\\n\\n    /// @notice Info of each MCV2 pool.\\n    /// `allocPoint` The amount of allocation points assigned to the pool.\\n    /// Also known as the amount of GOLN to distribute per block.\\n    struct PoolInfo {\\n        uint128 accGoldNuggetPerShare;\\n        uint64 lastRewardTime;\\n        uint64 allocPoint;\\n    }\\n\\n    /// @notice Info of each pool.\\n    mapping (uint256 => PoolInfo) public poolInfo;\\n\\n    uint256[] public poolIds;\\n\\n    /// @notice Info of each user that stakes LP tokens.\\n    mapping (uint256 => mapping (address => UserInfo)) public userInfo;\\n    /// @dev Total allocation points. Must be the sum of all allocation points in all pools.\\n    uint256 totalAllocPoint;\\n\\n    uint256 public rewardPerSecond;\\n    uint256 private constant ACC_TOKEN_PRECISION = 1e12;\\n\\n    address private immutable GOLDMINER_V2;\\n\\n    event LogOnReward(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\\n    event LogPoolAddition(uint256 indexed pid, uint256 allocPoint);\\n    event LogSetPool(uint256 indexed pid, uint256 allocPoint);\\n    event LogUpdatePool(uint256 indexed pid, uint64 lastRewardTime, uint256 lpSupply, uint256 accGoldNuggetPerShare);\\n    event LogRewardPerSecond(uint256 rewardPerSecond);\\n    event LogInit();\\n\\n    constructor (IERC20 _rewardToken, uint256 _rewardPerSecond, address _GOLDMINER_V2) public {\\n        rewardToken = _rewardToken;\\n        rewardPerSecond = _rewardPerSecond;\\n        GOLDMINER_V2 = _GOLDMINER_V2;\\n    }\\n\\n\\n    function onGoldNuggetReward (uint256 pid, address _user, address to, uint256, uint256 lpToken) onlyMCV2 override external {\\n        PoolInfo memory pool = updatePool(pid);\\n        UserInfo storage user = userInfo[pid][_user];\\n        uint256 pending;\\n        if (user.amount > 0) {\\n            pending =\\n                (user.amount.mul(pool.accGoldNuggetPerShare) / ACC_TOKEN_PRECISION).sub(\\n                    user.rewardDebt\\n                );\\n            rewardToken.safeTransfer(to, pending);\\n        }\\n        user.amount = lpToken;\\n        user.rewardDebt = lpToken.mul(pool.accGoldNuggetPerShare) / ACC_TOKEN_PRECISION;\\n        emit LogOnReward(_user, pid, pending, to);\\n    }\\n    \\n    function pendingTokens(uint256 pid, address user, uint256) override external view returns (IERC20[] memory rewardTokens, uint256[] memory rewardAmounts) {\\n        IERC20[] memory _rewardTokens = new IERC20[](1);\\n        _rewardTokens[0] = (rewardToken);\\n        uint256[] memory _rewardAmounts = new uint256[](1);\\n        _rewardAmounts[0] = pendingToken(pid, user);\\n        return (_rewardTokens, _rewardAmounts);\\n    }\\n\\n    /// @notice Sets the goldnugget per second to be distributed. Can only be called by the owner.\\n    /// @param _rewardPerSecond The amount of GoldNugget to be distributed per second.\\n    function setRewardPerSecond(uint256 _rewardPerSecond) public onlyOwner {\\n        rewardPerSecond = _rewardPerSecond;\\n        emit LogRewardPerSecond(_rewardPerSecond);\\n    }\\n\\n    modifier onlyMCV2 {\\n        require(\\n            msg.sender == GOLDMINER_V2,\\n            \\\"Only MCV2 can call this function.\\\"\\n        );\\n        _;\\n    }\\n\\n    /// @notice Returns the number of MCV2 pools.\\n    function poolLength() public view returns (uint256 pools) {\\n        pools = poolIds.length;\\n    }\\n\\n    /// @notice Add a new LP to the pool. Can only be called by the owner.\\n    /// DO NOT add the same LP token more than once. Rewards will be messed up if you do.\\n    /// @param allocPoint AP of the new pool.\\n    /// @param _pid Pid on MCV2\\n    function add(uint256 allocPoint, uint256 _pid) public onlyOwner {\\n        require(poolInfo[_pid].lastRewardTime == 0, \\\"Pool already exists\\\");\\n        uint256 lastRewardTime = block.timestamp;\\n        totalAllocPoint = totalAllocPoint.add(allocPoint);\\n\\n        poolInfo[_pid] = PoolInfo({\\n            allocPoint: allocPoint.to64(),\\n            lastRewardTime: lastRewardTime.to64(),\\n            accGoldNuggetPerShare: 0\\n        });\\n        poolIds.push(_pid);\\n        emit LogPoolAddition(_pid, allocPoint);\\n    }\\n\\n    /// @notice Update the given pool's GOLN allocation point and `IRewarder` contract. Can only be called by the owner.\\n    /// @param _pid The index of the pool. See `poolInfo`.\\n    /// @param _allocPoint New AP of the pool.\\n    function set(uint256 _pid, uint256 _allocPoint) public onlyOwner {\\n        totalAllocPoint = totalAllocPoint.sub(poolInfo[_pid].allocPoint).add(_allocPoint);\\n        poolInfo[_pid].allocPoint = _allocPoint.to64();\\n        emit LogSetPool(_pid, _allocPoint);\\n    }\\n\\n    /// @notice View function to see pending Token\\n    /// @param _pid The index of the pool. See `poolInfo`.\\n    /// @param _user Address of user.\\n    /// @return pending GOLN reward for a given user.\\n    function pendingToken(uint256 _pid, address _user) public view returns (uint256 pending) {\\n        PoolInfo memory pool = poolInfo[_pid];\\n        UserInfo storage user = userInfo[_pid][_user];\\n        uint256 accGoldNuggetPerShare = pool.accGoldNuggetPerShare;\\n        uint256 lpSupply = GoldMinerV2(GOLDMINER_V2).lpToken(_pid).balanceOf(GOLDMINER_V2);\\n        if (block.timestamp > pool.lastRewardTime && lpSupply != 0) {\\n            uint256 time = block.timestamp.sub(pool.lastRewardTime);\\n            uint256 goldnuggetReward = time.mul(rewardPerSecond).mul(pool.allocPoint) / totalAllocPoint;\\n            accGoldNuggetPerShare = accGoldNuggetPerShare.add(goldnuggetReward.mul(ACC_TOKEN_PRECISION) / lpSupply);\\n        }\\n        pending = (user.amount.mul(accGoldNuggetPerShare) / ACC_TOKEN_PRECISION).sub(user.rewardDebt);\\n    }\\n\\n    /// @notice Update reward variables for all pools. Be careful of gas spending!\\n    /// @param pids Pool IDs of all to be updated. Make sure to update all active pools.\\n    function massUpdatePools(uint256[] calldata pids) external {\\n        uint256 len = pids.length;\\n        for (uint256 i = 0; i < len; ++i) {\\n            updatePool(pids[i]);\\n        }\\n    }\\n\\n    /// @notice Update reward variables of the given pool.\\n    /// @param pid The index of the pool. See `poolInfo`.\\n    /// @return pool Returns the pool that was updated.\\n    function updatePool(uint256 pid) public returns (PoolInfo memory pool) {\\n        pool = poolInfo[pid];\\n        if (block.timestamp > pool.lastRewardTime) {\\n            uint256 lpSupply = GoldMinerV2(GOLDMINER_V2).lpToken(pid).balanceOf(GOLDMINER_V2);\\n\\n            if (lpSupply > 0) {\\n                uint256 time = block.timestamp.sub(pool.lastRewardTime);\\n                uint256 goldnuggetReward = time.mul(rewardPerSecond).mul(pool.allocPoint) / totalAllocPoint;\\n                pool.accGoldNuggetPerShare = pool.accGoldNuggetPerShare.add((goldnuggetReward.mul(ACC_TOKEN_PRECISION) / lpSupply).to128());\\n            }\\n            pool.lastRewardTime = block.timestamp.to64();\\n            poolInfo[pid] = pool;\\n            emit LogUpdatePool(pid, pool.lastRewardTime, lpSupply, pool.accGoldNuggetPerShare);\\n        }\\n    }\\n\\n}\\n\",\"keccak256\":\"0x4493378a26f66760a72553c8cd13eaaf3f4a1d98c4192a85da90194ccd7583d9\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 149,
                "contract": "contracts/mocks/ComplexRewarderTime.sol:ComplexRewarderTime",
                "label": "owner",
                "offset": 0,
                "slot": "0",
                "type": "t_address"
              },
              {
                "astId": 151,
                "contract": "contracts/mocks/ComplexRewarderTime.sol:ComplexRewarderTime",
                "label": "pendingOwner",
                "offset": 0,
                "slot": "1",
                "type": "t_address"
              },
              {
                "astId": 4187,
                "contract": "contracts/mocks/ComplexRewarderTime.sol:ComplexRewarderTime",
                "label": "poolInfo",
                "offset": 0,
                "slot": "2",
                "type": "t_mapping(t_uint256,t_struct(PoolInfo)4182_storage)"
              },
              {
                "astId": 4190,
                "contract": "contracts/mocks/ComplexRewarderTime.sol:ComplexRewarderTime",
                "label": "poolIds",
                "offset": 0,
                "slot": "3",
                "type": "t_array(t_uint256)dyn_storage"
              },
              {
                "astId": 4197,
                "contract": "contracts/mocks/ComplexRewarderTime.sol:ComplexRewarderTime",
                "label": "userInfo",
                "offset": 0,
                "slot": "4",
                "type": "t_mapping(t_uint256,t_mapping(t_address,t_struct(UserInfo)4175_storage))"
              },
              {
                "astId": 4200,
                "contract": "contracts/mocks/ComplexRewarderTime.sol:ComplexRewarderTime",
                "label": "totalAllocPoint",
                "offset": 0,
                "slot": "5",
                "type": "t_uint256"
              },
              {
                "astId": 4202,
                "contract": "contracts/mocks/ComplexRewarderTime.sol:ComplexRewarderTime",
                "label": "rewardPerSecond",
                "offset": 0,
                "slot": "6",
                "type": "t_uint256"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_array(t_uint256)dyn_storage": {
                "base": "t_uint256",
                "encoding": "dynamic_array",
                "label": "uint256[]",
                "numberOfBytes": "32"
              },
              "t_mapping(t_address,t_struct(UserInfo)4175_storage)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => struct ComplexRewarderTime.UserInfo)",
                "numberOfBytes": "32",
                "value": "t_struct(UserInfo)4175_storage"
              },
              "t_mapping(t_uint256,t_mapping(t_address,t_struct(UserInfo)4175_storage))": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => mapping(address => struct ComplexRewarderTime.UserInfo))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_address,t_struct(UserInfo)4175_storage)"
              },
              "t_mapping(t_uint256,t_struct(PoolInfo)4182_storage)": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => struct ComplexRewarderTime.PoolInfo)",
                "numberOfBytes": "32",
                "value": "t_struct(PoolInfo)4182_storage"
              },
              "t_struct(PoolInfo)4182_storage": {
                "encoding": "inplace",
                "label": "struct ComplexRewarderTime.PoolInfo",
                "members": [
                  {
                    "astId": 4177,
                    "contract": "contracts/mocks/ComplexRewarderTime.sol:ComplexRewarderTime",
                    "label": "accGoldNuggetPerShare",
                    "offset": 0,
                    "slot": "0",
                    "type": "t_uint128"
                  },
                  {
                    "astId": 4179,
                    "contract": "contracts/mocks/ComplexRewarderTime.sol:ComplexRewarderTime",
                    "label": "lastRewardTime",
                    "offset": 16,
                    "slot": "0",
                    "type": "t_uint64"
                  },
                  {
                    "astId": 4181,
                    "contract": "contracts/mocks/ComplexRewarderTime.sol:ComplexRewarderTime",
                    "label": "allocPoint",
                    "offset": 24,
                    "slot": "0",
                    "type": "t_uint64"
                  }
                ],
                "numberOfBytes": "32"
              },
              "t_struct(UserInfo)4175_storage": {
                "encoding": "inplace",
                "label": "struct ComplexRewarderTime.UserInfo",
                "members": [
                  {
                    "astId": 4172,
                    "contract": "contracts/mocks/ComplexRewarderTime.sol:ComplexRewarderTime",
                    "label": "amount",
                    "offset": 0,
                    "slot": "0",
                    "type": "t_uint256"
                  },
                  {
                    "astId": 4174,
                    "contract": "contracts/mocks/ComplexRewarderTime.sol:ComplexRewarderTime",
                    "label": "rewardDebt",
                    "offset": 0,
                    "slot": "1",
                    "type": "t_uint256"
                  }
                ],
                "numberOfBytes": "64"
              },
              "t_uint128": {
                "encoding": "inplace",
                "label": "uint128",
                "numberOfBytes": "16"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              },
              "t_uint64": {
                "encoding": "inplace",
                "label": "uint64",
                "numberOfBytes": "8"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "add(uint256,uint256)": {
                "notice": "Add a new LP to the pool. Can only be called by the owner. DO NOT add the same LP token more than once. Rewards will be messed up if you do."
              },
              "massUpdatePools(uint256[])": {
                "notice": "Update reward variables for all pools. Be careful of gas spending!"
              },
              "pendingToken(uint256,address)": {
                "notice": "View function to see pending Token"
              },
              "poolInfo(uint256)": {
                "notice": "Info of each pool."
              },
              "poolLength()": {
                "notice": "Returns the number of MCV2 pools."
              },
              "set(uint256,uint256)": {
                "notice": "Update the given pool's GOLN allocation point and `IRewarder` contract. Can only be called by the owner."
              },
              "setRewardPerSecond(uint256)": {
                "notice": "Sets the goldnugget per second to be distributed. Can only be called by the owner."
              },
              "updatePool(uint256)": {
                "notice": "Update reward variables of the given pool."
              },
              "userInfo(uint256,address)": {
                "notice": "Info of each user that stakes LP tokens."
              }
            },
            "version": 1
          }
        }
      },
      "contracts/mocks/RewarderBrokenMock.sol": {
        "RewarderBrokenMock": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "onGoldNuggetReward",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "goldnuggetAmount",
                  "type": "uint256"
                }
              ],
              "name": "pendingTokens",
              "outputs": [
                {
                  "internalType": "contract IERC20[]",
                  "name": "rewardTokens",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "rewardAmounts",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50610188806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063a3d833201461003b578063d63b3c491461007f575b600080fd5b61007d600480360360a081101561005157600080fd5b508035906001600160a01b03602082013581169160408101359091169060608101359060800135610036565b005b6100b16004803603606081101561009557600080fd5b508035906001600160a01b03602082013516906040013561014a565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156100f55781810151838201526020016100dd565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561013457818101518382015260200161011c565b5050505090500194505050505060405180910390f35b606080600080fdfea2646970667358221220ee83aab6344745a0b7201e55a8a1afb115e56c5004b70052cea80a5936be9ddf64736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x188 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA3D83320 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xD63B3C49 EQ PUSH2 0x7F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x36 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xB1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x14A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF5 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xDD JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x134 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x11C JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEE DUP4 0xAA 0xB6 CALLVALUE SELFBALANCE GASLIMIT LOG0 0xB7 KECCAK256 0x1E SSTORE 0xA8 LOG1 0xAF 0xB1 ISZERO 0xE5 PUSH13 0x5004B70052CEA80A5936BE9DDF PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "97:370:12:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100365760003560e01c8063a3d833201461003b578063d63b3c491461007f575b600080fd5b61007d600480360360a081101561005157600080fd5b508035906001600160a01b03602082013581169160408101359091169060608101359060800135610036565b005b6100b16004803603606081101561009557600080fd5b508035906001600160a01b03602082013516906040013561014a565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156100f55781810151838201526020016100dd565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561013457818101518382015260200161011c565b5050505090500194505050505060405180910390f35b606080600080fdfea2646970667358221220ee83aab6344745a0b7201e55a8a1afb115e56c5004b70052cea80a5936be9ddf64736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA3D83320 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xD63B3C49 EQ PUSH2 0x7F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x36 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xB1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x14A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF5 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xDD JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x134 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x11C JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEE DUP4 0xAA 0xB6 CALLVALUE SELFBALANCE GASLIMIT LOG0 0xB7 KECCAK256 0x1E SSTORE 0xA8 LOG1 0xAF 0xB1 ISZERO 0xE5 PUSH13 0x5004B70052CEA80A5936BE9DDF PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "97:370:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;145:117;;;;;;;;;;;;;;;;-1:-1:-1;145:117:12;;;-1:-1:-1;;;;;145:117:12;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;268:194;;;;;;;;;;;;;;;;-1:-1:-1;268:194:12;;;-1:-1:-1;;;;;268:194:12;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;376:28;406:30;447:8;;"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "78400",
                "executionCost": "129",
                "totalCost": "78529"
              },
              "external": {
                "onGoldNuggetReward(uint256,address,address,uint256,uint256)": "251",
                "pendingTokens(uint256,address,uint256)": "237"
              }
            },
            "methodIdentifiers": {
              "onGoldNuggetReward(uint256,address,address,uint256,uint256)": "a3d83320",
              "pendingTokens(uint256,address,uint256)": "d63b3c49"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"onGoldNuggetReward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"goldnuggetAmount\",\"type\":\"uint256\"}],\"name\":\"pendingTokens\",\"outputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"rewardTokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"rewardAmounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/mocks/RewarderBrokenMock.sol\":\"RewarderBrokenMock\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@boringcrypto/boring-solidity/contracts/interfaces/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity 0.6.12;\\r\\n\\r\\ninterface IERC20 {\\r\\n    function totalSupply() external view returns (uint256);\\r\\n    function balanceOf(address account) external view returns (uint256);\\r\\n    function allowance(address owner, address spender) external view returns (uint256);\\r\\n    function approve(address spender, uint256 amount) external returns (bool);\\r\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\r\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\r\\n\\r\\n    // EIP 2612\\r\\n    function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;\\r\\n}\",\"keccak256\":\"0x8004f86e4536cca55b8eeb2621fe18e1ee57d779396ddef50bce5bf70fb59867\",\"license\":\"MIT\"},\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\r\\npragma solidity 0.6.12;\\r\\n\\r\\nimport \\\"../interfaces/IERC20.sol\\\";\\r\\n\\r\\nlibrary BoringERC20 {\\r\\n    function safeSymbol(IERC20 token) internal view returns(string memory) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x95d89b41));\\r\\n        return success && data.length > 0 ? abi.decode(data, (string)) : \\\"???\\\";\\r\\n    }\\r\\n\\r\\n    function safeName(IERC20 token) internal view returns(string memory) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x06fdde03));\\r\\n        return success && data.length > 0 ? abi.decode(data, (string)) : \\\"???\\\";\\r\\n    }\\r\\n\\r\\n    function safeDecimals(IERC20 token) internal view returns (uint8) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x313ce567));\\r\\n        return success && data.length == 32 ? abi.decode(data, (uint8)) : 18;\\r\\n    }\\r\\n\\r\\n    function safeTransfer(IERC20 token, address to, uint256 amount) internal {\\r\\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0xa9059cbb, to, amount));\\r\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"BoringERC20: Transfer failed\\\");\\r\\n    }\\r\\n\\r\\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 amount) internal {\\r\\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0x23b872dd, from, to, amount));\\r\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"BoringERC20: TransferFrom failed\\\");\\r\\n    }\\r\\n}\",\"keccak256\":\"0x69f1ccf716991e5d6d64dc0e3bc3828fd1990bc18400d680b1aa1960675daaaa\",\"license\":\"UNLICENSED\"},\"contracts/interfaces/IRewarder.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.6.12;\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\\\";\\ninterface IRewarder {\\n    using BoringERC20 for IERC20;\\n    function onGoldNuggetReward(uint256 pid, address user, address recipient, uint256 goldnuggetAmount, uint256 newLpAmount) external;\\n    function pendingTokens(uint256 pid, address user, uint256 goldnuggetAmount) external view returns (IERC20[] memory, uint256[] memory);\\n}\\n\",\"keccak256\":\"0x92579e172bd0f29fd768cf7c6ccd1a8a74204d8bac7d7ae95538370d1265ac5c\",\"license\":\"MIT\"},\"contracts/mocks/RewarderBrokenMock.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.6.12;\\nimport \\\"../interfaces/IRewarder.sol\\\";\\n\\n\\ncontract RewarderBrokenMock is IRewarder {\\n\\n    function onGoldNuggetReward (uint256, address, address, uint256, uint256) override external {\\n        revert();\\n    }\\n\\n    function pendingTokens(uint256 pid, address user, uint256 goldnuggetAmount) override external view returns (IERC20[] memory rewardTokens, uint256[] memory rewardAmounts){\\n        revert();\\n    }\\n  \\n}\\n\",\"keccak256\":\"0x1a0363ee9e20357ee4577217fec7b8a8677add6e54a61a937688f1e7195fb11a\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/mocks/RewarderMock.sol": {
        "RewarderMock": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_rewardMultiplier",
                  "type": "uint256"
                },
                {
                  "internalType": "contract IERC20",
                  "name": "_rewardToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_GOLDMINER_V2",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "goldnuggetAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "onGoldNuggetReward",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "goldnuggetAmount",
                  "type": "uint256"
                }
              ],
              "name": "pendingTokens",
              "outputs": [
                {
                  "internalType": "contract IERC20[]",
                  "name": "rewardTokens",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "rewardAmounts",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60e060405234801561001057600080fd5b506040516106d43803806106d48339818101604052606081101561003357600080fd5b50805160208201516040909201516080919091526001600160601b0319606092831b811660a052911b1660c05260805160a05160601c60c05160601c61062e6100a6600039806101555250806101f452806102a252806102db52806103335250806101c252806103ab525061062e6000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063a3d833201461003b578063d63b3c491461007f575b600080fd5b61007d600480360360a081101561005157600080fd5b508035906001600160a01b0360208201358116916040810135909116906060810135906080013561014a565b005b6100b16004803603606081101561009557600080fd5b508035906001600160a01b03602082013516906040013561030b565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156100f55781810151838201526020016100dd565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561013457818101518382015260200161011c565b5050505090500194505050505060405180910390f35b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101b15760405162461bcd60e51b81526004018080602001828103825260218152602001806105d86021913960400191505060405180910390fd5b6000670de0b6b3a76400006101e6847f00000000000000000000000000000000000000000000000000000000000000006103fb565b816101ed57fe5b04905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561025f57600080fd5b505afa158015610273573d6000803e3d6000fd5b505050506040513d602081101561028957600080fd5b50519050808211156102ce576102c96001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016868361046d565b610302565b6103026001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016868461046d565b50505050505050565b60408051600180825281830190925260609182918291602080830190803683370190505090507f00000000000000000000000000000000000000000000000000000000000000008160008151811061035f57fe5b6001600160a01b039290921660209283029190910190910152604080516001808252818301909252606091816020016020820280368337019050509050670de0b6b3a76400006103cf867f00000000000000000000000000000000000000000000000000000000000000006103fb565b816103d657fe5b04816000815181106103e457fe5b602090810291909101015290969095509350505050565b60008115806104165750508082028282828161041357fe5b04145b610467576040805162461bcd60e51b815260206004820152601860248201527f426f72696e674d6174683a204d756c204f766572666c6f770000000000000000604482015290519081900360640190fd5b92915050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b602083106104ea5780518252601f1990920191602091820191016104cb565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461054c576040519150601f19603f3d011682016040523d82523d6000602084013e610551565b606091505b509150915081801561057f57508051158061057f575080806020019051602081101561057c57600080fd5b50515b6105d0576040805162461bcd60e51b815260206004820152601c60248201527f426f72696e6745524332303a205472616e73666572206661696c656400000000604482015290519081900360640190fd5b505050505056fe4f6e6c79204d4356322063616e2063616c6c20746869732066756e6374696f6e2ea2646970667358221220a93f97078bf9087e69bf07bca637f6588f61c512bfc679b1c0d30ff6e442d99464736f6c634300060c0033",
              "opcodes": "PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x6D4 CODESIZE SUB DUP1 PUSH2 0x6D4 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 SWAP1 SWAP3 ADD MLOAD PUSH1 0x80 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH1 0xA0 MSTORE SWAP2 SHL AND PUSH1 0xC0 MSTORE PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH2 0x62E PUSH2 0xA6 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x155 MSTORE POP DUP1 PUSH2 0x1F4 MSTORE DUP1 PUSH2 0x2A2 MSTORE DUP1 PUSH2 0x2DB MSTORE DUP1 PUSH2 0x333 MSTORE POP DUP1 PUSH2 0x1C2 MSTORE DUP1 PUSH2 0x3AB MSTORE POP PUSH2 0x62E PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA3D83320 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xD63B3C49 EQ PUSH2 0x7F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x14A JUMP JUMPDEST STOP JUMPDEST PUSH2 0xB1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x30B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF5 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xDD JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x134 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x11C JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x1B1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5D8 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1E6 DUP5 PUSH32 0x0 PUSH2 0x3FB JUMP JUMPDEST DUP2 PUSH2 0x1ED JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x25F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x273 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x289 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x2CE JUMPI PUSH2 0x2C9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP7 DUP4 PUSH2 0x46D JUMP JUMPDEST PUSH2 0x302 JUMP JUMPDEST PUSH2 0x302 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP7 DUP5 PUSH2 0x46D JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH32 0x0 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x35F JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH8 0xDE0B6B3A7640000 PUSH2 0x3CF DUP7 PUSH32 0x0 PUSH2 0x3FB JUMP JUMPDEST DUP2 PUSH2 0x3D6 JUMPI INVALID JUMPDEST DIV DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3E4 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0x416 JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0x413 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x467 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A204D756C204F766572666C6F770000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 SWAP4 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x4EA JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x4CB JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x54C JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x551 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x57F JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x57F JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x57C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x5D0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x426F72696E6745524332303A205472616E73666572206661696C656400000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP INVALID 0x4F PUSH15 0x6C79204D4356322063616E2063616C PUSH13 0x20746869732066756E6374696F PUSH15 0x2EA2646970667358221220A93F9707 DUP12 0xF9 ADDMOD PUSH31 0x69BF07BCA637F6588F61C512BFC679B1C0D30FF6E442D99464736F6C634300 MOD 0xC STOP CALLER ",
              "sourceMap": "248:1646:13:-:0;;;550:218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;550:218:13;;;;;;;;;;;651:36;;;;;-1:-1:-1;;;;;;550:218:13;697:26;;;;;;;733:28;;;;;248:1646;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {
                "4846": [
                  {
                    "length": 32,
                    "start": 450
                  },
                  {
                    "length": 32,
                    "start": 939
                  }
                ],
                "4848": [
                  {
                    "length": 32,
                    "start": 500
                  },
                  {
                    "length": 32,
                    "start": 674
                  },
                  {
                    "length": 32,
                    "start": 731
                  },
                  {
                    "length": 32,
                    "start": 819
                  }
                ],
                "4853": [
                  {
                    "length": 32,
                    "start": 341
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100365760003560e01c8063a3d833201461003b578063d63b3c491461007f575b600080fd5b61007d600480360360a081101561005157600080fd5b508035906001600160a01b0360208201358116916040810135909116906060810135906080013561014a565b005b6100b16004803603606081101561009557600080fd5b508035906001600160a01b03602082013516906040013561030b565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156100f55781810151838201526020016100dd565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561013457818101518382015260200161011c565b5050505090500194505050505060405180910390f35b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101b15760405162461bcd60e51b81526004018080602001828103825260218152602001806105d86021913960400191505060405180910390fd5b6000670de0b6b3a76400006101e6847f00000000000000000000000000000000000000000000000000000000000000006103fb565b816101ed57fe5b04905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561025f57600080fd5b505afa158015610273573d6000803e3d6000fd5b505050506040513d602081101561028957600080fd5b50519050808211156102ce576102c96001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016868361046d565b610302565b6103026001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016868461046d565b50505050505050565b60408051600180825281830190925260609182918291602080830190803683370190505090507f00000000000000000000000000000000000000000000000000000000000000008160008151811061035f57fe5b6001600160a01b039290921660209283029190910190910152604080516001808252818301909252606091816020016020820280368337019050509050670de0b6b3a76400006103cf867f00000000000000000000000000000000000000000000000000000000000000006103fb565b816103d657fe5b04816000815181106103e457fe5b602090810291909101015290969095509350505050565b60008115806104165750508082028282828161041357fe5b04145b610467576040805162461bcd60e51b815260206004820152601860248201527f426f72696e674d6174683a204d756c204f766572666c6f770000000000000000604482015290519081900360640190fd5b92915050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b602083106104ea5780518252601f1990920191602091820191016104cb565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461054c576040519150601f19603f3d011682016040523d82523d6000602084013e610551565b606091505b509150915081801561057f57508051158061057f575080806020019051602081101561057c57600080fd5b50515b6105d0576040805162461bcd60e51b815260206004820152601c60248201527f426f72696e6745524332303a205472616e73666572206661696c656400000000604482015290519081900360640190fd5b505050505056fe4f6e6c79204d4356322063616e2063616c6c20746869732066756e6374696f6e2ea2646970667358221220a93f97078bf9087e69bf07bca637f6588f61c512bfc679b1c0d30ff6e442d99464736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA3D83320 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xD63B3C49 EQ PUSH2 0x7F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x14A JUMP JUMPDEST STOP JUMPDEST PUSH2 0xB1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x30B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF5 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xDD JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x134 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x11C JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x1B1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5D8 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1E6 DUP5 PUSH32 0x0 PUSH2 0x3FB JUMP JUMPDEST DUP2 PUSH2 0x1ED JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x25F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x273 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x289 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x2CE JUMPI PUSH2 0x2C9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP7 DUP4 PUSH2 0x46D JUMP JUMPDEST PUSH2 0x302 JUMP JUMPDEST PUSH2 0x302 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP7 DUP5 PUSH2 0x46D JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH32 0x0 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x35F JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH8 0xDE0B6B3A7640000 PUSH2 0x3CF DUP7 PUSH32 0x0 PUSH2 0x3FB JUMP JUMPDEST DUP2 PUSH2 0x3D6 JUMPI INVALID JUMPDEST DIV DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3E4 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0x416 JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0x413 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x467 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x426F72696E674D6174683A204D756C204F766572666C6F770000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 SWAP4 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x4EA JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x4CB JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x54C JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x551 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x57F JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x57F JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x57C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x5D0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x426F72696E6745524332303A205472616E73666572206661696C656400000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP INVALID 0x4F PUSH15 0x6C79204D4356322063616E2063616C PUSH13 0x20746869732066756E6374696F PUSH15 0x2EA2646970667358221220A93F9707 DUP12 0xF9 ADDMOD PUSH31 0x69BF07BCA637F6588F61C512BFC679B1C0D30FF6E442D99464736F6C634300 MOD 0xC STOP CALLER ",
              "sourceMap": "248:1646:13:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;774:472;;;;;;;;;;;;;;;;-1:-1:-1;774:472:13;;;-1:-1:-1;;;;;774:472:13;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1256:475;;;;;;;;;;;;;;;;-1:-1:-1;1256:475:13;;;-1:-1:-1;;;;;1256:475:13;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;774:472;1786:10;-1:-1:-1;;;;;1800:12:13;1786:26;;1765:106;;;;-1:-1:-1;;;1765:106:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;910:21:::1;495:4;934:38;:16:::0;955::::1;934:20;:38::i;:::-;:61;;;;;;910:85;;1005:17;1025:11;-1:-1:-1::0;;;;;1025:21:13::1;;1055:4;1025:36;;;;;;;;;;;;;-1:-1:-1::0;;;;;1025:36:13::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;1025:36:13;;-1:-1:-1;1075:25:13;;::::1;1071:169;;;1116:39;-1:-1:-1::0;;;;;1116:11:13::1;:24;1141:2:::0;1145:9;1116:24:::1;:39::i;:::-;1071:169;;;1186:43;-1:-1:-1::0;;;;;1186:11:13::1;:24;1211:2:::0;1215:13;1186:24:::1;:43::i;:::-;1881:1;;774:472:::0;;;;;:::o;1256:475::-;1468:15;;;1481:1;1468:15;;;;;;;;;1364:28;;;;;;1468:15;;;;;;;;;;;-1:-1:-1;1468:15:13;1436:47;;1513:11;1493:13;1507:1;1493:16;;;;;;;;-1:-1:-1;;;;;1493:32:13;;;;:16;;;;;;;;;;;:32;1569:16;;;1583:1;1569:16;;;;;;;;;1535:31;;1569:16;;;;;;;;;;;;-1:-1:-1;;1535:50:13;-1:-1:-1;495:4:13;1615:38;:16;1636;1615:20;:38::i;:::-;:61;;;;;;1595:14;1610:1;1595:17;;;;;;;;;;;;;;;;;:81;1694:13;;;;-1:-1:-1;1256:475:13;-1:-1:-1;;;;1256:475:13:o;470:137:4:-;528:9;548:6;;;:28;;-1:-1:-1;;563:5:4;;;575:1;570;563:5;570:1;558:13;;;;;:18;548:28;540:65;;;;;-1:-1:-1;;;540:65:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;470:137;;;;:::o;951:304:3:-;1091:46;;;-1:-1:-1;;;;;1091:46:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1091:46:3;-1:-1:-1;;;1091:46:3;;;1071:67;;;;1036:12;;1050:17;;1071:19;;;;1091:46;1071:67;;;1091:46;1071:67;;1091:46;1071:67;;;;;;;;;;-1:-1:-1;;1071:67:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1035:103;;;;1157:7;:57;;;;-1:-1:-1;1169:11:3;;:16;;:44;;;1200:4;1189:24;;;;;;;;;;;;;;;-1:-1:-1;1189:24:3;1169:44;1149:98;;;;;-1:-1:-1;;;1149:98:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;951:304;;;;;:::o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "316400",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "onGoldNuggetReward(uint256,address,address,uint256,uint256)": "infinite",
                "pendingTokens(uint256,address,uint256)": "infinite"
              }
            },
            "methodIdentifiers": {
              "onGoldNuggetReward(uint256,address,address,uint256,uint256)": "a3d83320",
              "pendingTokens(uint256,address,uint256)": "d63b3c49"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_rewardMultiplier\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC20\",\"name\":\"_rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_GOLDMINER_V2\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"goldnuggetAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"onGoldNuggetReward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"goldnuggetAmount\",\"type\":\"uint256\"}],\"name\":\"pendingTokens\",\"outputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"rewardTokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"rewardAmounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/mocks/RewarderMock.sol\":\"RewarderMock\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@boringcrypto/boring-solidity/contracts/interfaces/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity 0.6.12;\\r\\n\\r\\ninterface IERC20 {\\r\\n    function totalSupply() external view returns (uint256);\\r\\n    function balanceOf(address account) external view returns (uint256);\\r\\n    function allowance(address owner, address spender) external view returns (uint256);\\r\\n    function approve(address spender, uint256 amount) external returns (bool);\\r\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\r\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\r\\n\\r\\n    // EIP 2612\\r\\n    function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;\\r\\n}\",\"keccak256\":\"0x8004f86e4536cca55b8eeb2621fe18e1ee57d779396ddef50bce5bf70fb59867\",\"license\":\"MIT\"},\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\r\\npragma solidity 0.6.12;\\r\\n\\r\\nimport \\\"../interfaces/IERC20.sol\\\";\\r\\n\\r\\nlibrary BoringERC20 {\\r\\n    function safeSymbol(IERC20 token) internal view returns(string memory) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x95d89b41));\\r\\n        return success && data.length > 0 ? abi.decode(data, (string)) : \\\"???\\\";\\r\\n    }\\r\\n\\r\\n    function safeName(IERC20 token) internal view returns(string memory) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x06fdde03));\\r\\n        return success && data.length > 0 ? abi.decode(data, (string)) : \\\"???\\\";\\r\\n    }\\r\\n\\r\\n    function safeDecimals(IERC20 token) internal view returns (uint8) {\\r\\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x313ce567));\\r\\n        return success && data.length == 32 ? abi.decode(data, (uint8)) : 18;\\r\\n    }\\r\\n\\r\\n    function safeTransfer(IERC20 token, address to, uint256 amount) internal {\\r\\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0xa9059cbb, to, amount));\\r\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"BoringERC20: Transfer failed\\\");\\r\\n    }\\r\\n\\r\\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 amount) internal {\\r\\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0x23b872dd, from, to, amount));\\r\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"BoringERC20: TransferFrom failed\\\");\\r\\n    }\\r\\n}\",\"keccak256\":\"0x69f1ccf716991e5d6d64dc0e3bc3828fd1990bc18400d680b1aa1960675daaaa\",\"license\":\"UNLICENSED\"},\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity 0.6.12;\\r\\n// a library for performing overflow-safe math, updated with awesomeness from of DappHub (https://github.com/dapphub/ds-math)\\r\\nlibrary BoringMath {\\r\\n    function add(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {require(b == 0 || (c = a * b)/b == a, \\\"BoringMath: Mul Overflow\\\");}\\r\\n    function to128(uint256 a) internal pure returns (uint128 c) {\\r\\n        require(a <= uint128(-1), \\\"BoringMath: uint128 Overflow\\\");\\r\\n        c = uint128(a);\\r\\n    }\\r\\n    function to64(uint256 a) internal pure returns (uint64 c) {\\r\\n        require(a <= uint64(-1), \\\"BoringMath: uint64 Overflow\\\");\\r\\n        c = uint64(a);\\r\\n    }\\r\\n    function to32(uint256 a) internal pure returns (uint32 c) {\\r\\n        require(a <= uint32(-1), \\\"BoringMath: uint32 Overflow\\\");\\r\\n        c = uint32(a);\\r\\n    }\\r\\n}\\r\\n\\r\\nlibrary BoringMath128 {\\r\\n    function add(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\\r\\n\\r\\nlibrary BoringMath64 {\\r\\n    function add(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\\r\\n\\r\\nlibrary BoringMath32 {\\r\\n    function add(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a + b) >= b, \\\"BoringMath: Add Overflow\\\");}\\r\\n    function sub(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a - b) <= a, \\\"BoringMath: Underflow\\\");}\\r\\n}\",\"keccak256\":\"0x2d0e99483c5618251d4b52e8551918253bf044c63e0d09a2f1f652671f9ff762\",\"license\":\"MIT\"},\"contracts/interfaces/IRewarder.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.6.12;\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\\\";\\ninterface IRewarder {\\n    using BoringERC20 for IERC20;\\n    function onGoldNuggetReward(uint256 pid, address user, address recipient, uint256 goldnuggetAmount, uint256 newLpAmount) external;\\n    function pendingTokens(uint256 pid, address user, uint256 goldnuggetAmount) external view returns (IERC20[] memory, uint256[] memory);\\n}\\n\",\"keccak256\":\"0x92579e172bd0f29fd768cf7c6ccd1a8a74204d8bac7d7ae95538370d1265ac5c\",\"license\":\"MIT\"},\"contracts/mocks/RewarderMock.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.6.12;\\nimport \\\"../interfaces/IRewarder.sol\\\";\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\\\";\\nimport \\\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\\\";\\n\\n\\ncontract RewarderMock is IRewarder {\\n    using BoringMath for uint256;\\n    using BoringERC20 for IERC20;\\n    uint256 private immutable rewardMultiplier;\\n    IERC20 private immutable rewardToken;\\n    uint256 private constant REWARD_TOKEN_DIVISOR = 1e18;\\n    address private immutable GOLDMINER_V2;\\n\\n    constructor (uint256 _rewardMultiplier, IERC20 _rewardToken, address _GOLDMINER_V2) public {\\n        rewardMultiplier = _rewardMultiplier;\\n        rewardToken = _rewardToken;\\n        GOLDMINER_V2 = _GOLDMINER_V2;\\n    }\\n\\n    function onGoldNuggetReward (uint256, address user, address to, uint256 goldnuggetAmount, uint256) onlyMCV2 override external {\\n        uint256 pendingReward = goldnuggetAmount.mul(rewardMultiplier) / REWARD_TOKEN_DIVISOR;\\n        uint256 rewardBal = rewardToken.balanceOf(address(this));\\n        if (pendingReward > rewardBal) {\\n            rewardToken.safeTransfer(to, rewardBal);\\n        } else {\\n            rewardToken.safeTransfer(to, pendingReward);\\n        }\\n    }\\n    \\n    function pendingTokens(uint256 pid, address user, uint256 goldnuggetAmount) override external view returns (IERC20[] memory rewardTokens, uint256[] memory rewardAmounts) {\\n        IERC20[] memory _rewardTokens = new IERC20[](1);\\n        _rewardTokens[0] = (rewardToken);\\n        uint256[] memory _rewardAmounts = new uint256[](1);\\n        _rewardAmounts[0] = goldnuggetAmount.mul(rewardMultiplier) / REWARD_TOKEN_DIVISOR;\\n        return (_rewardTokens, _rewardAmounts);\\n    }\\n\\n    modifier onlyMCV2 {\\n        require(\\n            msg.sender == GOLDMINER_V2,\\n            \\\"Only MCV2 can call this function.\\\"\\n        );\\n        _;\\n    }\\n  \\n}\\n\",\"keccak256\":\"0x676b60505ec4e2f77ae7b7b65e7b6da9424b8fe33accd59f123859a30f70e617\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      }
    },
    "errors": [
      {
        "component": "general",
        "errorCode": "5667",
        "formattedMessage": "contracts/mocks/RewarderBrokenMock.sol:13:28: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n    function pendingTokens(uint256 pid, address user, uint256 goldnuggetA ...\n                           ^---------^\n",
        "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
        "severity": "warning",
        "sourceLocation": {
          "end": 302,
          "file": "contracts/mocks/RewarderBrokenMock.sol",
          "start": 291
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "5667",
        "formattedMessage": "contracts/mocks/RewarderBrokenMock.sol:13:41: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n ... unction pendingTokens(uint256 pid, address user, uint256 goldnuggetAmount) overrid ...\n                                        ^----------^\n",
        "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
        "severity": "warning",
        "sourceLocation": {
          "end": 316,
          "file": "contracts/mocks/RewarderBrokenMock.sol",
          "start": 304
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "5667",
        "formattedMessage": "contracts/mocks/RewarderBrokenMock.sol:13:55: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n ... gTokens(uint256 pid, address user, uint256 goldnuggetAmount) override external view returns (I ...\n                                        ^----------------------^\n",
        "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
        "severity": "warning",
        "sourceLocation": {
          "end": 342,
          "file": "contracts/mocks/RewarderBrokenMock.sol",
          "start": 318
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "5667",
        "formattedMessage": "contracts/mocks/RewarderBrokenMock.sol:13:113: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n ... t) override external view returns (IERC20[] memory rewardTokens, uint256[] memory rewardAmounts){\n                                        ^--------------------------^\n",
        "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
        "severity": "warning",
        "sourceLocation": {
          "end": 404,
          "file": "contracts/mocks/RewarderBrokenMock.sol",
          "start": 376
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "5667",
        "formattedMessage": "contracts/mocks/RewarderBrokenMock.sol:13:143: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n ... rns (IERC20[] memory rewardTokens, uint256[] memory rewardAmounts){\n                                        ^----------------------------^\n",
        "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
        "severity": "warning",
        "sourceLocation": {
          "end": 436,
          "file": "contracts/mocks/RewarderBrokenMock.sol",
          "start": 406
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "5667",
        "formattedMessage": "contracts/mocks/RewarderMock.sol:23:43: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n    function onGoldNuggetReward (uint256, address user, address to, uint256 goldnuggetAmount, uint256) onlyMCV2 override external {\n                                          ^----------^\n",
        "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
        "severity": "warning",
        "sourceLocation": {
          "end": 824,
          "file": "contracts/mocks/RewarderMock.sol",
          "start": 812
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "5667",
        "formattedMessage": "contracts/mocks/RewarderMock.sol:33:28: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n    function pendingTokens(uint256 pid, address user, uint256 goldnuggetA ...\n                           ^---------^\n",
        "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
        "severity": "warning",
        "sourceLocation": {
          "end": 1290,
          "file": "contracts/mocks/RewarderMock.sol",
          "start": 1279
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "5667",
        "formattedMessage": "contracts/mocks/RewarderMock.sol:33:41: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n ... unction pendingTokens(uint256 pid, address user, uint256 goldnuggetAmount) overrid ...\n                                        ^----------^\n",
        "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
        "severity": "warning",
        "sourceLocation": {
          "end": 1304,
          "file": "contracts/mocks/RewarderMock.sol",
          "start": 1292
        },
        "type": "Warning"
      }
    ],
    "sources": {
      "@boringcrypto/boring-solidity/contracts/BoringBatchable.sol": {
        "ast": {
          "absolutePath": "@boringcrypto/boring-solidity/contracts/BoringBatchable.sol",
          "exportedSymbols": {
            "BaseBoringBatchable": [
              110
            ],
            "BoringBatchable": [
              145
            ]
          },
          "id": 146,
          "license": "UNLICENSED",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "107:23:0"
            },
            {
              "id": 2,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "132:33:0"
            },
            {
              "absolutePath": "@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol",
              "file": "./libraries/BoringERC20.sol",
              "id": 3,
              "nodeType": "ImportDirective",
              "scope": 146,
              "sourceUnit": 554,
              "src": "211:37:0",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 110,
              "linearizedBaseContracts": [
                110
              ],
              "name": "BaseBoringBatchable",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 26,
                    "nodeType": "Block",
                    "src": "391:409:0",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 13,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 10,
                              "name": "_returnData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5,
                              "src": "518:11:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 11,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "518:18:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "3638",
                            "id": 12,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "539:2:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_68_by_1",
                              "typeString": "int_const 68"
                            },
                            "value": "68"
                          },
                          "src": "518:23:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 16,
                        "nodeType": "IfStatement",
                        "src": "514:67:0",
                        "trueBody": {
                          "expression": {
                            "argumentTypes": null,
                            "hexValue": "5472616e73616374696f6e2072657665727465642073696c656e746c79",
                            "id": 14,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "550:31:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_d0b1e7612ebe87924453e5d4581b9067879655587bae8a2dfee438433699b890",
                              "typeString": "literal_string \"Transaction reverted silently\""
                            },
                            "value": "Transaction reverted silently"
                          },
                          "functionReturnParameters": 9,
                          "id": 15,
                          "nodeType": "Return",
                          "src": "543:38:0"
                        }
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "603:98:0",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "653:37:0",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_returnData",
                                    "nodeType": "YulIdentifier",
                                    "src": "672:11:0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "685:4:0",
                                    "type": "",
                                    "value": "0x04"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "668:3:0"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "668:22:0"
                              },
                              "variableNames": [
                                {
                                  "name": "_returnData",
                                  "nodeType": "YulIdentifier",
                                  "src": "653:11:0"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "istanbul",
                        "externalReferences": [
                          {
                            "declaration": 5,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "653:11:0",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "672:11:0",
                            "valueSize": 1
                          }
                        ],
                        "id": 17,
                        "nodeType": "InlineAssembly",
                        "src": "594:107:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 20,
                              "name": "_returnData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5,
                              "src": "729:11:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "id": 22,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "743:6:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                    "typeString": "type(string storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 21,
                                    "name": "string",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "743:6:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                }
                              ],
                              "id": 23,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "742:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                "typeString": "type(string storage pointer)"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                "typeString": "type(string storage pointer)"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 18,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "718:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 19,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "718:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 24,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "718:33:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 9,
                        "id": 25,
                        "nodeType": "Return",
                        "src": "711:40:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 27,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getRevertMsg",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5,
                        "mutability": "mutable",
                        "name": "_returnData",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 27,
                        "src": "327:24:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "327:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "326:26:0"
                  },
                  "returnParameters": {
                    "id": 9,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 27,
                        "src": "376:13:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 7,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "376:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "375:15:0"
                  },
                  "scope": 110,
                  "src": "304:496:0",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 108,
                    "nodeType": "Block",
                    "src": "1392:422:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 48,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 41,
                            "name": "successes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 36,
                            "src": "1428:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                              "typeString": "bool[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 45,
                                  "name": "calls",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30,
                                  "src": "1451:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                                    "typeString": "bytes calldata[] calldata"
                                  }
                                },
                                "id": 46,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1451:12:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 44,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "1440:10:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bool_$dyn_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (bool[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 42,
                                  "name": "bool",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1444:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "id": 43,
                                "length": null,
                                "nodeType": "ArrayTypeName",
                                "src": "1444:6:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr",
                                  "typeString": "bool[]"
                                }
                              }
                            },
                            "id": 47,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1440:24:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                              "typeString": "bool[] memory"
                            }
                          },
                          "src": "1428:36:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                            "typeString": "bool[] memory"
                          }
                        },
                        "id": 49,
                        "nodeType": "ExpressionStatement",
                        "src": "1428:36:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 57,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 50,
                            "name": "results",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 39,
                            "src": "1475:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                              "typeString": "bytes memory[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 54,
                                  "name": "calls",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30,
                                  "src": "1497:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                                    "typeString": "bytes calldata[] calldata"
                                  }
                                },
                                "id": 55,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1497:12:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 53,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "1485:11:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (bytes memory[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 51,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1489:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_storage_ptr",
                                    "typeString": "bytes"
                                  }
                                },
                                "id": 52,
                                "length": null,
                                "nodeType": "ArrayTypeName",
                                "src": "1489:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                                  "typeString": "bytes[]"
                                }
                              }
                            },
                            "id": 56,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1485:25:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                              "typeString": "bytes memory[] memory"
                            }
                          },
                          "src": "1475:35:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                            "typeString": "bytes memory[] memory"
                          }
                        },
                        "id": 58,
                        "nodeType": "ExpressionStatement",
                        "src": "1475:35:0"
                      },
                      {
                        "body": {
                          "id": 106,
                          "nodeType": "Block",
                          "src": "1564:243:0",
                          "statements": [
                            {
                              "assignments": [
                                71,
                                73
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 71,
                                  "mutability": "mutable",
                                  "name": "success",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 106,
                                  "src": "1580:12:0",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "typeName": {
                                    "id": 70,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1580:4:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                },
                                {
                                  "constant": false,
                                  "id": 73,
                                  "mutability": "mutable",
                                  "name": "result",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 106,
                                  "src": "1594:19:0",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes"
                                  },
                                  "typeName": {
                                    "id": 72,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1594:5:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_storage_ptr",
                                      "typeString": "bytes"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 83,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 79,
                                      "name": "calls",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30,
                                      "src": "1644:5:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                                        "typeString": "bytes calldata[] calldata"
                                      }
                                    },
                                    "id": 81,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 80,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 60,
                                      "src": "1650:1:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "1644:8:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_calldata_ptr",
                                      "typeString": "bytes calldata"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_calldata_ptr",
                                      "typeString": "bytes calldata"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 76,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "1625:4:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_BaseBoringBatchable_$110",
                                          "typeString": "contract BaseBoringBatchable"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_BaseBoringBatchable_$110",
                                          "typeString": "contract BaseBoringBatchable"
                                        }
                                      ],
                                      "id": 75,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "1617:7:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 74,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1617:7:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 77,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1617:13:0",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "id": 78,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "delegatecall",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "1617:26:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory) returns (bool,bytes memory)"
                                  }
                                },
                                "id": 82,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1617:36:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                                  "typeString": "tuple(bool,bytes memory)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "1579:74:0"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 88,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 85,
                                      "name": "success",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 71,
                                      "src": "1676:7:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "||",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 87,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "!",
                                      "prefix": true,
                                      "src": "1687:13:0",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 86,
                                        "name": "revertOnFail",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 32,
                                        "src": "1688:12:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "1676:24:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 90,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 73,
                                        "src": "1716:6:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "id": 89,
                                      "name": "_getRevertMsg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 27,
                                      "src": "1702:13:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_string_memory_ptr_$",
                                        "typeString": "function (bytes memory) pure returns (string memory)"
                                      }
                                    },
                                    "id": 91,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1702:21:0",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 84,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "1668:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 92,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1668:56:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 93,
                              "nodeType": "ExpressionStatement",
                              "src": "1668:56:0"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 98,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 94,
                                    "name": "successes",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 36,
                                    "src": "1739:9:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                                      "typeString": "bool[] memory"
                                    }
                                  },
                                  "id": 96,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 95,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 60,
                                    "src": "1749:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "1739:12:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 97,
                                  "name": "success",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 71,
                                  "src": "1754:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "1739:22:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 99,
                              "nodeType": "ExpressionStatement",
                              "src": "1739:22:0"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 104,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 100,
                                    "name": "results",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 39,
                                    "src": "1776:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                                      "typeString": "bytes memory[] memory"
                                    }
                                  },
                                  "id": 102,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 101,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 60,
                                    "src": "1784:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "1776:10:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 103,
                                  "name": "result",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 73,
                                  "src": "1789:6:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "src": "1776:19:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 105,
                              "nodeType": "ExpressionStatement",
                              "src": "1776:19:0"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 66,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 63,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 60,
                            "src": "1541:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 64,
                              "name": "calls",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30,
                              "src": "1545:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                                "typeString": "bytes calldata[] calldata"
                              }
                            },
                            "id": 65,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1545:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1541:16:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 107,
                        "initializationExpression": {
                          "assignments": [
                            60
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 60,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 107,
                              "src": "1526:9:0",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 59,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1526:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 62,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 61,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1538:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "1526:13:0"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 68,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "1559:3:0",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 67,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 60,
                              "src": "1559:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 69,
                          "nodeType": "ExpressionStatement",
                          "src": "1559:3:0"
                        },
                        "nodeType": "ForStatement",
                        "src": "1521:286:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "d2423b51",
                  "id": 109,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batch",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 33,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30,
                        "mutability": "mutable",
                        "name": "calls",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 109,
                        "src": "1275:22:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "bytes[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 28,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "1275:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "id": 29,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "1275:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                            "typeString": "bytes[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32,
                        "mutability": "mutable",
                        "name": "revertOnFail",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 109,
                        "src": "1299:17:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 31,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1299:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1274:43:0"
                  },
                  "returnParameters": {
                    "id": 40,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 36,
                        "mutability": "mutable",
                        "name": "successes",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 109,
                        "src": "1343:23:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                          "typeString": "bool[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 34,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "1343:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "id": 35,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "1343:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr",
                            "typeString": "bool[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 39,
                        "mutability": "mutable",
                        "name": "results",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 109,
                        "src": "1368:22:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                          "typeString": "bytes[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 37,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "1368:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "id": 38,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "1368:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                            "typeString": "bytes[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1342:49:0"
                  },
                  "scope": 110,
                  "src": "1260:554:0",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 146,
              "src": "268:1549:0"
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 111,
                    "name": "BaseBoringBatchable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 110,
                    "src": "1865:19:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BaseBoringBatchable_$110",
                      "typeString": "contract BaseBoringBatchable"
                    }
                  },
                  "id": 112,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1865:19:0"
                }
              ],
              "contractDependencies": [
                110
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 145,
              "linearizedBaseContracts": [
                145,
                110
              ],
              "name": "BoringBatchable",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 143,
                    "nodeType": "Block",
                    "src": "2294:113:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 134,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 116,
                              "src": "2363:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 135,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 118,
                              "src": "2369:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 136,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 120,
                              "src": "2373:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 137,
                              "name": "deadline",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 122,
                              "src": "2381:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 138,
                              "name": "v",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 124,
                              "src": "2391:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 139,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 126,
                              "src": "2394:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 140,
                              "name": "s",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 128,
                              "src": "2397:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 131,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 114,
                              "src": "2350:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 133,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "permit",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 336,
                            "src": "2350:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"
                            }
                          },
                          "id": 141,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2350:49:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 142,
                        "nodeType": "ExpressionStatement",
                        "src": "2350:49:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "7c516e94",
                  "id": 144,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "permitToken",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 129,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 114,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 144,
                        "src": "2182:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$337",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 113,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 337,
                          "src": "2182:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 116,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 144,
                        "src": "2196:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 115,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2196:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 118,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 144,
                        "src": "2210:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 117,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2210:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 120,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 144,
                        "src": "2222:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 119,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2222:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 122,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 144,
                        "src": "2238:16:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 121,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2238:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 124,
                        "mutability": "mutable",
                        "name": "v",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 144,
                        "src": "2256:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 123,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "2256:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 126,
                        "mutability": "mutable",
                        "name": "r",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 144,
                        "src": "2265:9:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 125,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2265:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 128,
                        "mutability": "mutable",
                        "name": "s",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 144,
                        "src": "2276:9:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 127,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2276:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2181:105:0"
                  },
                  "returnParameters": {
                    "id": 130,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2294:0:0"
                  },
                  "scope": 145,
                  "src": "2161:246:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 146,
              "src": "1837:573:0"
            }
          ],
          "src": "107:2303:0"
        },
        "id": 0
      },
      "@boringcrypto/boring-solidity/contracts/BoringOwnable.sol": {
        "ast": {
          "absolutePath": "@boringcrypto/boring-solidity/contracts/BoringOwnable.sol",
          "exportedSymbols": {
            "BoringOwnable": [
              271
            ],
            "BoringOwnableData": [
              152
            ]
          },
          "id": 272,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 147,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "100:23:1"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 152,
              "linearizedBaseContracts": [
                152
              ],
              "name": "BoringOwnableData",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "functionSelector": "8da5cb5b",
                  "id": 149,
                  "mutability": "mutable",
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 152,
                  "src": "350:20:1",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 148,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "350:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "e30c3978",
                  "id": 151,
                  "mutability": "mutable",
                  "name": "pendingOwner",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 152,
                  "src": "397:27:1",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 150,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "397:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                }
              ],
              "scope": 272,
              "src": "296:132:1"
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 153,
                    "name": "BoringOwnableData",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 152,
                    "src": "474:17:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BoringOwnableData_$152",
                      "typeString": "contract BoringOwnableData"
                    }
                  },
                  "id": 154,
                  "nodeType": "InheritanceSpecifier",
                  "src": "474:17:1"
                }
              ],
              "contractDependencies": [
                152
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 271,
              "linearizedBaseContracts": [
                271,
                152
              ],
              "name": "BoringOwnable",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 160,
                  "name": "OwnershipTransferred",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 159,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 156,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "previousOwner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 160,
                        "src": "541:29:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 155,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "541:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 158,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "newOwner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 160,
                        "src": "572:24:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 157,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "572:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "540:57:1"
                  },
                  "src": "514:84:1"
                },
                {
                  "body": {
                    "id": 177,
                    "nodeType": "Block",
                    "src": "628:97:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 166,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 163,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 149,
                            "src": "639:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 164,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "647:3:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 165,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "647:10:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "639:18:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 167,
                        "nodeType": "ExpressionStatement",
                        "src": "639:18:1"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 171,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "702:1:1",
                                  "subdenomination": null,
                                  "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": 170,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "694:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 169,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "694:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 172,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "694:10:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 173,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "706:3:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 174,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "706:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 168,
                            "name": "OwnershipTransferred",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 160,
                            "src": "673:20:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 175,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "673:44:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 176,
                        "nodeType": "EmitStatement",
                        "src": "668:49:1"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 178,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 161,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "618:2:1"
                  },
                  "returnParameters": {
                    "id": 162,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "628:0:1"
                  },
                  "scope": 271,
                  "src": "606:119:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 225,
                    "nodeType": "Block",
                    "src": "864:382:1",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 189,
                          "name": "direct",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 182,
                          "src": "879:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 223,
                          "nodeType": "Block",
                          "src": "1165:74:1",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 221,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 219,
                                  "name": "pendingOwner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 151,
                                  "src": "1204:12:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 220,
                                  "name": "newOwner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 180,
                                  "src": "1219:8:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "1204:23:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 222,
                              "nodeType": "ExpressionStatement",
                              "src": "1204:23:1"
                            }
                          ]
                        },
                        "id": 224,
                        "nodeType": "IfStatement",
                        "src": "875:364:1",
                        "trueBody": {
                          "id": 218,
                          "nodeType": "Block",
                          "src": "887:272:1",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 198,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      "id": 196,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 191,
                                        "name": "newOwner",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 180,
                                        "src": "933:8:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "!=",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "hexValue": "30",
                                            "id": 194,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "953:1:1",
                                            "subdenomination": null,
                                            "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": 193,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "945:7:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": {
                                            "id": 192,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "945:7:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": null,
                                              "typeString": null
                                            }
                                          }
                                        },
                                        "id": 195,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "945:10:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      },
                                      "src": "933:22:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "||",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 197,
                                      "name": "renounce",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 184,
                                      "src": "959:8:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "933:34:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "4f776e61626c653a207a65726f2061646472657373",
                                    "id": 199,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "969:23:1",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_4bea69941b0d0257b3e89326ac37d51764d80d2e6e1a44e2d90b6a6f85f1b830",
                                      "typeString": "literal_string \"Ownable: zero address\""
                                    },
                                    "value": "Ownable: zero address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_4bea69941b0d0257b3e89326ac37d51764d80d2e6e1a44e2d90b6a6f85f1b830",
                                      "typeString": "literal_string \"Ownable: zero address\""
                                    }
                                  ],
                                  "id": 190,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "925:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 200,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "925:68:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 201,
                              "nodeType": "ExpressionStatement",
                              "src": "925:68:1"
                            },
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 203,
                                    "name": "owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 149,
                                    "src": "1060:5:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 204,
                                    "name": "newOwner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 180,
                                    "src": "1067:8:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 202,
                                  "name": "OwnershipTransferred",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 160,
                                  "src": "1039:20:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                                    "typeString": "function (address,address)"
                                  }
                                },
                                "id": 205,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1039:37:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 206,
                              "nodeType": "EmitStatement",
                              "src": "1034:42:1"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 209,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 207,
                                  "name": "owner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 149,
                                  "src": "1091:5:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 208,
                                  "name": "newOwner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 180,
                                  "src": "1099:8:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "1091:16:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 210,
                              "nodeType": "ExpressionStatement",
                              "src": "1091:16:1"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 216,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 211,
                                  "name": "pendingOwner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 151,
                                  "src": "1122:12:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 214,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1145:1:1",
                                      "subdenomination": null,
                                      "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": 213,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1137:7:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 212,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "1137:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 215,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1137:10:1",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "1122:25:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 217,
                              "nodeType": "ExpressionStatement",
                              "src": "1122:25:1"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "078dfbe7",
                  "id": 226,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 187,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 186,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 270,
                        "src": "854:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "854:9:1"
                    }
                  ],
                  "name": "transferOwnership",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 185,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 180,
                        "mutability": "mutable",
                        "name": "newOwner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 226,
                        "src": "801:16:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 179,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "801:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 182,
                        "mutability": "mutable",
                        "name": "direct",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 226,
                        "src": "819:11:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 181,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "819:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 184,
                        "mutability": "mutable",
                        "name": "renounce",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 226,
                        "src": "832:13:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 183,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "832:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "800:46:1"
                  },
                  "returnParameters": {
                    "id": 188,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "864:0:1"
                  },
                  "scope": 271,
                  "src": "774:472:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 257,
                    "nodeType": "Block",
                    "src": "1328:315:1",
                    "statements": [
                      {
                        "assignments": [
                          230
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 230,
                            "mutability": "mutable",
                            "name": "_pendingOwner",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 257,
                            "src": "1339:21:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 229,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1339:7:1",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 232,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 231,
                          "name": "pendingOwner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 151,
                          "src": "1363:12:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1339:36:1"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 237,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 234,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "1423:3:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 235,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1423:10:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 236,
                                "name": "_pendingOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 230,
                                "src": "1437:13:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "1423:27:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e6572",
                              "id": 238,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1452:34:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a7ec3208bb4c778bbdbdd3fdfe92b1d315d85dd01a9131ea9f648f906ac7a6b8",
                                "typeString": "literal_string \"Ownable: caller != pending owner\""
                              },
                              "value": "Ownable: caller != pending owner"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a7ec3208bb4c778bbdbdd3fdfe92b1d315d85dd01a9131ea9f648f906ac7a6b8",
                                "typeString": "literal_string \"Ownable: caller != pending owner\""
                              }
                            ],
                            "id": 233,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1415:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 239,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1415:72:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 240,
                        "nodeType": "ExpressionStatement",
                        "src": "1415:72:1"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 242,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 149,
                              "src": "1546:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 243,
                              "name": "_pendingOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 230,
                              "src": "1553:13:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 241,
                            "name": "OwnershipTransferred",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 160,
                            "src": "1525:20:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 244,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1525:42:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 245,
                        "nodeType": "EmitStatement",
                        "src": "1520:47:1"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 248,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 246,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 149,
                            "src": "1578:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 247,
                            "name": "_pendingOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 230,
                            "src": "1586:13:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1578:21:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 249,
                        "nodeType": "ExpressionStatement",
                        "src": "1578:21:1"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 255,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 250,
                            "name": "pendingOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 151,
                            "src": "1610:12:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 253,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1633:1:1",
                                "subdenomination": null,
                                "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": 252,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1625:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 251,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1625:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 254,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1625:10:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "1610:25:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 256,
                        "nodeType": "ExpressionStatement",
                        "src": "1610:25:1"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "4e71e0c8",
                  "id": 258,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "claimOwnership",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 227,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1318:2:1"
                  },
                  "returnParameters": {
                    "id": 228,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1328:0:1"
                  },
                  "scope": 271,
                  "src": "1295:348:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 269,
                    "nodeType": "Block",
                    "src": "1713:95:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 264,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 261,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "1732:3:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 262,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1732:10:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 263,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 149,
                                "src": "1746:5:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "1732:19:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                              "id": 265,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1753:34:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe",
                                "typeString": "literal_string \"Ownable: caller is not the owner\""
                              },
                              "value": "Ownable: caller is not the owner"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe",
                                "typeString": "literal_string \"Ownable: caller is not the owner\""
                              }
                            ],
                            "id": 260,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1724:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 266,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1724:64:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 267,
                        "nodeType": "ExpressionStatement",
                        "src": "1724:64:1"
                      },
                      {
                        "id": 268,
                        "nodeType": "PlaceholderStatement",
                        "src": "1799:1:1"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 270,
                  "name": "onlyOwner",
                  "nodeType": "ModifierDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 259,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1710:2:1"
                  },
                  "src": "1692:116:1",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 272,
              "src": "448:1363:1"
            }
          ],
          "src": "100:1711:1"
        },
        "id": 1
      },
      "@boringcrypto/boring-solidity/contracts/interfaces/IERC20.sol": {
        "ast": {
          "absolutePath": "@boringcrypto/boring-solidity/contracts/interfaces/IERC20.sol",
          "exportedSymbols": {
            "IERC20": [
              337
            ]
          },
          "id": 338,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 273,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:23:2"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 337,
              "linearizedBaseContracts": [
                337
              ],
              "name": "IERC20",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "18160ddd",
                  "id": 278,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalSupply",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 274,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "104:2:2"
                  },
                  "returnParameters": {
                    "id": 277,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 276,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 278,
                        "src": "130:7:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 275,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "130:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "129:9:2"
                  },
                  "scope": 337,
                  "src": "84:55:2",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "70a08231",
                  "id": 285,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 281,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 280,
                        "mutability": "mutable",
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 285,
                        "src": "164:15:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 279,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "164:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "163:17:2"
                  },
                  "returnParameters": {
                    "id": 284,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 283,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 285,
                        "src": "204:7:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 282,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "204:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "203:9:2"
                  },
                  "scope": 337,
                  "src": "145:68:2",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "dd62ed3e",
                  "id": 294,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "allowance",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 290,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 287,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 294,
                        "src": "238:13:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 286,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "238:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 289,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 294,
                        "src": "253:15:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 288,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "253:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "237:32:2"
                  },
                  "returnParameters": {
                    "id": 293,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 292,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 294,
                        "src": "293:7:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 291,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "293:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "292:9:2"
                  },
                  "scope": 337,
                  "src": "219:83:2",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "095ea7b3",
                  "id": 303,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 299,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 296,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 303,
                        "src": "325:15:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 295,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "325:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 298,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 303,
                        "src": "342:14:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 297,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "342:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "324:33:2"
                  },
                  "returnParameters": {
                    "id": 302,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 301,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 303,
                        "src": "376:4:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 300,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "376:4:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "375:6:2"
                  },
                  "scope": 337,
                  "src": "308:74:2",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 311,
                  "name": "Transfer",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 310,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 305,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 311,
                        "src": "403:20:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 304,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "403:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 307,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 311,
                        "src": "425:18:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 306,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "425:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 309,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 311,
                        "src": "445:13:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 308,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "445:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "402:57:2"
                  },
                  "src": "388:72:2"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 319,
                  "name": "Approval",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 318,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 313,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 319,
                        "src": "481:21:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 312,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "481:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 315,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 319,
                        "src": "504:23:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 314,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "504:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 317,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 319,
                        "src": "529:13:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 316,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "529:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "480:63:2"
                  },
                  "src": "466:78:2"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "d505accf",
                  "id": 336,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "permit",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 334,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 321,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 336,
                        "src": "585:13:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 320,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "585:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 323,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 336,
                        "src": "600:15:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 322,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "600:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 325,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 336,
                        "src": "617:13:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 324,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "617:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 327,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 336,
                        "src": "632:16:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 326,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "632:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 329,
                        "mutability": "mutable",
                        "name": "v",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 336,
                        "src": "650:7:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 328,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "650:5:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 331,
                        "mutability": "mutable",
                        "name": "r",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 336,
                        "src": "659:9:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 330,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "659:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 333,
                        "mutability": "mutable",
                        "name": "s",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 336,
                        "src": "670:9:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 332,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "670:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "584:96:2"
                  },
                  "returnParameters": {
                    "id": 335,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "689:0:2"
                  },
                  "scope": 337,
                  "src": "569:121:2",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 338,
              "src": "60:633:2"
            }
          ],
          "src": "33:660:2"
        },
        "id": 2
      },
      "@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol": {
        "ast": {
          "absolutePath": "@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol",
          "exportedSymbols": {
            "BoringERC20": [
              553
            ]
          },
          "id": 554,
          "license": "UNLICENSED",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 339,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "40:23:3"
            },
            {
              "absolutePath": "@boringcrypto/boring-solidity/contracts/interfaces/IERC20.sol",
              "file": "../interfaces/IERC20.sol",
              "id": 340,
              "nodeType": "ImportDirective",
              "scope": 554,
              "sourceUnit": 338,
              "src": "67:34:3",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": null,
              "fullyImplemented": true,
              "id": 553,
              "linearizedBaseContracts": [
                553
              ],
              "name": "BoringERC20",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 378,
                    "nodeType": "Block",
                    "src": "203:197:3",
                    "statements": [
                      {
                        "assignments": [
                          348,
                          350
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 348,
                            "mutability": "mutable",
                            "name": "success",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 378,
                            "src": "215:12:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 347,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "215:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 350,
                            "mutability": "mutable",
                            "name": "data",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 378,
                            "src": "229:17:3",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 349,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "229:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 361,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30783935643839623431",
                                  "id": 358,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "299:10:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2514000705_by_1",
                                    "typeString": "int_const 2514000705"
                                  },
                                  "value": "0x95d89b41"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_2514000705_by_1",
                                    "typeString": "int_const 2514000705"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 356,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "276:3:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 357,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "276:22:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 359,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "276:34:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 353,
                                  "name": "token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 342,
                                  "src": "258:5:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$337",
                                    "typeString": "contract IERC20"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IERC20_$337",
                                    "typeString": "contract IERC20"
                                  }
                                ],
                                "id": 352,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "250:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 351,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "250:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 354,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "250:14:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 355,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "staticcall",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "250:25:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                            }
                          },
                          "id": 360,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "250:61:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "214:97:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 367,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 362,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 348,
                              "src": "329:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 366,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 363,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 350,
                                  "src": "340:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 364,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "340:11:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 365,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "354:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "340:15:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "329:26:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "argumentTypes": null,
                            "hexValue": "3f3f3f",
                            "id": 375,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "387:5:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_ad68b4dd5516c9b8c2050c111c09e315e44fd13499c6724a87c1b4642b615187",
                              "typeString": "literal_string \"???\""
                            },
                            "value": "???"
                          },
                          "id": 376,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "329:63:3",
                          "trueExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 370,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 350,
                                "src": "369:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 372,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "376:6:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                      "typeString": "type(string storage pointer)"
                                    },
                                    "typeName": {
                                      "id": 371,
                                      "name": "string",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "376:6:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  }
                                ],
                                "id": 373,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "375:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                  "typeString": "type(string storage pointer)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                  "typeString": "type(string storage pointer)"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 368,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "358:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 369,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "decode",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "358:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 374,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "358:26:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 346,
                        "id": 377,
                        "nodeType": "Return",
                        "src": "322:70:3"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 379,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeSymbol",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 343,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 342,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 379,
                        "src": "152:12:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$337",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 341,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 337,
                          "src": "152:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "151:14:3"
                  },
                  "returnParameters": {
                    "id": 346,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 345,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 379,
                        "src": "188:13:3",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 344,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "188:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "187:15:3"
                  },
                  "scope": 553,
                  "src": "132:268:3",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 417,
                    "nodeType": "Block",
                    "src": "477:197:3",
                    "statements": [
                      {
                        "assignments": [
                          387,
                          389
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 387,
                            "mutability": "mutable",
                            "name": "success",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 417,
                            "src": "489:12:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 386,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "489:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 389,
                            "mutability": "mutable",
                            "name": "data",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 417,
                            "src": "503:17:3",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 388,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "503:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 400,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30783036666464653033",
                                  "id": 397,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "573:10:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_117300739_by_1",
                                    "typeString": "int_const 117300739"
                                  },
                                  "value": "0x06fdde03"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_117300739_by_1",
                                    "typeString": "int_const 117300739"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 395,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "550:3:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 396,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "550:22:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 398,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "550:34:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 392,
                                  "name": "token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 381,
                                  "src": "532:5:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$337",
                                    "typeString": "contract IERC20"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IERC20_$337",
                                    "typeString": "contract IERC20"
                                  }
                                ],
                                "id": 391,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "524:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 390,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "524:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 393,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "524:14:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 394,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "staticcall",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "524:25:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                            }
                          },
                          "id": 399,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "524:61:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "488:97:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 406,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 401,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 387,
                              "src": "603:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 405,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 402,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 389,
                                  "src": "614:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 403,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "614:11:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 404,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "628:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "614:15:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "603:26:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "argumentTypes": null,
                            "hexValue": "3f3f3f",
                            "id": 414,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "661:5:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_ad68b4dd5516c9b8c2050c111c09e315e44fd13499c6724a87c1b4642b615187",
                              "typeString": "literal_string \"???\""
                            },
                            "value": "???"
                          },
                          "id": 415,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "603:63:3",
                          "trueExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 409,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 389,
                                "src": "643:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 411,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "650:6:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                      "typeString": "type(string storage pointer)"
                                    },
                                    "typeName": {
                                      "id": 410,
                                      "name": "string",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "650:6:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  }
                                ],
                                "id": 412,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "649:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                  "typeString": "type(string storage pointer)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                  "typeString": "type(string storage pointer)"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 407,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "632:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 408,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "decode",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "632:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 413,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "632:26:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 385,
                        "id": 416,
                        "nodeType": "Return",
                        "src": "596:70:3"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 418,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeName",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 382,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 381,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 418,
                        "src": "426:12:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$337",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 380,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 337,
                          "src": "426:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "425:14:3"
                  },
                  "returnParameters": {
                    "id": 385,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 384,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 418,
                        "src": "462:13:3",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 383,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "462:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "461:15:3"
                  },
                  "scope": 553,
                  "src": "408:266:3",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 456,
                    "nodeType": "Block",
                    "src": "748:195:3",
                    "statements": [
                      {
                        "assignments": [
                          426,
                          428
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 426,
                            "mutability": "mutable",
                            "name": "success",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 456,
                            "src": "760:12:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 425,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "760:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 428,
                            "mutability": "mutable",
                            "name": "data",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 456,
                            "src": "774:17:3",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 427,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "774:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 439,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30783331336365353637",
                                  "id": 436,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "844:10:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_826074471_by_1",
                                    "typeString": "int_const 826074471"
                                  },
                                  "value": "0x313ce567"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_826074471_by_1",
                                    "typeString": "int_const 826074471"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 434,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "821:3:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 435,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "821:22:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 437,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "821:34:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 431,
                                  "name": "token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 420,
                                  "src": "803:5:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$337",
                                    "typeString": "contract IERC20"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IERC20_$337",
                                    "typeString": "contract IERC20"
                                  }
                                ],
                                "id": 430,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "795:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 429,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "795:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 432,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "795:14:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 433,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "staticcall",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "795:25:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                            }
                          },
                          "id": 438,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "795:61:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "759:97:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 445,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 440,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 426,
                              "src": "874:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 444,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 441,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 428,
                                  "src": "885:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 442,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "885:11:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "3332",
                                "id": 443,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "900:2:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_32_by_1",
                                  "typeString": "int_const 32"
                                },
                                "value": "32"
                              },
                              "src": "885:17:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "874:28:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "argumentTypes": null,
                            "hexValue": "3138",
                            "id": 453,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "933:2:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_18_by_1",
                              "typeString": "int_const 18"
                            },
                            "value": "18"
                          },
                          "id": 454,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "874:61:3",
                          "trueExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 448,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 428,
                                "src": "916:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 450,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "923:5:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint8_$",
                                      "typeString": "type(uint8)"
                                    },
                                    "typeName": {
                                      "id": 449,
                                      "name": "uint8",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "923:5:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  }
                                ],
                                "id": 451,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "922:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint8_$",
                                  "typeString": "type(uint8)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_type$_t_uint8_$",
                                  "typeString": "type(uint8)"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 446,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "905:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 447,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "decode",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "905:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 452,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "905:25:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "functionReturnParameters": 424,
                        "id": 455,
                        "nodeType": "Return",
                        "src": "867:68:3"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 457,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeDecimals",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 421,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 420,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 457,
                        "src": "704:12:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$337",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 419,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 337,
                          "src": "704:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "703:14:3"
                  },
                  "returnParameters": {
                    "id": 424,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 423,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 457,
                        "src": "741:5:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 422,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "741:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "740:7:3"
                  },
                  "scope": 553,
                  "src": "682:261:3",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 502,
                    "nodeType": "Block",
                    "src": "1024:231:3",
                    "statements": [
                      {
                        "assignments": [
                          467,
                          469
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 467,
                            "mutability": "mutable",
                            "name": "success",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 502,
                            "src": "1036:12:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 466,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "1036:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 469,
                            "mutability": "mutable",
                            "name": "data",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 502,
                            "src": "1050:17:3",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 468,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "1050:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 482,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30786139303539636262",
                                  "id": 477,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1114:10:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2835717307_by_1",
                                    "typeString": "int_const 2835717307"
                                  },
                                  "value": "0xa9059cbb"
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 478,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 461,
                                  "src": "1126:2:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 479,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 463,
                                  "src": "1130:6:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_2835717307_by_1",
                                    "typeString": "int_const 2835717307"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 475,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "1091:3:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 476,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1091:22:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 480,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1091:46:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 472,
                                  "name": "token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 459,
                                  "src": "1079:5:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$337",
                                    "typeString": "contract IERC20"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IERC20_$337",
                                    "typeString": "contract IERC20"
                                  }
                                ],
                                "id": 471,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1071:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 470,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1071:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 473,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1071:14:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 474,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "call",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1071:19:3",
                            "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": 481,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1071:67:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1035:103:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 498,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 484,
                                "name": "success",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 467,
                                "src": "1157:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 496,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 488,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 485,
                                          "name": "data",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 469,
                                          "src": "1169:4:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        "id": 486,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "length",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "1169:11:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 487,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1184:1:3",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "1169:16:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "||",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 491,
                                          "name": "data",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 469,
                                          "src": "1200:4:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "components": [
                                            {
                                              "argumentTypes": null,
                                              "id": 493,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "1207:4:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_bool_$",
                                                "typeString": "type(bool)"
                                              },
                                              "typeName": {
                                                "id": 492,
                                                "name": "bool",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1207:4:3",
                                                "typeDescriptions": {
                                                  "typeIdentifier": null,
                                                  "typeString": null
                                                }
                                              }
                                            }
                                          ],
                                          "id": 494,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "1206:6:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_bool_$",
                                            "typeString": "type(bool)"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          },
                                          {
                                            "typeIdentifier": "t_type$_t_bool_$",
                                            "typeString": "type(bool)"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 489,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -1,
                                          "src": "1189:3:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 490,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "decode",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "1189:10:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                          "typeString": "function () pure"
                                        }
                                      },
                                      "id": 495,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1189:24:3",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "1169:44:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 497,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "1168:46:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "1157:57:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "426f72696e6745524332303a205472616e73666572206661696c6564",
                              "id": 499,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1216:30:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_1a3f0851ddc9e157ae96e52ed9dfd71a8cb4b1cf2a73b26b9f3f9e0aa9469d27",
                                "typeString": "literal_string \"BoringERC20: Transfer failed\""
                              },
                              "value": "BoringERC20: Transfer failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_1a3f0851ddc9e157ae96e52ed9dfd71a8cb4b1cf2a73b26b9f3f9e0aa9469d27",
                                "typeString": "literal_string \"BoringERC20: Transfer failed\""
                              }
                            ],
                            "id": 483,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1149:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 500,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1149:98:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 501,
                        "nodeType": "ExpressionStatement",
                        "src": "1149:98:3"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 503,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransfer",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 464,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 459,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 503,
                        "src": "973:12:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$337",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 458,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 337,
                          "src": "973:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 461,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 503,
                        "src": "987:10:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 460,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "987:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 463,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 503,
                        "src": "999:14:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 462,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "999:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "972:42:3"
                  },
                  "returnParameters": {
                    "id": 465,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1024:0:3"
                  },
                  "scope": 553,
                  "src": "951:304:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 551,
                    "nodeType": "Block",
                    "src": "1354:241:3",
                    "statements": [
                      {
                        "assignments": [
                          515,
                          517
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 515,
                            "mutability": "mutable",
                            "name": "success",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 551,
                            "src": "1366:12:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 514,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "1366:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 517,
                            "mutability": "mutable",
                            "name": "data",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 551,
                            "src": "1380:17:3",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 516,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "1380:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 531,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30783233623837326464",
                                  "id": 525,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1444:10:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_599290589_by_1",
                                    "typeString": "int_const 599290589"
                                  },
                                  "value": "0x23b872dd"
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 526,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 507,
                                  "src": "1456:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 527,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 509,
                                  "src": "1462:2:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 528,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 511,
                                  "src": "1466:6:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_599290589_by_1",
                                    "typeString": "int_const 599290589"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 523,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "1421:3:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 524,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1421:22:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 529,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1421:52:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 520,
                                  "name": "token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 505,
                                  "src": "1409:5:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$337",
                                    "typeString": "contract IERC20"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IERC20_$337",
                                    "typeString": "contract IERC20"
                                  }
                                ],
                                "id": 519,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1401:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 518,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1401:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 521,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1401:14:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 522,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "call",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1401:19:3",
                            "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": 530,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1401:73:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1365:109:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 547,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 533,
                                "name": "success",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 515,
                                "src": "1493:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 545,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 537,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 534,
                                          "name": "data",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 517,
                                          "src": "1505:4:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        "id": 535,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "length",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "1505:11:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 536,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1520:1:3",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "1505:16:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "||",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 540,
                                          "name": "data",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 517,
                                          "src": "1536:4:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "components": [
                                            {
                                              "argumentTypes": null,
                                              "id": 542,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "1543:4:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_bool_$",
                                                "typeString": "type(bool)"
                                              },
                                              "typeName": {
                                                "id": 541,
                                                "name": "bool",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1543:4:3",
                                                "typeDescriptions": {
                                                  "typeIdentifier": null,
                                                  "typeString": null
                                                }
                                              }
                                            }
                                          ],
                                          "id": 543,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "1542:6:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_bool_$",
                                            "typeString": "type(bool)"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          },
                                          {
                                            "typeIdentifier": "t_type$_t_bool_$",
                                            "typeString": "type(bool)"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 538,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -1,
                                          "src": "1525:3:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 539,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "decode",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "1525:10:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                          "typeString": "function () pure"
                                        }
                                      },
                                      "id": 544,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1525:24:3",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "1505:44:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 546,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "1504:46:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "1493:57:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "426f72696e6745524332303a205472616e7366657246726f6d206661696c6564",
                              "id": 548,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1552:34:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_dffd2f381f9235cb5927387124071d63a91c90f587c3edae76629d7dc4794f26",
                                "typeString": "literal_string \"BoringERC20: TransferFrom failed\""
                              },
                              "value": "BoringERC20: TransferFrom failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_dffd2f381f9235cb5927387124071d63a91c90f587c3edae76629d7dc4794f26",
                                "typeString": "literal_string \"BoringERC20: TransferFrom failed\""
                              }
                            ],
                            "id": 532,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1485:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 549,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1485:102:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 550,
                        "nodeType": "ExpressionStatement",
                        "src": "1485:102:3"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 552,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 512,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 505,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 552,
                        "src": "1289:12:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$337",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 504,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 337,
                          "src": "1289:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 507,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 552,
                        "src": "1303:12:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 506,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1303:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 509,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 552,
                        "src": "1317:10:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 508,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1317:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 511,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 552,
                        "src": "1329:14:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 510,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1329:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1288:56:3"
                  },
                  "returnParameters": {
                    "id": 513,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1354:0:3"
                  },
                  "scope": 553,
                  "src": "1263:332:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 554,
              "src": "105:1493:3"
            }
          ],
          "src": "40:1558:3"
        },
        "id": 3
      },
      "@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol": {
        "ast": {
          "absolutePath": "@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol",
          "exportedSymbols": {
            "BoringMath": [
              706
            ],
            "BoringMath128": [
              751
            ],
            "BoringMath32": [
              841
            ],
            "BoringMath64": [
              796
            ]
          },
          "id": 842,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 555,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:23:4"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": null,
              "fullyImplemented": true,
              "id": 706,
              "linearizedBaseContracts": [
                706
              ],
              "name": "BoringMath",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 576,
                    "nodeType": "Block",
                    "src": "280:56:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 572,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 569,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 565,
                                      "name": "c",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 562,
                                      "src": "290:1:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 568,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 566,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 557,
                                        "src": "294:1:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 567,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 559,
                                        "src": "298:1:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "294:5:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "290:9:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 570,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "289:11:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 571,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 559,
                                "src": "304:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "289:16:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "426f72696e674d6174683a20416464204f766572666c6f77",
                              "id": 573,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "307:26:4",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_77ffeda554f4c047bf45dac1a596ee270f922490aa5e98c6ba2b9599856e6fdf",
                                "typeString": "literal_string \"BoringMath: Add Overflow\""
                              },
                              "value": "BoringMath: Add Overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_77ffeda554f4c047bf45dac1a596ee270f922490aa5e98c6ba2b9599856e6fdf",
                                "typeString": "literal_string \"BoringMath: Add Overflow\""
                              }
                            ],
                            "id": 564,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "281:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 574,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "281:53:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 575,
                        "nodeType": "ExpressionStatement",
                        "src": "281:53:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 577,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "add",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 560,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 557,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 577,
                        "src": "224:9:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 556,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "224:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 559,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 577,
                        "src": "235:9:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 558,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "235:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "223:22:4"
                  },
                  "returnParameters": {
                    "id": 563,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 562,
                        "mutability": "mutable",
                        "name": "c",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 577,
                        "src": "269:9:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 561,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "269:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "268:11:4"
                  },
                  "scope": 706,
                  "src": "211:125:4",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 598,
                    "nodeType": "Block",
                    "src": "411:53:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 594,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 591,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 587,
                                      "name": "c",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 584,
                                      "src": "421:1:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 590,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 588,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 579,
                                        "src": "425:1:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 589,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 581,
                                        "src": "429:1:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "425:5:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "421:9:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 592,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "420:11:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 593,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 579,
                                "src": "435:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "420:16:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "426f72696e674d6174683a20556e646572666c6f77",
                              "id": 595,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "438:23:4",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_00354eeca4367367797d07bf5ab6743c0cc453fe689bbb72132c3c4e2b5612aa",
                                "typeString": "literal_string \"BoringMath: Underflow\""
                              },
                              "value": "BoringMath: Underflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_00354eeca4367367797d07bf5ab6743c0cc453fe689bbb72132c3c4e2b5612aa",
                                "typeString": "literal_string \"BoringMath: Underflow\""
                              }
                            ],
                            "id": 586,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "412:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 596,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "412:50:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 597,
                        "nodeType": "ExpressionStatement",
                        "src": "412:50:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 599,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "sub",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 582,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 579,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 599,
                        "src": "355:9:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 578,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "355:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 581,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 599,
                        "src": "366:9:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 580,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "366:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "354:22:4"
                  },
                  "returnParameters": {
                    "id": 585,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 584,
                        "mutability": "mutable",
                        "name": "c",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 599,
                        "src": "400:9:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 583,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "400:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "399:11:4"
                  },
                  "scope": 706,
                  "src": "342:122:4",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 626,
                    "nodeType": "Block",
                    "src": "539:68:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 622,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 611,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 609,
                                  "name": "b",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 603,
                                  "src": "548:1:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 610,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "553:1:4",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "548:6:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 621,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 619,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "components": [
                                      {
                                        "argumentTypes": null,
                                        "id": 616,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "argumentTypes": null,
                                          "id": 612,
                                          "name": "c",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 606,
                                          "src": "559:1:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 615,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 613,
                                            "name": "a",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 601,
                                            "src": "563:1:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "*",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "id": 614,
                                            "name": "b",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 603,
                                            "src": "567:1:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "563:5:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "559:9:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 617,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "558:11:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 618,
                                    "name": "b",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 603,
                                    "src": "570:1:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "558:13:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 620,
                                  "name": "a",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 601,
                                  "src": "575:1:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "558:18:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "548:28:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "426f72696e674d6174683a204d756c204f766572666c6f77",
                              "id": 623,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "578:26:4",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_efa2024ddfa13946089ac6325359d421926f574cb871587fa659a82734fa675e",
                                "typeString": "literal_string \"BoringMath: Mul Overflow\""
                              },
                              "value": "BoringMath: Mul Overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_efa2024ddfa13946089ac6325359d421926f574cb871587fa659a82734fa675e",
                                "typeString": "literal_string \"BoringMath: Mul Overflow\""
                              }
                            ],
                            "id": 608,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "540:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 624,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "540:65:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 625,
                        "nodeType": "ExpressionStatement",
                        "src": "540:65:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 627,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mul",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 604,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 601,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 627,
                        "src": "483:9:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 600,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "483:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 603,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 627,
                        "src": "494:9:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 602,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "494:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "482:22:4"
                  },
                  "returnParameters": {
                    "id": 607,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 606,
                        "mutability": "mutable",
                        "name": "c",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 627,
                        "src": "528:9:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 605,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "528:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "527:11:4"
                  },
                  "scope": 706,
                  "src": "470:137:4",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 652,
                    "nodeType": "Block",
                    "src": "673:101:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 641,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 635,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 629,
                                "src": "692:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 639,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "-",
                                    "prefix": true,
                                    "src": "705:2:4",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 638,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "706:1:4",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  ],
                                  "id": 637,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "697:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint128_$",
                                    "typeString": "type(uint128)"
                                  },
                                  "typeName": {
                                    "id": 636,
                                    "name": "uint128",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "697:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 640,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "697:11:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "src": "692:16:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "426f72696e674d6174683a2075696e74313238204f766572666c6f77",
                              "id": 642,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "710:30:4",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_64196137e15a5be4f7488ecfa918cfa26a6c2051ae3fb739c5de9bf8431fe9a5",
                                "typeString": "literal_string \"BoringMath: uint128 Overflow\""
                              },
                              "value": "BoringMath: uint128 Overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_64196137e15a5be4f7488ecfa918cfa26a6c2051ae3fb739c5de9bf8431fe9a5",
                                "typeString": "literal_string \"BoringMath: uint128 Overflow\""
                              }
                            ],
                            "id": 634,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "684:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 643,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "684:57:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 644,
                        "nodeType": "ExpressionStatement",
                        "src": "684:57:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 650,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 645,
                            "name": "c",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 632,
                            "src": "752:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 648,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 629,
                                "src": "764:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 647,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "756:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint128_$",
                                "typeString": "type(uint128)"
                              },
                              "typeName": {
                                "id": 646,
                                "name": "uint128",
                                "nodeType": "ElementaryTypeName",
                                "src": "756:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 649,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "756:10:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "src": "752:14:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "id": 651,
                        "nodeType": "ExpressionStatement",
                        "src": "752:14:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 653,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "to128",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 630,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 629,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 653,
                        "src": "628:9:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 628,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "628:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "627:11:4"
                  },
                  "returnParameters": {
                    "id": 633,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 632,
                        "mutability": "mutable",
                        "name": "c",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 653,
                        "src": "662:9:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 631,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "662:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "661:11:4"
                  },
                  "scope": 706,
                  "src": "613:161:4",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 678,
                    "nodeType": "Block",
                    "src": "838:98:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 667,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 661,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 655,
                                "src": "857:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 665,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "-",
                                    "prefix": true,
                                    "src": "869:2:4",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 664,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "870:1:4",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  ],
                                  "id": 663,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "862:6:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint64_$",
                                    "typeString": "type(uint64)"
                                  },
                                  "typeName": {
                                    "id": 662,
                                    "name": "uint64",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "862:6:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 666,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "862:10:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              "src": "857:15:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "426f72696e674d6174683a2075696e743634204f766572666c6f77",
                              "id": 668,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "874:29:4",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b3c33265b589f76cafa7df00c0a28addc9a2c2003a13a1e0e4b875f58eb08764",
                                "typeString": "literal_string \"BoringMath: uint64 Overflow\""
                              },
                              "value": "BoringMath: uint64 Overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b3c33265b589f76cafa7df00c0a28addc9a2c2003a13a1e0e4b875f58eb08764",
                                "typeString": "literal_string \"BoringMath: uint64 Overflow\""
                              }
                            ],
                            "id": 660,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "849:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 669,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "849:55:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 670,
                        "nodeType": "ExpressionStatement",
                        "src": "849:55:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 676,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 671,
                            "name": "c",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 658,
                            "src": "915:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 674,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 655,
                                "src": "926:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 673,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "919:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint64_$",
                                "typeString": "type(uint64)"
                              },
                              "typeName": {
                                "id": 672,
                                "name": "uint64",
                                "nodeType": "ElementaryTypeName",
                                "src": "919:6:4",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 675,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "919:9:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "src": "915:13:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "id": 677,
                        "nodeType": "ExpressionStatement",
                        "src": "915:13:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 679,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "to64",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 656,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 655,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 679,
                        "src": "794:9:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 654,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "794:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "793:11:4"
                  },
                  "returnParameters": {
                    "id": 659,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 658,
                        "mutability": "mutable",
                        "name": "c",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 679,
                        "src": "828:8:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 657,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "828:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "827:10:4"
                  },
                  "scope": 706,
                  "src": "780:156:4",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 704,
                    "nodeType": "Block",
                    "src": "1000:98:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 693,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 687,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 681,
                                "src": "1019:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 691,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "-",
                                    "prefix": true,
                                    "src": "1031:2:4",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 690,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1032:1:4",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  ],
                                  "id": 689,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1024:6:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint32_$",
                                    "typeString": "type(uint32)"
                                  },
                                  "typeName": {
                                    "id": 688,
                                    "name": "uint32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1024:6:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 692,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1024:10:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "src": "1019:15:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "426f72696e674d6174683a2075696e743332204f766572666c6f77",
                              "id": 694,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1036:29:4",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d8918cd18a3e78dc3bd01c63d310640381efda31e2d3ce751014519bc65013fc",
                                "typeString": "literal_string \"BoringMath: uint32 Overflow\""
                              },
                              "value": "BoringMath: uint32 Overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d8918cd18a3e78dc3bd01c63d310640381efda31e2d3ce751014519bc65013fc",
                                "typeString": "literal_string \"BoringMath: uint32 Overflow\""
                              }
                            ],
                            "id": 686,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1011:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 695,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1011:55:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 696,
                        "nodeType": "ExpressionStatement",
                        "src": "1011:55:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 702,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 697,
                            "name": "c",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 684,
                            "src": "1077:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 700,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 681,
                                "src": "1088:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 699,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1081:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint32_$",
                                "typeString": "type(uint32)"
                              },
                              "typeName": {
                                "id": 698,
                                "name": "uint32",
                                "nodeType": "ElementaryTypeName",
                                "src": "1081:6:4",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 701,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1081:9:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "1077:13:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "id": 703,
                        "nodeType": "ExpressionStatement",
                        "src": "1077:13:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 705,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "to32",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 682,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 681,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 705,
                        "src": "956:9:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 680,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "956:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "955:11:4"
                  },
                  "returnParameters": {
                    "id": 685,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 684,
                        "mutability": "mutable",
                        "name": "c",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 705,
                        "src": "990:8:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 683,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "990:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "989:10:4"
                  },
                  "scope": 706,
                  "src": "942:156:4",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 842,
              "src": "185:916:4"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": null,
              "fullyImplemented": true,
              "id": 751,
              "linearizedBaseContracts": [
                751
              ],
              "name": "BoringMath128",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 727,
                    "nodeType": "Block",
                    "src": "1203:56:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              },
                              "id": 723,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 720,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 716,
                                      "name": "c",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 713,
                                      "src": "1213:1:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      },
                                      "id": 719,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 717,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 708,
                                        "src": "1217:1:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 718,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 710,
                                        "src": "1221:1:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      },
                                      "src": "1217:5:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    },
                                    "src": "1213:9:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  }
                                ],
                                "id": 721,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "1212:11:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 722,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 710,
                                "src": "1227:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "src": "1212:16:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "426f72696e674d6174683a20416464204f766572666c6f77",
                              "id": 724,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1230:26:4",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_77ffeda554f4c047bf45dac1a596ee270f922490aa5e98c6ba2b9599856e6fdf",
                                "typeString": "literal_string \"BoringMath: Add Overflow\""
                              },
                              "value": "BoringMath: Add Overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_77ffeda554f4c047bf45dac1a596ee270f922490aa5e98c6ba2b9599856e6fdf",
                                "typeString": "literal_string \"BoringMath: Add Overflow\""
                              }
                            ],
                            "id": 715,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1204:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 725,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1204:53:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 726,
                        "nodeType": "ExpressionStatement",
                        "src": "1204:53:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 728,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "add",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 711,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 708,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 728,
                        "src": "1147:9:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 707,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "1147:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 710,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 728,
                        "src": "1158:9:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 709,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "1158:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1146:22:4"
                  },
                  "returnParameters": {
                    "id": 714,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 713,
                        "mutability": "mutable",
                        "name": "c",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 728,
                        "src": "1192:9:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 712,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "1192:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1191:11:4"
                  },
                  "scope": 751,
                  "src": "1134:125:4",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 749,
                    "nodeType": "Block",
                    "src": "1334:53:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              },
                              "id": 745,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 742,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 738,
                                      "name": "c",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 735,
                                      "src": "1344:1:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      },
                                      "id": 741,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 739,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 730,
                                        "src": "1348:1:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 740,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 732,
                                        "src": "1352:1:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      },
                                      "src": "1348:5:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    },
                                    "src": "1344:9:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  }
                                ],
                                "id": 743,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "1343:11:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 744,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 730,
                                "src": "1358:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "src": "1343:16:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "426f72696e674d6174683a20556e646572666c6f77",
                              "id": 746,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1361:23:4",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_00354eeca4367367797d07bf5ab6743c0cc453fe689bbb72132c3c4e2b5612aa",
                                "typeString": "literal_string \"BoringMath: Underflow\""
                              },
                              "value": "BoringMath: Underflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_00354eeca4367367797d07bf5ab6743c0cc453fe689bbb72132c3c4e2b5612aa",
                                "typeString": "literal_string \"BoringMath: Underflow\""
                              }
                            ],
                            "id": 737,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1335:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 747,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1335:50:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 748,
                        "nodeType": "ExpressionStatement",
                        "src": "1335:50:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 750,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "sub",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 733,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 730,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 750,
                        "src": "1278:9:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 729,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "1278:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 732,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 750,
                        "src": "1289:9:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 731,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "1289:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1277:22:4"
                  },
                  "returnParameters": {
                    "id": 736,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 735,
                        "mutability": "mutable",
                        "name": "c",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 750,
                        "src": "1323:9:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 734,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "1323:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1322:11:4"
                  },
                  "scope": 751,
                  "src": "1265:122:4",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 842,
              "src": "1105:285:4"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": null,
              "fullyImplemented": true,
              "id": 796,
              "linearizedBaseContracts": [
                796
              ],
              "name": "BoringMath64",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 772,
                    "nodeType": "Block",
                    "src": "1488:56:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              },
                              "id": 768,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 765,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 761,
                                      "name": "c",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 758,
                                      "src": "1498:1:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      },
                                      "id": 764,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 762,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 753,
                                        "src": "1502:1:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint64",
                                          "typeString": "uint64"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 763,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 755,
                                        "src": "1506:1:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint64",
                                          "typeString": "uint64"
                                        }
                                      },
                                      "src": "1502:5:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      }
                                    },
                                    "src": "1498:9:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  }
                                ],
                                "id": 766,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "1497:11:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 767,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 755,
                                "src": "1512:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              "src": "1497:16:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "426f72696e674d6174683a20416464204f766572666c6f77",
                              "id": 769,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1515:26:4",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_77ffeda554f4c047bf45dac1a596ee270f922490aa5e98c6ba2b9599856e6fdf",
                                "typeString": "literal_string \"BoringMath: Add Overflow\""
                              },
                              "value": "BoringMath: Add Overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_77ffeda554f4c047bf45dac1a596ee270f922490aa5e98c6ba2b9599856e6fdf",
                                "typeString": "literal_string \"BoringMath: Add Overflow\""
                              }
                            ],
                            "id": 760,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1489:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 770,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1489:53:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 771,
                        "nodeType": "ExpressionStatement",
                        "src": "1489:53:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 773,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "add",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 756,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 753,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 773,
                        "src": "1435:8:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 752,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "1435:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 755,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 773,
                        "src": "1445:8:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 754,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "1445:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1434:20:4"
                  },
                  "returnParameters": {
                    "id": 759,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 758,
                        "mutability": "mutable",
                        "name": "c",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 773,
                        "src": "1478:8:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 757,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "1478:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1477:10:4"
                  },
                  "scope": 796,
                  "src": "1422:122:4",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 794,
                    "nodeType": "Block",
                    "src": "1616:53:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              },
                              "id": 790,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 787,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 783,
                                      "name": "c",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 780,
                                      "src": "1626:1:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      },
                                      "id": 786,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 784,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 775,
                                        "src": "1630:1:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint64",
                                          "typeString": "uint64"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 785,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 777,
                                        "src": "1634:1:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint64",
                                          "typeString": "uint64"
                                        }
                                      },
                                      "src": "1630:5:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      }
                                    },
                                    "src": "1626:9:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  }
                                ],
                                "id": 788,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "1625:11:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 789,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 775,
                                "src": "1640:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              "src": "1625:16:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "426f72696e674d6174683a20556e646572666c6f77",
                              "id": 791,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1643:23:4",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_00354eeca4367367797d07bf5ab6743c0cc453fe689bbb72132c3c4e2b5612aa",
                                "typeString": "literal_string \"BoringMath: Underflow\""
                              },
                              "value": "BoringMath: Underflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_00354eeca4367367797d07bf5ab6743c0cc453fe689bbb72132c3c4e2b5612aa",
                                "typeString": "literal_string \"BoringMath: Underflow\""
                              }
                            ],
                            "id": 782,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1617:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 792,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1617:50:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 793,
                        "nodeType": "ExpressionStatement",
                        "src": "1617:50:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 795,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "sub",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 778,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 775,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 795,
                        "src": "1563:8:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 774,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "1563:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 777,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 795,
                        "src": "1573:8:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 776,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "1573:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1562:20:4"
                  },
                  "returnParameters": {
                    "id": 781,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 780,
                        "mutability": "mutable",
                        "name": "c",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 795,
                        "src": "1606:8:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 779,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "1606:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1605:10:4"
                  },
                  "scope": 796,
                  "src": "1550:119:4",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 842,
              "src": "1394:278:4"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": null,
              "fullyImplemented": true,
              "id": 841,
              "linearizedBaseContracts": [
                841
              ],
              "name": "BoringMath32",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 817,
                    "nodeType": "Block",
                    "src": "1770:56:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 813,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 810,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 806,
                                      "name": "c",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 803,
                                      "src": "1780:1:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      },
                                      "id": 809,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 807,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 798,
                                        "src": "1784:1:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 808,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 800,
                                        "src": "1788:1:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "src": "1784:5:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "src": "1780:9:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  }
                                ],
                                "id": 811,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "1779:11:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 812,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 800,
                                "src": "1794:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "src": "1779:16:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "426f72696e674d6174683a20416464204f766572666c6f77",
                              "id": 814,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1797:26:4",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_77ffeda554f4c047bf45dac1a596ee270f922490aa5e98c6ba2b9599856e6fdf",
                                "typeString": "literal_string \"BoringMath: Add Overflow\""
                              },
                              "value": "BoringMath: Add Overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_77ffeda554f4c047bf45dac1a596ee270f922490aa5e98c6ba2b9599856e6fdf",
                                "typeString": "literal_string \"BoringMath: Add Overflow\""
                              }
                            ],
                            "id": 805,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1771:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 815,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1771:53:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 816,
                        "nodeType": "ExpressionStatement",
                        "src": "1771:53:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 818,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "add",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 801,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 798,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 818,
                        "src": "1717:8:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 797,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1717:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 800,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 818,
                        "src": "1727:8:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 799,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1727:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1716:20:4"
                  },
                  "returnParameters": {
                    "id": 804,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 803,
                        "mutability": "mutable",
                        "name": "c",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 818,
                        "src": "1760:8:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 802,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1760:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1759:10:4"
                  },
                  "scope": 841,
                  "src": "1704:122:4",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 839,
                    "nodeType": "Block",
                    "src": "1898:53:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 835,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 832,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 828,
                                      "name": "c",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 825,
                                      "src": "1908:1:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      },
                                      "id": 831,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 829,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 820,
                                        "src": "1912:1:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 830,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 822,
                                        "src": "1916:1:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "src": "1912:5:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "src": "1908:9:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  }
                                ],
                                "id": 833,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "1907:11:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 834,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 820,
                                "src": "1922:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "src": "1907:16:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "426f72696e674d6174683a20556e646572666c6f77",
                              "id": 836,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1925:23:4",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_00354eeca4367367797d07bf5ab6743c0cc453fe689bbb72132c3c4e2b5612aa",
                                "typeString": "literal_string \"BoringMath: Underflow\""
                              },
                              "value": "BoringMath: Underflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_00354eeca4367367797d07bf5ab6743c0cc453fe689bbb72132c3c4e2b5612aa",
                                "typeString": "literal_string \"BoringMath: Underflow\""
                              }
                            ],
                            "id": 827,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1899:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 837,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1899:50:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 838,
                        "nodeType": "ExpressionStatement",
                        "src": "1899:50:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 840,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "sub",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 823,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 820,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 840,
                        "src": "1845:8:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 819,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1845:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 822,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 840,
                        "src": "1855:8:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 821,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1855:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1844:20:4"
                  },
                  "returnParameters": {
                    "id": 826,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 825,
                        "mutability": "mutable",
                        "name": "c",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 840,
                        "src": "1888:8:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 824,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1888:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1887:10:4"
                  },
                  "scope": 841,
                  "src": "1832:119:4",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 842,
              "src": "1676:278:4"
            }
          ],
          "src": "33:1921:4"
        },
        "id": 4
      },
      "contracts/GoldMinerV2.sol": {
        "ast": {
          "absolutePath": "contracts/GoldMinerV2.sol",
          "exportedSymbols": {
            "GoldMinerV2": [
              2091
            ],
            "IMigratorMiner": [
              858
            ]
          },
          "id": 2092,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 843,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:23:5"
            },
            {
              "id": 844,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "57:33:5"
            },
            {
              "absolutePath": "@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol",
              "file": "@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol",
              "id": 845,
              "nodeType": "ImportDirective",
              "scope": 2092,
              "sourceUnit": 842,
              "src": "92:74:5",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@boringcrypto/boring-solidity/contracts/BoringBatchable.sol",
              "file": "@boringcrypto/boring-solidity/contracts/BoringBatchable.sol",
              "id": 846,
              "nodeType": "ImportDirective",
              "scope": 2092,
              "sourceUnit": 146,
              "src": "167:69:5",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@boringcrypto/boring-solidity/contracts/BoringOwnable.sol",
              "file": "@boringcrypto/boring-solidity/contracts/BoringOwnable.sol",
              "id": 847,
              "nodeType": "ImportDirective",
              "scope": 2092,
              "sourceUnit": 272,
              "src": "237:67:5",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/libraries/SignedSafeMath.sol",
              "file": "./libraries/SignedSafeMath.sol",
              "id": 848,
              "nodeType": "ImportDirective",
              "scope": 2092,
              "sourceUnit": 3519,
              "src": "305:40:5",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IRewarder.sol",
              "file": "./interfaces/IRewarder.sol",
              "id": 849,
              "nodeType": "ImportDirective",
              "scope": 2092,
              "sourceUnit": 3321,
              "src": "346:36:5",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IGoldMiner.sol",
              "file": "./interfaces/IGoldMiner.sol",
              "id": 850,
              "nodeType": "ImportDirective",
              "scope": 2092,
              "sourceUnit": 3286,
              "src": "383:37:5",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 858,
              "linearizedBaseContracts": [
                858
              ],
              "name": "IMigratorMiner",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "ce5494bb",
                  "id": 857,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "migrate",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 853,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 852,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 857,
                        "src": "614:12:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$337",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 851,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 337,
                          "src": "614:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "613:14:5"
                  },
                  "returnParameters": {
                    "id": 856,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 855,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 857,
                        "src": "646:6:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$337",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 854,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 337,
                          "src": "646:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "645:8:5"
                  },
                  "scope": 858,
                  "src": "597:57:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 2092,
              "src": "422:234:5"
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 860,
                    "name": "BoringOwnable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 271,
                    "src": "1117:13:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BoringOwnable_$271",
                      "typeString": "contract BoringOwnable"
                    }
                  },
                  "id": 861,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1117:13:5"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 862,
                    "name": "BoringBatchable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 145,
                    "src": "1132:15:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BoringBatchable_$145",
                      "typeString": "contract BoringBatchable"
                    }
                  },
                  "id": 863,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1132:15:5"
                }
              ],
              "contractDependencies": [
                110,
                145,
                152,
                271
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 859,
                "nodeType": "StructuredDocumentation",
                "src": "658:435:5",
                "text": "@notice The (older) GoldMiner contract gives out a constant number of GOLN tokens per block.\n It is the only address with minting rights for GOLN.\n The idea for this GoldMiner V2 (MCV2) contract is therefore to be the owner of a dummy token\n that is deposited into the GoldMiner V1 (MCV1) contract.\n The allocation point for this pool on MCV1 is the total allocation point for all pools that receive double incentives."
              },
              "fullyImplemented": true,
              "id": 2091,
              "linearizedBaseContracts": [
                2091,
                145,
                110,
                271,
                152
              ],
              "name": "GoldMinerV2",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 866,
                  "libraryName": {
                    "contractScope": null,
                    "id": 864,
                    "name": "BoringMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 706,
                    "src": "1160:10:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BoringMath_$706",
                      "typeString": "library BoringMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1154:29:5",
                  "typeName": {
                    "id": 865,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1175:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "id": 869,
                  "libraryName": {
                    "contractScope": null,
                    "id": 867,
                    "name": "BoringMath128",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 751,
                    "src": "1194:13:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BoringMath128_$751",
                      "typeString": "library BoringMath128"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1188:32:5",
                  "typeName": {
                    "id": 868,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "1212:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  }
                },
                {
                  "id": 872,
                  "libraryName": {
                    "contractScope": null,
                    "id": 870,
                    "name": "BoringERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 553,
                    "src": "1231:11:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BoringERC20_$553",
                      "typeString": "library BoringERC20"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1225:29:5",
                  "typeName": {
                    "contractScope": null,
                    "id": 871,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 337,
                    "src": "1247:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$337",
                      "typeString": "contract IERC20"
                    }
                  }
                },
                {
                  "id": 875,
                  "libraryName": {
                    "contractScope": null,
                    "id": 873,
                    "name": "SignedSafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3518,
                    "src": "1265:14:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SignedSafeMath_$3518",
                      "typeString": "library SignedSafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1259:32:5",
                  "typeName": {
                    "id": 874,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1284:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  }
                },
                {
                  "canonicalName": "GoldMinerV2.UserInfo",
                  "id": 880,
                  "members": [
                    {
                      "constant": false,
                      "id": 877,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 880,
                      "src": "1481:14:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 876,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1481:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 879,
                      "mutability": "mutable",
                      "name": "rewardDebt",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 880,
                      "src": "1505:17:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 878,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1505:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "UserInfo",
                  "nodeType": "StructDefinition",
                  "scope": 2091,
                  "src": "1455:74:5",
                  "visibility": "public"
                },
                {
                  "canonicalName": "GoldMinerV2.PoolInfo",
                  "id": 887,
                  "members": [
                    {
                      "constant": false,
                      "id": 882,
                      "mutability": "mutable",
                      "name": "accGoldNuggetPerShare",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 887,
                      "src": "1742:29:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      },
                      "typeName": {
                        "id": 881,
                        "name": "uint128",
                        "nodeType": "ElementaryTypeName",
                        "src": "1742:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 884,
                      "mutability": "mutable",
                      "name": "lastRewardBlock",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 887,
                      "src": "1781:22:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      },
                      "typeName": {
                        "id": 883,
                        "name": "uint64",
                        "nodeType": "ElementaryTypeName",
                        "src": "1781:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 886,
                      "mutability": "mutable",
                      "name": "allocPoint",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 887,
                      "src": "1813:17:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      },
                      "typeName": {
                        "id": 885,
                        "name": "uint64",
                        "nodeType": "ElementaryTypeName",
                        "src": "1813:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "PoolInfo",
                  "nodeType": "StructDefinition",
                  "scope": 2091,
                  "src": "1716:121:5",
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 888,
                    "nodeType": "StructuredDocumentation",
                    "src": "1843:37:5",
                    "text": "@notice Address of MCV1 contract."
                  },
                  "functionSelector": "ecdad3fb",
                  "id": 890,
                  "mutability": "immutable",
                  "name": "GOLD_MINER",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2091,
                  "src": "1885:38:5",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IGoldMiner_$3285",
                    "typeString": "contract IGoldMiner"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 889,
                    "name": "IGoldMiner",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3285,
                    "src": "1885:10:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IGoldMiner_$3285",
                      "typeString": "contract IGoldMiner"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 891,
                    "nodeType": "StructuredDocumentation",
                    "src": "1929:37:5",
                    "text": "@notice Address of GOLN contract."
                  },
                  "functionSelector": "fe4fc140",
                  "id": 893,
                  "mutability": "immutable",
                  "name": "GOLN",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2091,
                  "src": "1971:28:5",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$337",
                    "typeString": "contract IERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 892,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 337,
                    "src": "1971:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$337",
                      "typeString": "contract IERC20"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 894,
                    "nodeType": "StructuredDocumentation",
                    "src": "2005:50:5",
                    "text": "@notice The index of MCV2 master pool in MCV1."
                  },
                  "functionSelector": "24fc3ea4",
                  "id": 896,
                  "mutability": "immutable",
                  "name": "GOLD_PID",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2091,
                  "src": "2060:33:5",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 895,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2060:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "7cd07e47",
                  "id": 898,
                  "mutability": "mutable",
                  "name": "migrator",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2091,
                  "src": "2204:30:5",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IMigratorMiner_$858",
                    "typeString": "contract IMigratorMiner"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 897,
                    "name": "IMigratorMiner",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 858,
                    "src": "2204:14:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IMigratorMiner_$858",
                      "typeString": "contract IMigratorMiner"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 899,
                    "nodeType": "StructuredDocumentation",
                    "src": "2241:35:5",
                    "text": "@notice Info of each MCV2 pool."
                  },
                  "functionSelector": "1526fe27",
                  "id": 902,
                  "mutability": "mutable",
                  "name": "poolInfo",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2091,
                  "src": "2281:26:5",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_PoolInfo_$887_storage_$dyn_storage",
                    "typeString": "struct GoldMinerV2.PoolInfo[]"
                  },
                  "typeName": {
                    "baseType": {
                      "contractScope": null,
                      "id": 900,
                      "name": "PoolInfo",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 887,
                      "src": "2281:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_PoolInfo_$887_storage_ptr",
                        "typeString": "struct GoldMinerV2.PoolInfo"
                      }
                    },
                    "id": 901,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "2281:10:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_PoolInfo_$887_storage_$dyn_storage_ptr",
                      "typeString": "struct GoldMinerV2.PoolInfo[]"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 903,
                    "nodeType": "StructuredDocumentation",
                    "src": "2313:55:5",
                    "text": "@notice Address of the LP token for each MCV2 pool."
                  },
                  "functionSelector": "78ed5d1f",
                  "id": 906,
                  "mutability": "mutable",
                  "name": "lpToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2091,
                  "src": "2373:23:5",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage",
                    "typeString": "contract IERC20[]"
                  },
                  "typeName": {
                    "baseType": {
                      "contractScope": null,
                      "id": 904,
                      "name": "IERC20",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 337,
                      "src": "2373:6:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20_$337",
                        "typeString": "contract IERC20"
                      }
                    },
                    "id": 905,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "2373:8:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage_ptr",
                      "typeString": "contract IERC20[]"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 907,
                    "nodeType": "StructuredDocumentation",
                    "src": "2402:57:5",
                    "text": "@notice Address of each `IRewarder` contract in MCV2."
                  },
                  "functionSelector": "c346253d",
                  "id": 910,
                  "mutability": "mutable",
                  "name": "rewarder",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2091,
                  "src": "2464:27:5",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_contract$_IRewarder_$3320_$dyn_storage",
                    "typeString": "contract IRewarder[]"
                  },
                  "typeName": {
                    "baseType": {
                      "contractScope": null,
                      "id": 908,
                      "name": "IRewarder",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 3320,
                      "src": "2464:9:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IRewarder_$3320",
                        "typeString": "contract IRewarder"
                      }
                    },
                    "id": 909,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "2464:11:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_contract$_IRewarder_$3320_$dyn_storage_ptr",
                      "typeString": "contract IRewarder[]"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 911,
                    "nodeType": "StructuredDocumentation",
                    "src": "2498:52:5",
                    "text": "@notice Info of each user that stakes LP tokens."
                  },
                  "functionSelector": "93f1a40b",
                  "id": 917,
                  "mutability": "mutable",
                  "name": "userInfo",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2091,
                  "src": "2555:66:5",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$880_storage_$_$",
                    "typeString": "mapping(uint256 => mapping(address => struct GoldMinerV2.UserInfo))"
                  },
                  "typeName": {
                    "id": 916,
                    "keyType": {
                      "id": 912,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2564:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2555:50:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$880_storage_$_$",
                      "typeString": "mapping(uint256 => mapping(address => struct GoldMinerV2.UserInfo))"
                    },
                    "valueType": {
                      "id": 915,
                      "keyType": {
                        "id": 913,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2584:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "2575:29:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$880_storage_$",
                        "typeString": "mapping(address => struct GoldMinerV2.UserInfo)"
                      },
                      "valueType": {
                        "contractScope": null,
                        "id": 914,
                        "name": "UserInfo",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 880,
                        "src": "2595:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                          "typeString": "struct GoldMinerV2.UserInfo"
                        }
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 918,
                    "nodeType": "StructuredDocumentation",
                    "src": "2627:88:5",
                    "text": "@dev Total allocation points. Must be the sum of all allocation points in all pools."
                  },
                  "functionSelector": "17caf6f1",
                  "id": 920,
                  "mutability": "mutable",
                  "name": "totalAllocPoint",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2091,
                  "src": "2720:30:5",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 919,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2720:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "id": 923,
                  "mutability": "constant",
                  "name": "GOLDMINER_GOLN_PER_BLOCK",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2091,
                  "src": "2757:56:5",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 921,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2757:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "31653230",
                    "id": 922,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2809:4:5",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_100000000000000000000_by_1",
                      "typeString": "int_const 100000000000000000000"
                    },
                    "value": "1e20"
                  },
                  "visibility": "private"
                },
                {
                  "constant": true,
                  "id": 926,
                  "mutability": "constant",
                  "name": "ACC_GOLN_PRECISION",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2091,
                  "src": "2819:50:5",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 924,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2819:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "31653132",
                    "id": 925,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2865:4:5",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1000000000000_by_1",
                      "typeString": "int_const 1000000000000"
                    },
                    "value": "1e12"
                  },
                  "visibility": "private"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 936,
                  "name": "Deposit",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 935,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 928,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 936,
                        "src": "2890:20:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 927,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2890:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 930,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 936,
                        "src": "2912:19:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 929,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2912:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 932,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 936,
                        "src": "2933:14:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 931,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2933:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 934,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 936,
                        "src": "2949:18:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 933,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2949:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2889:79:5"
                  },
                  "src": "2876:93:5"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 946,
                  "name": "Withdraw",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 945,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 938,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 946,
                        "src": "2989:20:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 937,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2989:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 940,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 946,
                        "src": "3011:19:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 939,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3011:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 942,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 946,
                        "src": "3032:14:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 941,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3032:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 944,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 946,
                        "src": "3048:18:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 943,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3048:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2988:79:5"
                  },
                  "src": "2974:94:5"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 956,
                  "name": "EmergencyWithdraw",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 955,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 948,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 956,
                        "src": "3097:20:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 947,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3097:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 950,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 956,
                        "src": "3119:19:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 949,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3119:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 952,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 956,
                        "src": "3140:14:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 951,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3140:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 954,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 956,
                        "src": "3156:18:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 953,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3156:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3096:79:5"
                  },
                  "src": "3073:103:5"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 964,
                  "name": "Harvest",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 963,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 958,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 964,
                        "src": "3195:20:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 957,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3195:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 960,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 964,
                        "src": "3217:19:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 959,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3217:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 962,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 964,
                        "src": "3238:14:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 961,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3238:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3194:59:5"
                  },
                  "src": "3181:73:5"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 974,
                  "name": "LogPoolAddition",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 973,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 966,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 974,
                        "src": "3281:19:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 965,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3281:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 968,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "allocPoint",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 974,
                        "src": "3302:18:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 967,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3302:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 970,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "lpToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 974,
                        "src": "3322:22:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$337",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 969,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 337,
                          "src": "3322:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 972,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "rewarder",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 974,
                        "src": "3346:26:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IRewarder_$3320",
                          "typeString": "contract IRewarder"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 971,
                          "name": "IRewarder",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 3320,
                          "src": "3346:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IRewarder_$3320",
                            "typeString": "contract IRewarder"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3280:93:5"
                  },
                  "src": "3259:115:5"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 984,
                  "name": "LogSetPool",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 983,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 976,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 984,
                        "src": "3396:19:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 975,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3396:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 978,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "allocPoint",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 984,
                        "src": "3417:18:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 977,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3417:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 980,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "rewarder",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 984,
                        "src": "3437:26:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IRewarder_$3320",
                          "typeString": "contract IRewarder"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 979,
                          "name": "IRewarder",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 3320,
                          "src": "3437:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IRewarder_$3320",
                            "typeString": "contract IRewarder"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 982,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "overwrite",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 984,
                        "src": "3465:14:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 981,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3465:4:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3395:85:5"
                  },
                  "src": "3379:102:5"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 994,
                  "name": "LogUpdatePool",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 993,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 986,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 994,
                        "src": "3506:19:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 985,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3506:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 988,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "lastRewardBlock",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 994,
                        "src": "3527:22:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 987,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "3527:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 990,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "lpSupply",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 994,
                        "src": "3551:16:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 989,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3551:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 992,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "accGoldNuggetPerShare",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 994,
                        "src": "3569:29:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 991,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3569:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3505:94:5"
                  },
                  "src": "3486:114:5"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 996,
                  "name": "LogInit",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 995,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3618:2:5"
                  },
                  "src": "3605:16:5"
                },
                {
                  "body": {
                    "id": 1018,
                    "nodeType": "Block",
                    "src": "3916:99:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1008,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1006,
                            "name": "GOLD_MINER",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 890,
                            "src": "3926:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IGoldMiner_$3285",
                              "typeString": "contract IGoldMiner"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1007,
                            "name": "_GOLD_MINER",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 999,
                            "src": "3939:11:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IGoldMiner_$3285",
                              "typeString": "contract IGoldMiner"
                            }
                          },
                          "src": "3926:24:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IGoldMiner_$3285",
                            "typeString": "contract IGoldMiner"
                          }
                        },
                        "id": 1009,
                        "nodeType": "ExpressionStatement",
                        "src": "3926:24:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1012,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1010,
                            "name": "GOLN",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 893,
                            "src": "3960:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1011,
                            "name": "_goldnugget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1001,
                            "src": "3967:11:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            }
                          },
                          "src": "3960:18:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "id": 1013,
                        "nodeType": "ExpressionStatement",
                        "src": "3960:18:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1016,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1014,
                            "name": "GOLD_PID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 896,
                            "src": "3988:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1015,
                            "name": "_GOLD_PID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1003,
                            "src": "3999:9:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3988:20:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1017,
                        "nodeType": "ExpressionStatement",
                        "src": "3988:20:5"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 997,
                    "nodeType": "StructuredDocumentation",
                    "src": "3627:202:5",
                    "text": "@param _GOLD_MINER The LuckySwap MCV1 contract address.\n @param _goldnugget The GOLN token contract address.\n @param _GOLD_PID The pool ID of the dummy token on the base MCV1 contract."
                  },
                  "id": 1019,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1004,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 999,
                        "mutability": "mutable",
                        "name": "_GOLD_MINER",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1019,
                        "src": "3846:22:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IGoldMiner_$3285",
                          "typeString": "contract IGoldMiner"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 998,
                          "name": "IGoldMiner",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 3285,
                          "src": "3846:10:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IGoldMiner_$3285",
                            "typeString": "contract IGoldMiner"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1001,
                        "mutability": "mutable",
                        "name": "_goldnugget",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1019,
                        "src": "3870:18:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$337",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 1000,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 337,
                          "src": "3870:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1003,
                        "mutability": "mutable",
                        "name": "_GOLD_PID",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1019,
                        "src": "3890:17:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1002,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3890:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3845:63:5"
                  },
                  "returnParameters": {
                    "id": 1005,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3916:0:5"
                  },
                  "scope": 2091,
                  "src": "3834:181:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1072,
                    "nodeType": "Block",
                    "src": "4469:338:5",
                    "statements": [
                      {
                        "assignments": [
                          1026
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1026,
                            "mutability": "mutable",
                            "name": "balance",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1072,
                            "src": "4479:15:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1025,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4479:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1032,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1029,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "4518:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1030,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4518:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1027,
                              "name": "dummyToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1022,
                              "src": "4497:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 1028,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 285,
                            "src": "4497:20:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 1031,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4497:32:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4479:50:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1036,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 1034,
                                "name": "balance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1026,
                                "src": "4547:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1035,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4558:1:5",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "4547:12:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "476f6c644d696e657256323a2042616c616e6365206d757374206578636565642030",
                              "id": 1037,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4561:36:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_3317c1cdb45089869bff038dd9b85ea67ccaae5d392232ff7638d8166430f4bf",
                                "typeString": "literal_string \"GoldMinerV2: Balance must exceed 0\""
                              },
                              "value": "GoldMinerV2: Balance must exceed 0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_3317c1cdb45089869bff038dd9b85ea67ccaae5d392232ff7638d8166430f4bf",
                                "typeString": "literal_string \"GoldMinerV2: Balance must exceed 0\""
                              }
                            ],
                            "id": 1033,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4539:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1038,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4539:59:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1039,
                        "nodeType": "ExpressionStatement",
                        "src": "4539:59:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1043,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "4636:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1044,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4636:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1047,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "4656:4:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_GoldMinerV2_$2091",
                                    "typeString": "contract GoldMinerV2"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_GoldMinerV2_$2091",
                                    "typeString": "contract GoldMinerV2"
                                  }
                                ],
                                "id": 1046,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4648:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1045,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4648:7:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 1048,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4648:13:5",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1049,
                              "name": "balance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1026,
                              "src": "4663:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1040,
                              "name": "dummyToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1022,
                              "src": "4608:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 1042,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 552,
                            "src": "4608:27:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$337_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$337_$",
                              "typeString": "function (contract IERC20,address,address,uint256)"
                            }
                          },
                          "id": 1050,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4608:63:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1051,
                        "nodeType": "ExpressionStatement",
                        "src": "4608:63:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1057,
                                  "name": "GOLD_MINER",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 890,
                                  "src": "4708:10:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IGoldMiner_$3285",
                                    "typeString": "contract IGoldMiner"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IGoldMiner_$3285",
                                    "typeString": "contract IGoldMiner"
                                  }
                                ],
                                "id": 1056,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4700:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1055,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4700:7:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 1058,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4700:19:5",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1059,
                              "name": "balance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1026,
                              "src": "4721:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1052,
                              "name": "dummyToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1022,
                              "src": "4681:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 1054,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "approve",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 303,
                            "src": "4681:18:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 1060,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4681:48:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1061,
                        "nodeType": "ExpressionStatement",
                        "src": "4681:48:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1065,
                              "name": "GOLD_PID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 896,
                              "src": "4758:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1066,
                              "name": "balance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1026,
                              "src": "4768:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1062,
                              "name": "GOLD_MINER",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 890,
                              "src": "4739:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IGoldMiner_$3285",
                                "typeString": "contract IGoldMiner"
                              }
                            },
                            "id": 1064,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "deposit",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3284,
                            "src": "4739:18:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256) external"
                            }
                          },
                          "id": 1067,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4739:37:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1068,
                        "nodeType": "ExpressionStatement",
                        "src": "4739:37:5"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 1069,
                            "name": "LogInit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 996,
                            "src": "4791:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 1070,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4791:9:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1071,
                        "nodeType": "EmitStatement",
                        "src": "4786:14:5"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1020,
                    "nodeType": "StructuredDocumentation",
                    "src": "4021:401:5",
                    "text": "@notice Deposits a dummy token to `GOLD_MINER` MCV1. This is required because MCV1 holds the minting rights for GOLN.\n Any balance of transaction sender in `dummyToken` is transferred.\n The allocation point for the pool on MCV1 is the total allocation point for all pools that receive double incentives.\n @param dummyToken The address of the ERC-20 token to deposit into MCV1."
                  },
                  "functionSelector": "19ab453c",
                  "id": 1073,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "init",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1023,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1022,
                        "mutability": "mutable",
                        "name": "dummyToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1073,
                        "src": "4441:17:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$337",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 1021,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 337,
                          "src": "4441:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4440:19:5"
                  },
                  "returnParameters": {
                    "id": 1024,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4469:0:5"
                  },
                  "scope": 2091,
                  "src": "4427:380:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 1084,
                    "nodeType": "Block",
                    "src": "4921:40:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1082,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1079,
                            "name": "pools",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1077,
                            "src": "4931:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1080,
                              "name": "poolInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 902,
                              "src": "4939:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_PoolInfo_$887_storage_$dyn_storage",
                                "typeString": "struct GoldMinerV2.PoolInfo storage ref[] storage ref"
                              }
                            },
                            "id": 1081,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4939:15:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4931:23:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1083,
                        "nodeType": "ExpressionStatement",
                        "src": "4931:23:5"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1074,
                    "nodeType": "StructuredDocumentation",
                    "src": "4813:45:5",
                    "text": "@notice Returns the number of MCV2 pools."
                  },
                  "functionSelector": "081e3eda",
                  "id": 1085,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "poolLength",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1075,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4882:2:5"
                  },
                  "returnParameters": {
                    "id": 1078,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1077,
                        "mutability": "mutable",
                        "name": "pools",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1085,
                        "src": "4906:13:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1076,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4906:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4905:15:5"
                  },
                  "scope": 2091,
                  "src": "4863:98:5",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1146,
                    "nodeType": "Block",
                    "src": "5381:446:5",
                    "statements": [
                      {
                        "assignments": [
                          1098
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1098,
                            "mutability": "mutable",
                            "name": "lastRewardBlock",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1146,
                            "src": "5391:23:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1097,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5391:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1101,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1099,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -4,
                            "src": "5417:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 1100,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "number",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5417:12:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5391:38:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1107,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1102,
                            "name": "totalAllocPoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 920,
                            "src": "5439:15:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1105,
                                "name": "allocPoint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1088,
                                "src": "5477:10:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1103,
                                "name": "totalAllocPoint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 920,
                                "src": "5457:15:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1104,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 577,
                              "src": "5457:19:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 1106,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5457:31:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5439:49:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1108,
                        "nodeType": "ExpressionStatement",
                        "src": "5439:49:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1112,
                              "name": "_lpToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1090,
                              "src": "5511:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1109,
                              "name": "lpToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 906,
                              "src": "5498:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage",
                                "typeString": "contract IERC20[] storage ref"
                              }
                            },
                            "id": 1111,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5498:12:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_contract$_IERC20_$337_$returns$__$",
                              "typeString": "function (contract IERC20)"
                            }
                          },
                          "id": 1113,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5498:22:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1114,
                        "nodeType": "ExpressionStatement",
                        "src": "5498:22:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1118,
                              "name": "_rewarder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1092,
                              "src": "5544:9:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IRewarder_$3320",
                                "typeString": "contract IRewarder"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IRewarder_$3320",
                                "typeString": "contract IRewarder"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1115,
                              "name": "rewarder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 910,
                              "src": "5530:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IRewarder_$3320_$dyn_storage",
                                "typeString": "contract IRewarder[] storage ref"
                              }
                            },
                            "id": 1117,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5530:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_contract$_IRewarder_$3320_$returns$__$",
                              "typeString": "function (contract IRewarder)"
                            }
                          },
                          "id": 1119,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5530:24:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1120,
                        "nodeType": "ExpressionStatement",
                        "src": "5530:24:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1125,
                                      "name": "allocPoint",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1088,
                                      "src": "5614:10:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 1126,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "to64",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 679,
                                    "src": "5614:15:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256) pure returns (uint64)"
                                    }
                                  },
                                  "id": 1127,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5614:17:5",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1128,
                                      "name": "lastRewardBlock",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1098,
                                      "src": "5662:15:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 1129,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "to64",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 679,
                                    "src": "5662:20:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256) pure returns (uint64)"
                                    }
                                  },
                                  "id": 1130,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5662:22:5",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 1131,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5721:1:5",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  },
                                  {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  },
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 1124,
                                "name": "PoolInfo",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 887,
                                "src": "5579:8:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_struct$_PoolInfo_$887_storage_ptr_$",
                                  "typeString": "type(struct GoldMinerV2.PoolInfo storage pointer)"
                                }
                              },
                              "id": 1132,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "structConstructorCall",
                              "lValueRequested": false,
                              "names": [
                                "allocPoint",
                                "lastRewardBlock",
                                "accGoldNuggetPerShare"
                              ],
                              "nodeType": "FunctionCall",
                              "src": "5579:154:5",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                                "typeString": "struct GoldMinerV2.PoolInfo memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                                "typeString": "struct GoldMinerV2.PoolInfo memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1121,
                              "name": "poolInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 902,
                              "src": "5565:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_PoolInfo_$887_storage_$dyn_storage",
                                "typeString": "struct GoldMinerV2.PoolInfo storage ref[] storage ref"
                              }
                            },
                            "id": 1123,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5565:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_struct$_PoolInfo_$887_storage_$returns$__$",
                              "typeString": "function (struct GoldMinerV2.PoolInfo storage ref)"
                            }
                          },
                          "id": 1133,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5565:169:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1134,
                        "nodeType": "ExpressionStatement",
                        "src": "5565:169:5"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 1139,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5784:1:5",
                                  "subdenomination": null,
                                  "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": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1136,
                                    "name": "lpToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 906,
                                    "src": "5765:7:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage",
                                      "typeString": "contract IERC20[] storage ref"
                                    }
                                  },
                                  "id": 1137,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "5765:14:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 1138,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 599,
                                "src": "5765:18:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 1140,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5765:21:5",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1141,
                              "name": "allocPoint",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1088,
                              "src": "5788:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1142,
                              "name": "_lpToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1090,
                              "src": "5800:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1143,
                              "name": "_rewarder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1092,
                              "src": "5810:9:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IRewarder_$3320",
                                "typeString": "contract IRewarder"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              },
                              {
                                "typeIdentifier": "t_contract$_IRewarder_$3320",
                                "typeString": "contract IRewarder"
                              }
                            ],
                            "id": 1135,
                            "name": "LogPoolAddition",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 974,
                            "src": "5749:15:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_contract$_IERC20_$337_$_t_contract$_IRewarder_$3320_$returns$__$",
                              "typeString": "function (uint256,uint256,contract IERC20,contract IRewarder)"
                            }
                          },
                          "id": 1144,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5749:71:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1145,
                        "nodeType": "EmitStatement",
                        "src": "5744:76:5"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1086,
                    "nodeType": "StructuredDocumentation",
                    "src": "4967:321:5",
                    "text": "@notice Add a new LP to the pool. Can only be called by the owner.\n DO NOT add the same LP token more than once. Rewards will be messed up if you do.\n @param allocPoint AP of the new pool.\n @param _lpToken Address of the LP ERC-20 token.\n @param _rewarder Address of the rewarder delegate."
                  },
                  "functionSelector": "ab7de098",
                  "id": 1147,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 1095,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 1094,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 270,
                        "src": "5371:9:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5371:9:5"
                    }
                  ],
                  "name": "add",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1093,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1088,
                        "mutability": "mutable",
                        "name": "allocPoint",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1147,
                        "src": "5306:18:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1087,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5306:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1090,
                        "mutability": "mutable",
                        "name": "_lpToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1147,
                        "src": "5326:15:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$337",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 1089,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 337,
                          "src": "5326:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1092,
                        "mutability": "mutable",
                        "name": "_rewarder",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1147,
                        "src": "5343:19:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IRewarder_$3320",
                          "typeString": "contract IRewarder"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 1091,
                          "name": "IRewarder",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 3320,
                          "src": "5343:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IRewarder_$3320",
                            "typeString": "contract IRewarder"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5305:58:5"
                  },
                  "returnParameters": {
                    "id": 1096,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5381:0:5"
                  },
                  "scope": 2091,
                  "src": "5293:534:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1204,
                    "nodeType": "Block",
                    "src": "6315:304:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1172,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1161,
                            "name": "totalAllocPoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 920,
                            "src": "6325:15:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1170,
                                "name": "_allocPoint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1152,
                                "src": "6394:11:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 1164,
                                        "name": "poolInfo",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 902,
                                        "src": "6363:8:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_PoolInfo_$887_storage_$dyn_storage",
                                          "typeString": "struct GoldMinerV2.PoolInfo storage ref[] storage ref"
                                        }
                                      },
                                      "id": 1166,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 1165,
                                        "name": "_pid",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1150,
                                        "src": "6372:4:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "6363:14:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PoolInfo_$887_storage",
                                        "typeString": "struct GoldMinerV2.PoolInfo storage ref"
                                      }
                                    },
                                    "id": 1167,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "allocPoint",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 886,
                                    "src": "6363:25:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1162,
                                    "name": "totalAllocPoint",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 920,
                                    "src": "6343:15:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 1163,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sub",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 599,
                                  "src": "6343:19:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 1168,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6343:46:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1169,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 577,
                              "src": "6343:50:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 1171,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6343:63:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6325:81:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1173,
                        "nodeType": "ExpressionStatement",
                        "src": "6325:81:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1181,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1174,
                                "name": "poolInfo",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 902,
                                "src": "6416:8:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_PoolInfo_$887_storage_$dyn_storage",
                                  "typeString": "struct GoldMinerV2.PoolInfo storage ref[] storage ref"
                                }
                              },
                              "id": 1176,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1175,
                                "name": "_pid",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1150,
                                "src": "6425:4:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "6416:14:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$887_storage",
                                "typeString": "struct GoldMinerV2.PoolInfo storage ref"
                              }
                            },
                            "id": 1177,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "allocPoint",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 886,
                            "src": "6416:25:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1178,
                                "name": "_allocPoint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1152,
                                "src": "6444:11:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1179,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "to64",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 679,
                              "src": "6444:16:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256) pure returns (uint64)"
                              }
                            },
                            "id": 1180,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6444:18:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "src": "6416:46:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "id": 1182,
                        "nodeType": "ExpressionStatement",
                        "src": "6416:46:5"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 1183,
                          "name": "overwrite",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1156,
                          "src": "6476:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1191,
                        "nodeType": "IfStatement",
                        "src": "6472:46:5",
                        "trueBody": {
                          "id": 1190,
                          "nodeType": "Block",
                          "src": "6487:31:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1188,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 1184,
                                    "name": "rewarder",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 910,
                                    "src": "6489:8:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_contract$_IRewarder_$3320_$dyn_storage",
                                      "typeString": "contract IRewarder[] storage ref"
                                    }
                                  },
                                  "id": 1186,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 1185,
                                    "name": "_pid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1150,
                                    "src": "6498:4:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "6489:14:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IRewarder_$3320",
                                    "typeString": "contract IRewarder"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 1187,
                                  "name": "_rewarder",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1154,
                                  "src": "6506:9:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IRewarder_$3320",
                                    "typeString": "contract IRewarder"
                                  }
                                },
                                "src": "6489:26:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IRewarder_$3320",
                                  "typeString": "contract IRewarder"
                                }
                              },
                              "id": 1189,
                              "nodeType": "ExpressionStatement",
                              "src": "6489:26:5"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1193,
                              "name": "_pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1150,
                              "src": "6543:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1194,
                              "name": "_allocPoint",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1152,
                              "src": "6549:11:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "condition": {
                                "argumentTypes": null,
                                "id": 1195,
                                "name": "overwrite",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1156,
                                "src": "6562:9:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1197,
                                  "name": "rewarder",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 910,
                                  "src": "6586:8:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_contract$_IRewarder_$3320_$dyn_storage",
                                    "typeString": "contract IRewarder[] storage ref"
                                  }
                                },
                                "id": 1199,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1198,
                                  "name": "_pid",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1150,
                                  "src": "6595:4:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6586:14:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IRewarder_$3320",
                                  "typeString": "contract IRewarder"
                                }
                              },
                              "id": 1200,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "Conditional",
                              "src": "6562:38:5",
                              "trueExpression": {
                                "argumentTypes": null,
                                "id": 1196,
                                "name": "_rewarder",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1154,
                                "src": "6574:9:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IRewarder_$3320",
                                  "typeString": "contract IRewarder"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IRewarder_$3320",
                                "typeString": "contract IRewarder"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1201,
                              "name": "overwrite",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1156,
                              "src": "6602:9:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_contract$_IRewarder_$3320",
                                "typeString": "contract IRewarder"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 1192,
                            "name": "LogSetPool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 984,
                            "src": "6532:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_contract$_IRewarder_$3320_$_t_bool_$returns$__$",
                              "typeString": "function (uint256,uint256,contract IRewarder,bool)"
                            }
                          },
                          "id": 1202,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6532:80:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1203,
                        "nodeType": "EmitStatement",
                        "src": "6527:85:5"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1148,
                    "nodeType": "StructuredDocumentation",
                    "src": "5833:375:5",
                    "text": "@notice Update the given pool's GOLN allocation point and `IRewarder` contract. Can only be called by the owner.\n @param _pid The index of the pool. See `poolInfo`.\n @param _allocPoint New AP of the pool.\n @param _rewarder Address of the rewarder delegate.\n @param overwrite True if _rewarder should be `set`. Otherwise `_rewarder` is ignored."
                  },
                  "functionSelector": "88bba42f",
                  "id": 1205,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 1159,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 1158,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 270,
                        "src": "6305:9:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "6305:9:5"
                    }
                  ],
                  "name": "set",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1157,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1150,
                        "mutability": "mutable",
                        "name": "_pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1205,
                        "src": "6226:12:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1149,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6226:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1152,
                        "mutability": "mutable",
                        "name": "_allocPoint",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1205,
                        "src": "6240:19:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1151,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6240:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1154,
                        "mutability": "mutable",
                        "name": "_rewarder",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1205,
                        "src": "6261:19:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IRewarder_$3320",
                          "typeString": "contract IRewarder"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 1153,
                          "name": "IRewarder",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 3320,
                          "src": "6261:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IRewarder_$3320",
                            "typeString": "contract IRewarder"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1156,
                        "mutability": "mutable",
                        "name": "overwrite",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1205,
                        "src": "6282:14:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1155,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6282:4:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6225:72:5"
                  },
                  "returnParameters": {
                    "id": 1160,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6315:0:5"
                  },
                  "scope": 2091,
                  "src": "6213:406:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1217,
                    "nodeType": "Block",
                    "src": "6821:37:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1215,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1213,
                            "name": "migrator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 898,
                            "src": "6831:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMigratorMiner_$858",
                              "typeString": "contract IMigratorMiner"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1214,
                            "name": "_migrator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1208,
                            "src": "6842:9:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMigratorMiner_$858",
                              "typeString": "contract IMigratorMiner"
                            }
                          },
                          "src": "6831:20:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMigratorMiner_$858",
                            "typeString": "contract IMigratorMiner"
                          }
                        },
                        "id": 1216,
                        "nodeType": "ExpressionStatement",
                        "src": "6831:20:5"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1206,
                    "nodeType": "StructuredDocumentation",
                    "src": "6625:127:5",
                    "text": "@notice Set the `migrator` contract. Can only be called by the owner.\n @param _migrator The contract address to set."
                  },
                  "functionSelector": "23cf3118",
                  "id": 1218,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 1211,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 1210,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 270,
                        "src": "6811:9:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "6811:9:5"
                    }
                  ],
                  "name": "setMigrator",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1209,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1208,
                        "mutability": "mutable",
                        "name": "_migrator",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1218,
                        "src": "6778:24:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IMigratorMiner_$858",
                          "typeString": "contract IMigratorMiner"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 1207,
                          "name": "IMigratorMiner",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 858,
                          "src": "6778:14:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMigratorMiner_$858",
                            "typeString": "contract IMigratorMiner"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6777:26:5"
                  },
                  "returnParameters": {
                    "id": 1212,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6821:0:5"
                  },
                  "scope": 2091,
                  "src": "6757:101:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1289,
                    "nodeType": "Block",
                    "src": "7050:434:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1233,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1227,
                                    "name": "migrator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 898,
                                    "src": "7076:8:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IMigratorMiner_$858",
                                      "typeString": "contract IMigratorMiner"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_IMigratorMiner_$858",
                                      "typeString": "contract IMigratorMiner"
                                    }
                                  ],
                                  "id": 1226,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7068:7:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1225,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7068:7:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 1228,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7068:17:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 1231,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7097:1:5",
                                    "subdenomination": null,
                                    "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": 1230,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7089:7:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1229,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7089:7:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 1232,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7089:10:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "7068:31:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "476f6c644d696e657256323a206e6f206d69677261746f7220736574",
                              "id": 1234,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7101:30:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9d04c574879bdb3f838197153a8fcc3b91ac7992b8a1dec456cef85dbe5c83c3",
                                "typeString": "literal_string \"GoldMinerV2: no migrator set\""
                              },
                              "value": "GoldMinerV2: no migrator set"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9d04c574879bdb3f838197153a8fcc3b91ac7992b8a1dec456cef85dbe5c83c3",
                                "typeString": "literal_string \"GoldMinerV2: no migrator set\""
                              }
                            ],
                            "id": 1224,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7060:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1235,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7060:72:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1236,
                        "nodeType": "ExpressionStatement",
                        "src": "7060:72:5"
                      },
                      {
                        "assignments": [
                          1238
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1238,
                            "mutability": "mutable",
                            "name": "_lpToken",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1289,
                            "src": "7142:15:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1237,
                              "name": "IERC20",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 337,
                              "src": "7142:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1242,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1239,
                            "name": "lpToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 906,
                            "src": "7160:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage",
                              "typeString": "contract IERC20[] storage ref"
                            }
                          },
                          "id": 1241,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1240,
                            "name": "_pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1221,
                            "src": "7168:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "7160:13:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7142:31:5"
                      },
                      {
                        "assignments": [
                          1244
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1244,
                            "mutability": "mutable",
                            "name": "bal",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1289,
                            "src": "7183:11:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1243,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7183:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1252,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1249,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "7224:4:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_GoldMinerV2_$2091",
                                    "typeString": "contract GoldMinerV2"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_GoldMinerV2_$2091",
                                    "typeString": "contract GoldMinerV2"
                                  }
                                ],
                                "id": 1248,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "7216:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1247,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7216:7:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 1250,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7216:13:5",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1245,
                              "name": "_lpToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1238,
                              "src": "7197:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 1246,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 285,
                            "src": "7197:18:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 1251,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7197:33:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7183:47:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1258,
                                  "name": "migrator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 898,
                                  "src": "7265:8:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IMigratorMiner_$858",
                                    "typeString": "contract IMigratorMiner"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IMigratorMiner_$858",
                                    "typeString": "contract IMigratorMiner"
                                  }
                                ],
                                "id": 1257,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "7257:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1256,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7257:7:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 1259,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7257:17:5",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1260,
                              "name": "bal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1244,
                              "src": "7276:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1253,
                              "name": "_lpToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1238,
                              "src": "7240:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 1255,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "approve",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 303,
                            "src": "7240:16:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 1261,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7240:40:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1262,
                        "nodeType": "ExpressionStatement",
                        "src": "7240:40:5"
                      },
                      {
                        "assignments": [
                          1264
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1264,
                            "mutability": "mutable",
                            "name": "newLpToken",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1289,
                            "src": "7290:17:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1263,
                              "name": "IERC20",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 337,
                              "src": "7290:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1269,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1267,
                              "name": "_lpToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1238,
                              "src": "7327:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1265,
                              "name": "migrator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 898,
                              "src": "7310:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IMigratorMiner_$858",
                                "typeString": "contract IMigratorMiner"
                              }
                            },
                            "id": 1266,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "migrate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 857,
                            "src": "7310:16:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IERC20_$337_$returns$_t_contract$_IERC20_$337_$",
                              "typeString": "function (contract IERC20) external returns (contract IERC20)"
                            }
                          },
                          "id": 1268,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7310:26:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7290:46:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1279,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 1271,
                                "name": "bal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1244,
                                "src": "7354:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1276,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "7390:4:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_GoldMinerV2_$2091",
                                          "typeString": "contract GoldMinerV2"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_GoldMinerV2_$2091",
                                          "typeString": "contract GoldMinerV2"
                                        }
                                      ],
                                      "id": 1275,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "7382:7:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 1274,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "7382:7:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 1277,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7382:13:5",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1272,
                                    "name": "newLpToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1264,
                                    "src": "7361:10:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$337",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 1273,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "balanceOf",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 285,
                                  "src": "7361:20:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address) view external returns (uint256)"
                                  }
                                },
                                "id": 1278,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7361:35:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7354:42:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "476f6c644d696e657256323a206d696772617465642062616c616e6365206d757374206d61746368",
                              "id": 1280,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7398:42:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_feb7ece8af2b4b45eb85d609559704471d2bb79ce204f7a188fdc0b7890f6301",
                                "typeString": "literal_string \"GoldMinerV2: migrated balance must match\""
                              },
                              "value": "GoldMinerV2: migrated balance must match"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_feb7ece8af2b4b45eb85d609559704471d2bb79ce204f7a188fdc0b7890f6301",
                                "typeString": "literal_string \"GoldMinerV2: migrated balance must match\""
                              }
                            ],
                            "id": 1270,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7346:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1281,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7346:95:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1282,
                        "nodeType": "ExpressionStatement",
                        "src": "7346:95:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1287,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1283,
                              "name": "lpToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 906,
                              "src": "7451:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage",
                                "typeString": "contract IERC20[] storage ref"
                              }
                            },
                            "id": 1285,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1284,
                              "name": "_pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1221,
                              "src": "7459:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "7451:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1286,
                            "name": "newLpToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1264,
                            "src": "7467:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            }
                          },
                          "src": "7451:26:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "id": 1288,
                        "nodeType": "ExpressionStatement",
                        "src": "7451:26:5"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1219,
                    "nodeType": "StructuredDocumentation",
                    "src": "6864:143:5",
                    "text": "@notice Migrate LP token to another LP contract through the `migrator` contract.\n @param _pid The index of the pool. See `poolInfo`."
                  },
                  "functionSelector": "454b0608",
                  "id": 1290,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "migrate",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1222,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1221,
                        "mutability": "mutable",
                        "name": "_pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1290,
                        "src": "7029:12:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1220,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7029:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7028:14:5"
                  },
                  "returnParameters": {
                    "id": 1223,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7050:0:5"
                  },
                  "scope": 2091,
                  "src": "7012:472:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1396,
                    "nodeType": "Block",
                    "src": "7800:739:5",
                    "statements": [
                      {
                        "assignments": [
                          1301
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1301,
                            "mutability": "mutable",
                            "name": "pool",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1396,
                            "src": "7810:20:5",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                              "typeString": "struct GoldMinerV2.PoolInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1300,
                              "name": "PoolInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 887,
                              "src": "7810:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$887_storage_ptr",
                                "typeString": "struct GoldMinerV2.PoolInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1305,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1302,
                            "name": "poolInfo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 902,
                            "src": "7833:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_PoolInfo_$887_storage_$dyn_storage",
                              "typeString": "struct GoldMinerV2.PoolInfo storage ref[] storage ref"
                            }
                          },
                          "id": 1304,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1303,
                            "name": "_pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1293,
                            "src": "7842:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "7833:14:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$887_storage",
                            "typeString": "struct GoldMinerV2.PoolInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7810:37:5"
                      },
                      {
                        "assignments": [
                          1307
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1307,
                            "mutability": "mutable",
                            "name": "user",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1396,
                            "src": "7857:21:5",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                              "typeString": "struct GoldMinerV2.UserInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1306,
                              "name": "UserInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 880,
                              "src": "7857:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                "typeString": "struct GoldMinerV2.UserInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1313,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1308,
                              "name": "userInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 917,
                              "src": "7881:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$880_storage_$_$",
                                "typeString": "mapping(uint256 => mapping(address => struct GoldMinerV2.UserInfo storage ref))"
                              }
                            },
                            "id": 1310,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1309,
                              "name": "_pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1293,
                              "src": "7890:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7881:14:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$880_storage_$",
                              "typeString": "mapping(address => struct GoldMinerV2.UserInfo storage ref)"
                            }
                          },
                          "id": 1312,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1311,
                            "name": "_user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1295,
                            "src": "7896:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "7881:21:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$880_storage",
                            "typeString": "struct GoldMinerV2.UserInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7857:45:5"
                      },
                      {
                        "assignments": [
                          1315
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1315,
                            "mutability": "mutable",
                            "name": "accGoldNuggetPerShare",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1396,
                            "src": "7912:29:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1314,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7912:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1318,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1316,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1301,
                            "src": "7944:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                              "typeString": "struct GoldMinerV2.PoolInfo memory"
                            }
                          },
                          "id": 1317,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "accGoldNuggetPerShare",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 882,
                          "src": "7944:26:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7912:58:5"
                      },
                      {
                        "assignments": [
                          1320
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1320,
                            "mutability": "mutable",
                            "name": "lpSupply",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1396,
                            "src": "7980:16:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1319,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7980:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1330,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1327,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "8031:4:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_GoldMinerV2_$2091",
                                    "typeString": "contract GoldMinerV2"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_GoldMinerV2_$2091",
                                    "typeString": "contract GoldMinerV2"
                                  }
                                ],
                                "id": 1326,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "8023:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1325,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "8023:7:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 1328,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8023:13:5",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1321,
                                "name": "lpToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 906,
                                "src": "7999:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage",
                                  "typeString": "contract IERC20[] storage ref"
                                }
                              },
                              "id": 1323,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1322,
                                "name": "_pid",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1293,
                                "src": "8007:4:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7999:13:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 1324,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 285,
                            "src": "7999:23:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 1329,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7999:38:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7980:57:5"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 1339,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1335,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1331,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "8051:5:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 1332,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "number",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "8051:12:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1333,
                                "name": "pool",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1301,
                                "src": "8066:4:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                                  "typeString": "struct GoldMinerV2.PoolInfo memory"
                                }
                              },
                              "id": 1334,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "lastRewardBlock",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 884,
                              "src": "8066:20:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "src": "8051:35:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1338,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1336,
                              "name": "lpSupply",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1320,
                              "src": "8090:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 1337,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8102:1:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "8090:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "8051:52:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1376,
                        "nodeType": "IfStatement",
                        "src": "8047:366:5",
                        "trueBody": {
                          "id": 1375,
                          "nodeType": "Block",
                          "src": "8105:308:5",
                          "statements": [
                            {
                              "assignments": [
                                1341
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1341,
                                  "mutability": "mutable",
                                  "name": "blocks",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 1375,
                                  "src": "8119:14:5",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 1340,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8119:7:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1348,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1345,
                                      "name": "pool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1301,
                                      "src": "8153:4:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                                        "typeString": "struct GoldMinerV2.PoolInfo memory"
                                      }
                                    },
                                    "id": 1346,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "lastRewardBlock",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 884,
                                    "src": "8153:20:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1342,
                                      "name": "block",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -4,
                                      "src": "8136:5:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_block",
                                        "typeString": "block"
                                      }
                                    },
                                    "id": 1343,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "number",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "8136:12:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 1344,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sub",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 599,
                                  "src": "8136:16:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 1347,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8136:38:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "8119:55:5"
                            },
                            {
                              "assignments": [
                                1350
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1350,
                                  "mutability": "mutable",
                                  "name": "goldnuggetReward",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 1375,
                                  "src": "8188:24:5",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 1349,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8188:7:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1362,
                              "initialValue": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1361,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1357,
                                        "name": "pool",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1301,
                                        "src": "8252:4:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                                          "typeString": "struct GoldMinerV2.PoolInfo memory"
                                        }
                                      },
                                      "id": 1358,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "allocPoint",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 886,
                                      "src": "8252:15:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "arguments": [],
                                          "expression": {
                                            "argumentTypes": [],
                                            "id": 1353,
                                            "name": "goldnuggetPerBlock",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1453,
                                            "src": "8226:18:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                              "typeString": "function () view returns (uint256)"
                                            }
                                          },
                                          "id": 1354,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "8226:20:5",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1351,
                                          "name": "blocks",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1341,
                                          "src": "8215:6:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 1352,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 627,
                                        "src": "8215:10:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 1355,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "8215:32:5",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 1356,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 627,
                                    "src": "8215:36:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 1359,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8215:53:5",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 1360,
                                  "name": "totalAllocPoint",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 920,
                                  "src": "8271:15:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8215:71:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "8188:98:5"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1373,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 1363,
                                  "name": "accGoldNuggetPerShare",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1315,
                                  "src": "8300:21:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 1371,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 1368,
                                            "name": "ACC_GOLN_PRECISION",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 926,
                                            "src": "8371:18:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 1366,
                                            "name": "goldnuggetReward",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1350,
                                            "src": "8350:16:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 1367,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "mul",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 627,
                                          "src": "8350:20:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 1369,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8350:40:5",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "/",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 1370,
                                        "name": "lpSupply",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1320,
                                        "src": "8393:8:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "8350:51:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1364,
                                      "name": "accGoldNuggetPerShare",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1315,
                                      "src": "8324:21:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 1365,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 577,
                                    "src": "8324:25:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 1372,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8324:78:5",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8300:102:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1374,
                              "nodeType": "ExpressionStatement",
                              "src": "8300:102:5"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1394,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1377,
                            "name": "pending",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1298,
                            "src": "8422:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1389,
                                      "name": "user",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1307,
                                      "src": "8504:4:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                        "typeString": "struct GoldMinerV2.UserInfo storage pointer"
                                      }
                                    },
                                    "id": 1390,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "rewardDebt",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 879,
                                    "src": "8504:15:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 1386,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 1383,
                                              "name": "accGoldNuggetPerShare",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1315,
                                              "src": "8455:21:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 1380,
                                                "name": "user",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1307,
                                                "src": "8439:4:5",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                                  "typeString": "struct GoldMinerV2.UserInfo storage pointer"
                                                }
                                              },
                                              "id": 1381,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "amount",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 877,
                                              "src": "8439:11:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 1382,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "mul",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 627,
                                            "src": "8439:15:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                          },
                                          "id": 1384,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "8439:38:5",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "/",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 1385,
                                          "name": "ACC_GOLN_PRECISION",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 926,
                                          "src": "8480:18:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "8439:59:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 1379,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "8432:6:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_int256_$",
                                        "typeString": "type(int256)"
                                      },
                                      "typeName": {
                                        "id": 1378,
                                        "name": "int256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "8432:6:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 1387,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8432:67:5",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "id": 1388,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sub",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3457,
                                  "src": "8432:71:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                    "typeString": "function (int256,int256) pure returns (int256)"
                                  }
                                },
                                "id": 1391,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8432:88:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "id": 1392,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "toUInt256",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3517,
                              "src": "8432:98:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_uint256_$bound_to$_t_int256_$",
                                "typeString": "function (int256) pure returns (uint256)"
                              }
                            },
                            "id": 1393,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8432:100:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8422:110:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1395,
                        "nodeType": "ExpressionStatement",
                        "src": "8422:110:5"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1291,
                    "nodeType": "StructuredDocumentation",
                    "src": "7490:209:5",
                    "text": "@notice View function to see pending GOLN on frontend.\n @param _pid The index of the pool. See `poolInfo`.\n @param _user Address of user.\n @return pending GOLN reward for a given user."
                  },
                  "functionSelector": "ffb6c9ec",
                  "id": 1397,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "pendingGoldNugget",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1296,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1293,
                        "mutability": "mutable",
                        "name": "_pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1397,
                        "src": "7731:12:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1292,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7731:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1295,
                        "mutability": "mutable",
                        "name": "_user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1397,
                        "src": "7745:13:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1294,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7745:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7730:29:5"
                  },
                  "returnParameters": {
                    "id": 1299,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1298,
                        "mutability": "mutable",
                        "name": "pending",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1397,
                        "src": "7783:15:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1297,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7783:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7782:17:5"
                  },
                  "scope": 2091,
                  "src": "7704:835:5",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 1427,
                    "nodeType": "Block",
                    "src": "8776:129:5",
                    "statements": [
                      {
                        "assignments": [
                          1405
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1405,
                            "mutability": "mutable",
                            "name": "len",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1427,
                            "src": "8786:11:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1404,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8786:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1408,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1406,
                            "name": "pids",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1401,
                            "src": "8800:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          "id": 1407,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "8800:11:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8786:25:5"
                      },
                      {
                        "body": {
                          "id": 1425,
                          "nodeType": "Block",
                          "src": "8855:44:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 1420,
                                      "name": "pids",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1401,
                                      "src": "8880:4:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                        "typeString": "uint256[] calldata"
                                      }
                                    },
                                    "id": 1422,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 1421,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1410,
                                      "src": "8885:1:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "8880:7:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 1419,
                                  "name": "updatePool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1557,
                                  "src": "8869:10:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_struct$_PoolInfo_$887_memory_ptr_$",
                                    "typeString": "function (uint256) returns (struct GoldMinerV2.PoolInfo memory)"
                                  }
                                },
                                "id": 1423,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8869:19:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                                  "typeString": "struct GoldMinerV2.PoolInfo memory"
                                }
                              },
                              "id": 1424,
                              "nodeType": "ExpressionStatement",
                              "src": "8869:19:5"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1415,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1413,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1410,
                            "src": "8841:1:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 1414,
                            "name": "len",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1405,
                            "src": "8845:3:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8841:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1426,
                        "initializationExpression": {
                          "assignments": [
                            1410
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 1410,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 1426,
                              "src": "8826:9:5",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 1409,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "8826:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 1412,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1411,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8838:1:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "8826:13:5"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 1417,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "8850:3:5",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 1416,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1410,
                              "src": "8852:1:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1418,
                          "nodeType": "ExpressionStatement",
                          "src": "8850:3:5"
                        },
                        "nodeType": "ForStatement",
                        "src": "8821:78:5"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1398,
                    "nodeType": "StructuredDocumentation",
                    "src": "8545:167:5",
                    "text": "@notice Update reward variables for all pools. Be careful of gas spending!\n @param pids Pool IDs of all to be updated. Make sure to update all active pools."
                  },
                  "functionSelector": "57a5b58c",
                  "id": 1428,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "massUpdatePools",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1402,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1401,
                        "mutability": "mutable",
                        "name": "pids",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1428,
                        "src": "8742:23:5",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1399,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "8742:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1400,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "8742:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8741:25:5"
                  },
                  "returnParameters": {
                    "id": 1403,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8776:0:5"
                  },
                  "scope": 2091,
                  "src": "8717:188:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 1452,
                    "nodeType": "Block",
                    "src": "9049:149:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1450,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1434,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1432,
                            "src": "9059:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1449,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1442,
                                        "name": "GOLD_PID",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 896,
                                        "src": "9139:8:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1440,
                                        "name": "GOLD_MINER",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 890,
                                        "src": "9119:10:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IGoldMiner_$3285",
                                          "typeString": "contract IGoldMiner"
                                        }
                                      },
                                      "id": 1441,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "poolInfo",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3272,
                                      "src": "9119:19:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_struct$_PoolInfo_$3265_memory_ptr_$",
                                        "typeString": "function (uint256) view external returns (struct IGoldMiner.PoolInfo memory)"
                                      }
                                    },
                                    "id": 1443,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9119:29:5",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PoolInfo_$3265_memory_ptr",
                                      "typeString": "struct IGoldMiner.PoolInfo memory"
                                    }
                                  },
                                  "id": 1444,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "allocPoint",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3260,
                                  "src": "9119:40:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 1437,
                                      "name": "GOLDMINER_GOLN_PER_BLOCK",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 923,
                                      "src": "9076:24:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 1436,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "9068:7:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 1435,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "9068:7:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 1438,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "9068:33:5",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 1439,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 627,
                                "src": "9068:50:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 1445,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9068:92:5",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1446,
                                  "name": "GOLD_MINER",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 890,
                                  "src": "9163:10:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IGoldMiner_$3285",
                                    "typeString": "contract IGoldMiner"
                                  }
                                },
                                "id": 1447,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "totalAllocPoint",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3277,
                                "src": "9163:26:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view external returns (uint256)"
                                }
                              },
                              "id": 1448,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9163:28:5",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "9068:123:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9059:132:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1451,
                        "nodeType": "ExpressionStatement",
                        "src": "9059:132:5"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1429,
                    "nodeType": "StructuredDocumentation",
                    "src": "8911:66:5",
                    "text": "@notice Calculates and returns the `amount` of GOLN per block."
                  },
                  "functionSelector": "3550db2d",
                  "id": 1453,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "goldnuggetPerBlock",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1430,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9009:2:5"
                  },
                  "returnParameters": {
                    "id": 1433,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1432,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1453,
                        "src": "9033:14:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1431,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9033:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9032:16:5"
                  },
                  "scope": 2091,
                  "src": "8982:216:5",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1556,
                    "nodeType": "Block",
                    "src": "9448:730:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1465,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1461,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1459,
                            "src": "9458:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                              "typeString": "struct GoldMinerV2.PoolInfo memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1462,
                              "name": "poolInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 902,
                              "src": "9465:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_PoolInfo_$887_storage_$dyn_storage",
                                "typeString": "struct GoldMinerV2.PoolInfo storage ref[] storage ref"
                              }
                            },
                            "id": 1464,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1463,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1456,
                              "src": "9474:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9465:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$887_storage",
                              "typeString": "struct GoldMinerV2.PoolInfo storage ref"
                            }
                          },
                          "src": "9458:20:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                            "typeString": "struct GoldMinerV2.PoolInfo memory"
                          }
                        },
                        "id": 1466,
                        "nodeType": "ExpressionStatement",
                        "src": "9458:20:5"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1471,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1467,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "9492:5:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 1468,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "number",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "9492:12:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1469,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1459,
                              "src": "9507:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                                "typeString": "struct GoldMinerV2.PoolInfo memory"
                              }
                            },
                            "id": 1470,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "lastRewardBlock",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 884,
                            "src": "9507:20:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "src": "9492:35:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1555,
                        "nodeType": "IfStatement",
                        "src": "9488:684:5",
                        "trueBody": {
                          "id": 1554,
                          "nodeType": "Block",
                          "src": "9529:643:5",
                          "statements": [
                            {
                              "assignments": [
                                1473
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1473,
                                  "mutability": "mutable",
                                  "name": "lpSupply",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 1554,
                                  "src": "9543:16:5",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 1472,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9543:7:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1483,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1480,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "9593:4:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_GoldMinerV2_$2091",
                                          "typeString": "contract GoldMinerV2"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_GoldMinerV2_$2091",
                                          "typeString": "contract GoldMinerV2"
                                        }
                                      ],
                                      "id": 1479,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "9585:7:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 1478,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "9585:7:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 1481,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9585:13:5",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 1474,
                                      "name": "lpToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 906,
                                      "src": "9562:7:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage",
                                        "typeString": "contract IERC20[] storage ref"
                                      }
                                    },
                                    "id": 1476,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 1475,
                                      "name": "pid",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1456,
                                      "src": "9570:3:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "9562:12:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$337",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 1477,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "balanceOf",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 285,
                                  "src": "9562:22:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address) view external returns (uint256)"
                                  }
                                },
                                "id": 1482,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9562:37:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "9543:56:5"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1486,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1484,
                                  "name": "lpSupply",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1473,
                                  "src": "9617:8:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 1485,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9628:1:5",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "9617:12:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 1529,
                              "nodeType": "IfStatement",
                              "src": "9613:362:5",
                              "trueBody": {
                                "id": 1528,
                                "nodeType": "Block",
                                "src": "9631:344:5",
                                "statements": [
                                  {
                                    "assignments": [
                                      1488
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 1488,
                                        "mutability": "mutable",
                                        "name": "blocks",
                                        "nodeType": "VariableDeclaration",
                                        "overrides": null,
                                        "scope": 1528,
                                        "src": "9649:14:5",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 1487,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "9649:7:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 1495,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 1492,
                                            "name": "pool",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1459,
                                            "src": "9683:4:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                                              "typeString": "struct GoldMinerV2.PoolInfo memory"
                                            }
                                          },
                                          "id": 1493,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "lastRewardBlock",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 884,
                                          "src": "9683:20:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint64",
                                            "typeString": "uint64"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint64",
                                            "typeString": "uint64"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 1489,
                                            "name": "block",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -4,
                                            "src": "9666:5:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_block",
                                              "typeString": "block"
                                            }
                                          },
                                          "id": 1490,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "number",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": null,
                                          "src": "9666:12:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 1491,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sub",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 599,
                                        "src": "9666:16:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 1494,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "9666:38:5",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "9649:55:5"
                                  },
                                  {
                                    "assignments": [
                                      1497
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 1497,
                                        "mutability": "mutable",
                                        "name": "goldnuggetReward",
                                        "nodeType": "VariableDeclaration",
                                        "overrides": null,
                                        "scope": 1528,
                                        "src": "9722:24:5",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 1496,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "9722:7:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 1509,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 1508,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 1504,
                                              "name": "pool",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1459,
                                              "src": "9786:4:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                                                "typeString": "struct GoldMinerV2.PoolInfo memory"
                                              }
                                            },
                                            "id": 1505,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "allocPoint",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 886,
                                            "src": "9786:15:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint64",
                                              "typeString": "uint64"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint64",
                                              "typeString": "uint64"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "arguments": [],
                                                "expression": {
                                                  "argumentTypes": [],
                                                  "id": 1500,
                                                  "name": "goldnuggetPerBlock",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 1453,
                                                  "src": "9760:18:5",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                                    "typeString": "function () view returns (uint256)"
                                                  }
                                                },
                                                "id": 1501,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "9760:20:5",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 1498,
                                                "name": "blocks",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1488,
                                                "src": "9749:6:5",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 1499,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "mul",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 627,
                                              "src": "9749:10:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                              }
                                            },
                                            "id": 1502,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "9749:32:5",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 1503,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "mul",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 627,
                                          "src": "9749:36:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 1506,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9749:53:5",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "/",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 1507,
                                        "name": "totalAllocPoint",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 920,
                                        "src": "9805:15:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "9749:71:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "9722:98:5"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1526,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1510,
                                          "name": "pool",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1459,
                                          "src": "9838:4:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                                            "typeString": "struct GoldMinerV2.PoolInfo memory"
                                          }
                                        },
                                        "id": 1512,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberName": "accGoldNuggetPerShare",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 882,
                                        "src": "9838:26:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "arguments": [],
                                            "expression": {
                                              "argumentTypes": [],
                                              "expression": {
                                                "argumentTypes": null,
                                                "components": [
                                                  {
                                                    "argumentTypes": null,
                                                    "commonType": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    },
                                                    "id": 1521,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                      "argumentTypes": null,
                                                      "arguments": [
                                                        {
                                                          "argumentTypes": null,
                                                          "id": 1518,
                                                          "name": "ACC_GOLN_PRECISION",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 926,
                                                          "src": "9920:18:5",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        }
                                                      ],
                                                      "expression": {
                                                        "argumentTypes": [
                                                          {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        ],
                                                        "expression": {
                                                          "argumentTypes": null,
                                                          "id": 1516,
                                                          "name": "goldnuggetReward",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 1497,
                                                          "src": "9899:16:5",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        },
                                                        "id": 1517,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "mul",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 627,
                                                        "src": "9899:20:5",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                        }
                                                      },
                                                      "id": 1519,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "kind": "functionCall",
                                                      "lValueRequested": false,
                                                      "names": [],
                                                      "nodeType": "FunctionCall",
                                                      "src": "9899:40:5",
                                                      "tryCall": false,
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "/",
                                                    "rightExpression": {
                                                      "argumentTypes": null,
                                                      "id": 1520,
                                                      "name": "lpSupply",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 1473,
                                                      "src": "9942:8:5",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "9899:51:5",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  }
                                                ],
                                                "id": 1522,
                                                "isConstant": false,
                                                "isInlineArray": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "TupleExpression",
                                                "src": "9898:53:5",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 1523,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "to128",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 653,
                                              "src": "9898:59:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint128_$bound_to$_t_uint256_$",
                                                "typeString": "function (uint256) pure returns (uint128)"
                                              }
                                            },
                                            "id": 1524,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "9898:61:5",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint128",
                                              "typeString": "uint128"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint128",
                                              "typeString": "uint128"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 1513,
                                              "name": "pool",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1459,
                                              "src": "9867:4:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                                                "typeString": "struct GoldMinerV2.PoolInfo memory"
                                              }
                                            },
                                            "id": 1514,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "accGoldNuggetPerShare",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 882,
                                            "src": "9867:26:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint128",
                                              "typeString": "uint128"
                                            }
                                          },
                                          "id": 1515,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "add",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 728,
                                          "src": "9867:30:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint128_$_t_uint128_$returns$_t_uint128_$bound_to$_t_uint128_$",
                                            "typeString": "function (uint128,uint128) pure returns (uint128)"
                                          }
                                        },
                                        "id": 1525,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9867:93:5",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      },
                                      "src": "9838:122:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    },
                                    "id": 1527,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9838:122:5"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1537,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1530,
                                    "name": "pool",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1459,
                                    "src": "9988:4:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                                      "typeString": "struct GoldMinerV2.PoolInfo memory"
                                    }
                                  },
                                  "id": 1532,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "lastRewardBlock",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 884,
                                  "src": "9988:20:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1533,
                                        "name": "block",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -4,
                                        "src": "10011:5:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_block",
                                          "typeString": "block"
                                        }
                                      },
                                      "id": 1534,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "number",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "10011:12:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 1535,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "to64",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 679,
                                    "src": "10011:17:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256) pure returns (uint64)"
                                    }
                                  },
                                  "id": 1536,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10011:19:5",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                "src": "9988:42:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              "id": 1538,
                              "nodeType": "ExpressionStatement",
                              "src": "9988:42:5"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1543,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 1539,
                                    "name": "poolInfo",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 902,
                                    "src": "10044:8:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_PoolInfo_$887_storage_$dyn_storage",
                                      "typeString": "struct GoldMinerV2.PoolInfo storage ref[] storage ref"
                                    }
                                  },
                                  "id": 1541,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 1540,
                                    "name": "pid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1456,
                                    "src": "10053:3:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "10044:13:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PoolInfo_$887_storage",
                                    "typeString": "struct GoldMinerV2.PoolInfo storage ref"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 1542,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1459,
                                  "src": "10060:4:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                                    "typeString": "struct GoldMinerV2.PoolInfo memory"
                                  }
                                },
                                "src": "10044:20:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PoolInfo_$887_storage",
                                  "typeString": "struct GoldMinerV2.PoolInfo storage ref"
                                }
                              },
                              "id": 1544,
                              "nodeType": "ExpressionStatement",
                              "src": "10044:20:5"
                            },
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1546,
                                    "name": "pid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1456,
                                    "src": "10097:3:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1547,
                                      "name": "pool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1459,
                                      "src": "10102:4:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                                        "typeString": "struct GoldMinerV2.PoolInfo memory"
                                      }
                                    },
                                    "id": 1548,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "lastRewardBlock",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 884,
                                    "src": "10102:20:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 1549,
                                    "name": "lpSupply",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1473,
                                    "src": "10124:8:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1550,
                                      "name": "pool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1459,
                                      "src": "10134:4:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                                        "typeString": "struct GoldMinerV2.PoolInfo memory"
                                      }
                                    },
                                    "id": 1551,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "accGoldNuggetPerShare",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 882,
                                    "src": "10134:26:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  ],
                                  "id": 1545,
                                  "name": "LogUpdatePool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 994,
                                  "src": "10083:13:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint64_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256,uint64,uint256,uint256)"
                                  }
                                },
                                "id": 1552,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10083:78:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1553,
                              "nodeType": "EmitStatement",
                              "src": "10078:83:5"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1454,
                    "nodeType": "StructuredDocumentation",
                    "src": "9204:168:5",
                    "text": "@notice Update reward variables of the given pool.\n @param pid The index of the pool. See `poolInfo`.\n @return pool Returns the pool that was updated."
                  },
                  "functionSelector": "51eb05a6",
                  "id": 1557,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "updatePool",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1457,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1456,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1557,
                        "src": "9397:11:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1455,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9397:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9396:13:5"
                  },
                  "returnParameters": {
                    "id": 1460,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1459,
                        "mutability": "mutable",
                        "name": "pool",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1557,
                        "src": "9426:20:5",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                          "typeString": "struct GoldMinerV2.PoolInfo"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 1458,
                          "name": "PoolInfo",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 887,
                          "src": "9426:8:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$887_storage_ptr",
                            "typeString": "struct GoldMinerV2.PoolInfo"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9425:22:5"
                  },
                  "scope": 2091,
                  "src": "9377:801:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1659,
                    "nodeType": "Block",
                    "src": "10480:615:5",
                    "statements": [
                      {
                        "assignments": [
                          1568
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1568,
                            "mutability": "mutable",
                            "name": "pool",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1659,
                            "src": "10490:20:5",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                              "typeString": "struct GoldMinerV2.PoolInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1567,
                              "name": "PoolInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 887,
                              "src": "10490:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$887_storage_ptr",
                                "typeString": "struct GoldMinerV2.PoolInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1572,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1570,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1560,
                              "src": "10524:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1569,
                            "name": "updatePool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1557,
                            "src": "10513:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_struct$_PoolInfo_$887_memory_ptr_$",
                              "typeString": "function (uint256) returns (struct GoldMinerV2.PoolInfo memory)"
                            }
                          },
                          "id": 1571,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10513:15:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                            "typeString": "struct GoldMinerV2.PoolInfo memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10490:38:5"
                      },
                      {
                        "assignments": [
                          1574
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1574,
                            "mutability": "mutable",
                            "name": "user",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1659,
                            "src": "10538:21:5",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                              "typeString": "struct GoldMinerV2.UserInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1573,
                              "name": "UserInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 880,
                              "src": "10538:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                "typeString": "struct GoldMinerV2.UserInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1580,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1575,
                              "name": "userInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 917,
                              "src": "10562:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$880_storage_$_$",
                                "typeString": "mapping(uint256 => mapping(address => struct GoldMinerV2.UserInfo storage ref))"
                              }
                            },
                            "id": 1577,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1576,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1560,
                              "src": "10571:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "10562:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$880_storage_$",
                              "typeString": "mapping(address => struct GoldMinerV2.UserInfo storage ref)"
                            }
                          },
                          "id": 1579,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1578,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1564,
                            "src": "10576:2:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "10562:17:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$880_storage",
                            "typeString": "struct GoldMinerV2.UserInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10538:41:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1589,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1581,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1574,
                              "src": "10609:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                "typeString": "struct GoldMinerV2.UserInfo storage pointer"
                              }
                            },
                            "id": 1583,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 877,
                            "src": "10609:11:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1587,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1562,
                                "src": "10639:6:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1584,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1574,
                                  "src": "10623:4:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                    "typeString": "struct GoldMinerV2.UserInfo storage pointer"
                                  }
                                },
                                "id": 1585,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "amount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 877,
                                "src": "10623:11:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1586,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 577,
                              "src": "10623:15:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 1588,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10623:23:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10609:37:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1590,
                        "nodeType": "ExpressionStatement",
                        "src": "10609:37:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1608,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1591,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1574,
                              "src": "10656:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                "typeString": "struct GoldMinerV2.UserInfo storage pointer"
                              }
                            },
                            "id": 1593,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "rewardDebt",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 879,
                            "src": "10656:15:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1605,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 1601,
                                            "name": "pool",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1568,
                                            "src": "10712:4:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                                              "typeString": "struct GoldMinerV2.PoolInfo memory"
                                            }
                                          },
                                          "id": 1602,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "accGoldNuggetPerShare",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 882,
                                          "src": "10712:26:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint128",
                                            "typeString": "uint128"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint128",
                                            "typeString": "uint128"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1599,
                                          "name": "amount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1562,
                                          "src": "10701:6:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 1600,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 627,
                                        "src": "10701:10:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 1603,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "10701:38:5",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "/",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 1604,
                                      "name": "ACC_GOLN_PRECISION",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 926,
                                      "src": "10742:18:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "10701:59:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 1598,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "10694:6:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_int256_$",
                                    "typeString": "type(int256)"
                                  },
                                  "typeName": {
                                    "id": 1597,
                                    "name": "int256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10694:6:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 1606,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10694:67:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1594,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1574,
                                  "src": "10674:4:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                    "typeString": "struct GoldMinerV2.UserInfo storage pointer"
                                  }
                                },
                                "id": 1595,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "rewardDebt",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 879,
                                "src": "10674:15:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "id": 1596,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3497,
                              "src": "10674:19:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                "typeString": "function (int256,int256) pure returns (int256)"
                              }
                            },
                            "id": 1607,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10674:88:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "10656:106:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 1609,
                        "nodeType": "ExpressionStatement",
                        "src": "10656:106:5"
                      },
                      {
                        "assignments": [
                          1611
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1611,
                            "mutability": "mutable",
                            "name": "_rewarder",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1659,
                            "src": "10797:19:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IRewarder_$3320",
                              "typeString": "contract IRewarder"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1610,
                              "name": "IRewarder",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 3320,
                              "src": "10797:9:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IRewarder_$3320",
                                "typeString": "contract IRewarder"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1615,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1612,
                            "name": "rewarder",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 910,
                            "src": "10819:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_contract$_IRewarder_$3320_$dyn_storage",
                              "typeString": "contract IRewarder[] storage ref"
                            }
                          },
                          "id": 1614,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1613,
                            "name": "pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1560,
                            "src": "10828:3:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "10819:13:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IRewarder_$3320",
                            "typeString": "contract IRewarder"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10797:35:5"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 1624,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1618,
                                "name": "_rewarder",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1611,
                                "src": "10854:9:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IRewarder_$3320",
                                  "typeString": "contract IRewarder"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IRewarder_$3320",
                                  "typeString": "contract IRewarder"
                                }
                              ],
                              "id": 1617,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "10846:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1616,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "10846:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 1619,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10846:18:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1622,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10876:1:5",
                                "subdenomination": null,
                                "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": 1621,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "10868:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1620,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "10868:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 1623,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10868:10:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "10846:32:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1637,
                        "nodeType": "IfStatement",
                        "src": "10842:120:5",
                        "trueBody": {
                          "id": 1636,
                          "nodeType": "Block",
                          "src": "10880:82:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1628,
                                    "name": "pid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1560,
                                    "src": "10923:3:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 1629,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1564,
                                    "src": "10928:2:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 1630,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1564,
                                    "src": "10932:2:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 1631,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10936:1:5",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1632,
                                      "name": "user",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1574,
                                      "src": "10939:4:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                        "typeString": "struct GoldMinerV2.UserInfo storage pointer"
                                      }
                                    },
                                    "id": 1633,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "amount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 877,
                                    "src": "10939:11:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1625,
                                    "name": "_rewarder",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1611,
                                    "src": "10894:9:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IRewarder_$3320",
                                      "typeString": "contract IRewarder"
                                    }
                                  },
                                  "id": 1627,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "onGoldNuggetReward",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3304,
                                  "src": "10894:28:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256,address,address,uint256,uint256) external"
                                  }
                                },
                                "id": 1634,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10894:57:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1635,
                              "nodeType": "ExpressionStatement",
                              "src": "10894:57:5"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1642,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "11002:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1643,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "11002:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1646,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "11022:4:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_GoldMinerV2_$2091",
                                    "typeString": "contract GoldMinerV2"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_GoldMinerV2_$2091",
                                    "typeString": "contract GoldMinerV2"
                                  }
                                ],
                                "id": 1645,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "11014:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1644,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "11014:7:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 1647,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11014:13:5",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1648,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1562,
                              "src": "11029:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1638,
                                "name": "lpToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 906,
                                "src": "10972:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage",
                                  "typeString": "contract IERC20[] storage ref"
                                }
                              },
                              "id": 1640,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1639,
                                "name": "pid",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1560,
                                "src": "10980:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10972:12:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 1641,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 552,
                            "src": "10972:29:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$337_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$337_$",
                              "typeString": "function (contract IERC20,address,address,uint256)"
                            }
                          },
                          "id": 1649,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10972:64:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1650,
                        "nodeType": "ExpressionStatement",
                        "src": "10972:64:5"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1652,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "11060:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1653,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "11060:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1654,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1560,
                              "src": "11072:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1655,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1562,
                              "src": "11077:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1656,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1564,
                              "src": "11085:2:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1651,
                            "name": "Deposit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 936,
                            "src": "11052:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$returns$__$",
                              "typeString": "function (address,uint256,uint256,address)"
                            }
                          },
                          "id": 1657,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11052:36:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1658,
                        "nodeType": "EmitStatement",
                        "src": "11047:41:5"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1558,
                    "nodeType": "StructuredDocumentation",
                    "src": "10184:226:5",
                    "text": "@notice Deposit LP tokens to MCV2 for GOLN allocation.\n @param pid The index of the pool. See `poolInfo`.\n @param amount LP token amount to deposit.\n @param to The receiver of `amount` deposit benefit."
                  },
                  "functionSelector": "8dbdbe6d",
                  "id": 1660,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "deposit",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1565,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1560,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1660,
                        "src": "10432:11:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1559,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10432:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1562,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1660,
                        "src": "10445:14:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1561,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10445:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1564,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1660,
                        "src": "10461:10:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1563,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10461:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10431:41:5"
                  },
                  "returnParameters": {
                    "id": 1566,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10480:0:5"
                  },
                  "scope": 2091,
                  "src": "10415:680:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1759,
                    "nodeType": "Block",
                    "src": "11367:605:5",
                    "statements": [
                      {
                        "assignments": [
                          1671
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1671,
                            "mutability": "mutable",
                            "name": "pool",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1759,
                            "src": "11377:20:5",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                              "typeString": "struct GoldMinerV2.PoolInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1670,
                              "name": "PoolInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 887,
                              "src": "11377:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$887_storage_ptr",
                                "typeString": "struct GoldMinerV2.PoolInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1675,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1673,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1663,
                              "src": "11411:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1672,
                            "name": "updatePool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1557,
                            "src": "11400:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_struct$_PoolInfo_$887_memory_ptr_$",
                              "typeString": "function (uint256) returns (struct GoldMinerV2.PoolInfo memory)"
                            }
                          },
                          "id": 1674,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11400:15:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                            "typeString": "struct GoldMinerV2.PoolInfo memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11377:38:5"
                      },
                      {
                        "assignments": [
                          1677
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1677,
                            "mutability": "mutable",
                            "name": "user",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1759,
                            "src": "11425:21:5",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                              "typeString": "struct GoldMinerV2.UserInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1676,
                              "name": "UserInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 880,
                              "src": "11425:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                "typeString": "struct GoldMinerV2.UserInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1684,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1678,
                              "name": "userInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 917,
                              "src": "11449:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$880_storage_$_$",
                                "typeString": "mapping(uint256 => mapping(address => struct GoldMinerV2.UserInfo storage ref))"
                              }
                            },
                            "id": 1680,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1679,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1663,
                              "src": "11458:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "11449:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$880_storage_$",
                              "typeString": "mapping(address => struct GoldMinerV2.UserInfo storage ref)"
                            }
                          },
                          "id": 1683,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1681,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "11463:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1682,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "11463:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "11449:25:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$880_storage",
                            "typeString": "struct GoldMinerV2.UserInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11425:49:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1702,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1685,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1677,
                              "src": "11504:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                "typeString": "struct GoldMinerV2.UserInfo storage pointer"
                              }
                            },
                            "id": 1687,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "rewardDebt",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 879,
                            "src": "11504:15:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1699,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 1695,
                                            "name": "pool",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1671,
                                            "src": "11560:4:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                                              "typeString": "struct GoldMinerV2.PoolInfo memory"
                                            }
                                          },
                                          "id": 1696,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "accGoldNuggetPerShare",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 882,
                                          "src": "11560:26:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint128",
                                            "typeString": "uint128"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint128",
                                            "typeString": "uint128"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1693,
                                          "name": "amount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1665,
                                          "src": "11549:6:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 1694,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 627,
                                        "src": "11549:10:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 1697,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "11549:38:5",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "/",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 1698,
                                      "name": "ACC_GOLN_PRECISION",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 926,
                                      "src": "11590:18:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "11549:59:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 1692,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "11542:6:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_int256_$",
                                    "typeString": "type(int256)"
                                  },
                                  "typeName": {
                                    "id": 1691,
                                    "name": "int256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "11542:6:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 1700,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11542:67:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1688,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1677,
                                  "src": "11522:4:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                    "typeString": "struct GoldMinerV2.UserInfo storage pointer"
                                  }
                                },
                                "id": 1689,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "rewardDebt",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 879,
                                "src": "11522:15:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "id": 1690,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3457,
                              "src": "11522:19:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                "typeString": "function (int256,int256) pure returns (int256)"
                              }
                            },
                            "id": 1701,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11522:88:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "11504:106:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 1703,
                        "nodeType": "ExpressionStatement",
                        "src": "11504:106:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1712,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1704,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1677,
                              "src": "11620:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                "typeString": "struct GoldMinerV2.UserInfo storage pointer"
                              }
                            },
                            "id": 1706,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 877,
                            "src": "11620:11:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1710,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1665,
                                "src": "11650:6:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1707,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1677,
                                  "src": "11634:4:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                    "typeString": "struct GoldMinerV2.UserInfo storage pointer"
                                  }
                                },
                                "id": 1708,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "amount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 877,
                                "src": "11634:11:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1709,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 599,
                              "src": "11634:15:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 1711,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11634:23:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11620:37:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1713,
                        "nodeType": "ExpressionStatement",
                        "src": "11620:37:5"
                      },
                      {
                        "assignments": [
                          1715
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1715,
                            "mutability": "mutable",
                            "name": "_rewarder",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1759,
                            "src": "11692:19:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IRewarder_$3320",
                              "typeString": "contract IRewarder"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1714,
                              "name": "IRewarder",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 3320,
                              "src": "11692:9:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IRewarder_$3320",
                                "typeString": "contract IRewarder"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1719,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1716,
                            "name": "rewarder",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 910,
                            "src": "11714:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_contract$_IRewarder_$3320_$dyn_storage",
                              "typeString": "contract IRewarder[] storage ref"
                            }
                          },
                          "id": 1718,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1717,
                            "name": "pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1663,
                            "src": "11723:3:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "11714:13:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IRewarder_$3320",
                            "typeString": "contract IRewarder"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11692:35:5"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 1728,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1722,
                                "name": "_rewarder",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1715,
                                "src": "11749:9:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IRewarder_$3320",
                                  "typeString": "contract IRewarder"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IRewarder_$3320",
                                  "typeString": "contract IRewarder"
                                }
                              ],
                              "id": 1721,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "11741:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1720,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "11741:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 1723,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11741:18:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1726,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11771:1:5",
                                "subdenomination": null,
                                "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": 1725,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "11763:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1724,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "11763:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 1727,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11763:10:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "11741:32:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1742,
                        "nodeType": "IfStatement",
                        "src": "11737:128:5",
                        "trueBody": {
                          "id": 1741,
                          "nodeType": "Block",
                          "src": "11775:90:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1732,
                                    "name": "pid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1663,
                                    "src": "11818:3:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1733,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "11823:3:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 1734,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "11823:10:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 1735,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1667,
                                    "src": "11835:2:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 1736,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "11839:1:5",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1737,
                                      "name": "user",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1677,
                                      "src": "11842:4:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                        "typeString": "struct GoldMinerV2.UserInfo storage pointer"
                                      }
                                    },
                                    "id": 1738,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "amount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 877,
                                    "src": "11842:11:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1729,
                                    "name": "_rewarder",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1715,
                                    "src": "11789:9:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IRewarder_$3320",
                                      "typeString": "contract IRewarder"
                                    }
                                  },
                                  "id": 1731,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "onGoldNuggetReward",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3304,
                                  "src": "11789:28:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256,address,address,uint256,uint256) external"
                                  }
                                },
                                "id": 1739,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11789:65:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1740,
                              "nodeType": "ExpressionStatement",
                              "src": "11789:65:5"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1747,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1667,
                              "src": "11901:2:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1748,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1665,
                              "src": "11905:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1743,
                                "name": "lpToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 906,
                                "src": "11875:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage",
                                  "typeString": "contract IERC20[] storage ref"
                                }
                              },
                              "id": 1745,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1744,
                                "name": "pid",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1663,
                                "src": "11883:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "11875:12:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 1746,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 503,
                            "src": "11875:25:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$337_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$337_$",
                              "typeString": "function (contract IERC20,address,uint256)"
                            }
                          },
                          "id": 1749,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11875:37:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1750,
                        "nodeType": "ExpressionStatement",
                        "src": "11875:37:5"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1752,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "11937:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1753,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "11937:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1754,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1663,
                              "src": "11949:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1755,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1665,
                              "src": "11954:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1756,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1667,
                              "src": "11962:2:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1751,
                            "name": "Withdraw",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 946,
                            "src": "11928:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$returns$__$",
                              "typeString": "function (address,uint256,uint256,address)"
                            }
                          },
                          "id": 1757,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11928:37:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1758,
                        "nodeType": "EmitStatement",
                        "src": "11923:42:5"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1661,
                    "nodeType": "StructuredDocumentation",
                    "src": "11101:195:5",
                    "text": "@notice Withdraw LP tokens from MCV2.\n @param pid The index of the pool. See `poolInfo`.\n @param amount LP token amount to withdraw.\n @param to Receiver of the LP tokens."
                  },
                  "functionSelector": "0ad58d2f",
                  "id": 1760,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdraw",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1668,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1663,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1760,
                        "src": "11319:11:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1662,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11319:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1665,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1760,
                        "src": "11332:14:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1664,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11332:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1667,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1760,
                        "src": "11348:10:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1666,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11348:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11318:41:5"
                  },
                  "returnParameters": {
                    "id": 1669,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11367:0:5"
                  },
                  "scope": 2091,
                  "src": "11301:671:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1861,
                    "nodeType": "Block",
                    "src": "12194:779:5",
                    "statements": [
                      {
                        "assignments": [
                          1769
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1769,
                            "mutability": "mutable",
                            "name": "pool",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1861,
                            "src": "12204:20:5",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                              "typeString": "struct GoldMinerV2.PoolInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1768,
                              "name": "PoolInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 887,
                              "src": "12204:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$887_storage_ptr",
                                "typeString": "struct GoldMinerV2.PoolInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1773,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1771,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1763,
                              "src": "12238:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1770,
                            "name": "updatePool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1557,
                            "src": "12227:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_struct$_PoolInfo_$887_memory_ptr_$",
                              "typeString": "function (uint256) returns (struct GoldMinerV2.PoolInfo memory)"
                            }
                          },
                          "id": 1772,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12227:15:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                            "typeString": "struct GoldMinerV2.PoolInfo memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12204:38:5"
                      },
                      {
                        "assignments": [
                          1775
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1775,
                            "mutability": "mutable",
                            "name": "user",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1861,
                            "src": "12252:21:5",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                              "typeString": "struct GoldMinerV2.UserInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1774,
                              "name": "UserInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 880,
                              "src": "12252:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                "typeString": "struct GoldMinerV2.UserInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1782,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1776,
                              "name": "userInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 917,
                              "src": "12276:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$880_storage_$_$",
                                "typeString": "mapping(uint256 => mapping(address => struct GoldMinerV2.UserInfo storage ref))"
                              }
                            },
                            "id": 1778,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1777,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1763,
                              "src": "12285:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12276:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$880_storage_$",
                              "typeString": "mapping(address => struct GoldMinerV2.UserInfo storage ref)"
                            }
                          },
                          "id": 1781,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1779,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "12290:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1780,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "12290:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "12276:25:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$880_storage",
                            "typeString": "struct GoldMinerV2.UserInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12252:49:5"
                      },
                      {
                        "assignments": [
                          1784
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1784,
                            "mutability": "mutable",
                            "name": "accumulatedGoldNugget",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1861,
                            "src": "12311:28:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 1783,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12311:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1796,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1794,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1790,
                                      "name": "pool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1769,
                                      "src": "12365:4:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                                        "typeString": "struct GoldMinerV2.PoolInfo memory"
                                      }
                                    },
                                    "id": 1791,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "accGoldNuggetPerShare",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 882,
                                    "src": "12365:26:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1787,
                                      "name": "user",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1775,
                                      "src": "12349:4:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                        "typeString": "struct GoldMinerV2.UserInfo storage pointer"
                                      }
                                    },
                                    "id": 1788,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "amount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 877,
                                    "src": "12349:11:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 1789,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 627,
                                  "src": "12349:15:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 1792,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12349:43:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 1793,
                                "name": "ACC_GOLN_PRECISION",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 926,
                                "src": "12395:18:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "12349:64:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1786,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "12342:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_int256_$",
                              "typeString": "type(int256)"
                            },
                            "typeName": {
                              "id": 1785,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12342:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 1795,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12342:72:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12311:103:5"
                      },
                      {
                        "assignments": [
                          1798
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1798,
                            "mutability": "mutable",
                            "name": "_pendingGoldNugget",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1861,
                            "src": "12424:26:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1797,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12424:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1806,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1801,
                                    "name": "user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1775,
                                    "src": "12479:4:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                      "typeString": "struct GoldMinerV2.UserInfo storage pointer"
                                    }
                                  },
                                  "id": 1802,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "rewardDebt",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 879,
                                  "src": "12479:15:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1799,
                                  "name": "accumulatedGoldNugget",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1784,
                                  "src": "12453:21:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 1800,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3457,
                                "src": "12453:25:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                  "typeString": "function (int256,int256) pure returns (int256)"
                                }
                              },
                              "id": 1803,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12453:42:5",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 1804,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "toUInt256",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3517,
                            "src": "12453:52:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_uint256_$bound_to$_t_int256_$",
                              "typeString": "function (int256) pure returns (uint256)"
                            }
                          },
                          "id": 1805,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12453:54:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12424:83:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1811,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1807,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1775,
                              "src": "12537:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                "typeString": "struct GoldMinerV2.UserInfo storage pointer"
                              }
                            },
                            "id": 1809,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "rewardDebt",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 879,
                            "src": "12537:15:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1810,
                            "name": "accumulatedGoldNugget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1784,
                            "src": "12555:21:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "12537:39:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 1812,
                        "nodeType": "ExpressionStatement",
                        "src": "12537:39:5"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1815,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1813,
                            "name": "_pendingGoldNugget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1798,
                            "src": "12615:18:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1814,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12637:1:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "12615:23:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1824,
                        "nodeType": "IfStatement",
                        "src": "12611:95:5",
                        "trueBody": {
                          "id": 1823,
                          "nodeType": "Block",
                          "src": "12640:66:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1819,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1765,
                                    "src": "12672:2:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 1820,
                                    "name": "_pendingGoldNugget",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1798,
                                    "src": "12676:18:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1816,
                                    "name": "GOLN",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 893,
                                    "src": "12654:4:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$337",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 1818,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "safeTransfer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 503,
                                  "src": "12654:17:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$337_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$337_$",
                                    "typeString": "function (contract IERC20,address,uint256)"
                                  }
                                },
                                "id": 1821,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12654:41:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1822,
                              "nodeType": "ExpressionStatement",
                              "src": "12654:41:5"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          1826
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1826,
                            "mutability": "mutable",
                            "name": "_rewarder",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1861,
                            "src": "12716:19:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IRewarder_$3320",
                              "typeString": "contract IRewarder"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1825,
                              "name": "IRewarder",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 3320,
                              "src": "12716:9:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IRewarder_$3320",
                                "typeString": "contract IRewarder"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1830,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1827,
                            "name": "rewarder",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 910,
                            "src": "12738:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_contract$_IRewarder_$3320_$dyn_storage",
                              "typeString": "contract IRewarder[] storage ref"
                            }
                          },
                          "id": 1829,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1828,
                            "name": "pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1763,
                            "src": "12747:3:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "12738:13:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IRewarder_$3320",
                            "typeString": "contract IRewarder"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12716:35:5"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 1839,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1833,
                                "name": "_rewarder",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1826,
                                "src": "12773:9:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IRewarder_$3320",
                                  "typeString": "contract IRewarder"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IRewarder_$3320",
                                  "typeString": "contract IRewarder"
                                }
                              ],
                              "id": 1832,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "12765:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1831,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "12765:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 1834,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12765:18:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1837,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12795:1:5",
                                "subdenomination": null,
                                "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": 1836,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "12787:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1835,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "12787:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 1838,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12787:10:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "12765:32:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1853,
                        "nodeType": "IfStatement",
                        "src": "12761:146:5",
                        "trueBody": {
                          "id": 1852,
                          "nodeType": "Block",
                          "src": "12799:108:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1843,
                                    "name": "pid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1763,
                                    "src": "12843:3:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1844,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "12848:3:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 1845,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "12848:10:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 1846,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1765,
                                    "src": "12860:2:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 1847,
                                    "name": "_pendingGoldNugget",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1798,
                                    "src": "12864:18:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1848,
                                      "name": "user",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1775,
                                      "src": "12884:4:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                        "typeString": "struct GoldMinerV2.UserInfo storage pointer"
                                      }
                                    },
                                    "id": 1849,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "amount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 877,
                                    "src": "12884:11:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1840,
                                    "name": "_rewarder",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1826,
                                    "src": "12813:9:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IRewarder_$3320",
                                      "typeString": "contract IRewarder"
                                    }
                                  },
                                  "id": 1842,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "onGoldNuggetReward",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3304,
                                  "src": "12813:28:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256,address,address,uint256,uint256) external"
                                  }
                                },
                                "id": 1850,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12813:83:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1851,
                              "nodeType": "ExpressionStatement",
                              "src": "12813:83:5"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1855,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "12930:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1856,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "12930:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1857,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1763,
                              "src": "12942:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1858,
                              "name": "_pendingGoldNugget",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1798,
                              "src": "12947:18:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1854,
                            "name": "Harvest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 964,
                            "src": "12922:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 1859,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12922:44:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1860,
                        "nodeType": "EmitStatement",
                        "src": "12917:49:5"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1761,
                    "nodeType": "StructuredDocumentation",
                    "src": "11978:162:5",
                    "text": "@notice Harvest proceeds for transaction sender to `to`.\n @param pid The index of the pool. See `poolInfo`.\n @param to Receiver of GOLN rewards."
                  },
                  "functionSelector": "18fccc76",
                  "id": 1862,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "harvest",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1766,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1763,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1862,
                        "src": "12162:11:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1762,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12162:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1765,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1862,
                        "src": "12175:10:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1764,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12175:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12161:25:5"
                  },
                  "returnParameters": {
                    "id": 1767,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12194:0:5"
                  },
                  "scope": 2091,
                  "src": "12145:828:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1998,
                    "nodeType": "Block",
                    "src": "13324:945:5",
                    "statements": [
                      {
                        "assignments": [
                          1873
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1873,
                            "mutability": "mutable",
                            "name": "pool",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1998,
                            "src": "13334:20:5",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                              "typeString": "struct GoldMinerV2.PoolInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1872,
                              "name": "PoolInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 887,
                              "src": "13334:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$887_storage_ptr",
                                "typeString": "struct GoldMinerV2.PoolInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1877,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1875,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1865,
                              "src": "13368:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1874,
                            "name": "updatePool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1557,
                            "src": "13357:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_struct$_PoolInfo_$887_memory_ptr_$",
                              "typeString": "function (uint256) returns (struct GoldMinerV2.PoolInfo memory)"
                            }
                          },
                          "id": 1876,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13357:15:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                            "typeString": "struct GoldMinerV2.PoolInfo memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13334:38:5"
                      },
                      {
                        "assignments": [
                          1879
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1879,
                            "mutability": "mutable",
                            "name": "user",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1998,
                            "src": "13382:21:5",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                              "typeString": "struct GoldMinerV2.UserInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1878,
                              "name": "UserInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 880,
                              "src": "13382:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                "typeString": "struct GoldMinerV2.UserInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1886,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1880,
                              "name": "userInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 917,
                              "src": "13406:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$880_storage_$_$",
                                "typeString": "mapping(uint256 => mapping(address => struct GoldMinerV2.UserInfo storage ref))"
                              }
                            },
                            "id": 1882,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1881,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1865,
                              "src": "13415:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "13406:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$880_storage_$",
                              "typeString": "mapping(address => struct GoldMinerV2.UserInfo storage ref)"
                            }
                          },
                          "id": 1885,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1883,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "13420:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1884,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "13420:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13406:25:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$880_storage",
                            "typeString": "struct GoldMinerV2.UserInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13382:49:5"
                      },
                      {
                        "assignments": [
                          1888
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1888,
                            "mutability": "mutable",
                            "name": "accumulatedGoldNugget",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1998,
                            "src": "13441:28:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 1887,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13441:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1900,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1898,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1894,
                                      "name": "pool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1873,
                                      "src": "13495:4:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                                        "typeString": "struct GoldMinerV2.PoolInfo memory"
                                      }
                                    },
                                    "id": 1895,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "accGoldNuggetPerShare",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 882,
                                    "src": "13495:26:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1891,
                                      "name": "user",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1879,
                                      "src": "13479:4:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                        "typeString": "struct GoldMinerV2.UserInfo storage pointer"
                                      }
                                    },
                                    "id": 1892,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "amount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 877,
                                    "src": "13479:11:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 1893,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 627,
                                  "src": "13479:15:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 1896,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13479:43:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 1897,
                                "name": "ACC_GOLN_PRECISION",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 926,
                                "src": "13525:18:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "13479:64:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1890,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "13472:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_int256_$",
                              "typeString": "type(int256)"
                            },
                            "typeName": {
                              "id": 1889,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13472:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 1899,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13472:72:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13441:103:5"
                      },
                      {
                        "assignments": [
                          1902
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1902,
                            "mutability": "mutable",
                            "name": "_pendingGoldNugget",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1998,
                            "src": "13554:26:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1901,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13554:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1910,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1905,
                                    "name": "user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1879,
                                    "src": "13609:4:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                      "typeString": "struct GoldMinerV2.UserInfo storage pointer"
                                    }
                                  },
                                  "id": 1906,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "rewardDebt",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 879,
                                  "src": "13609:15:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1903,
                                  "name": "accumulatedGoldNugget",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1888,
                                  "src": "13583:21:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 1904,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3457,
                                "src": "13583:25:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                  "typeString": "function (int256,int256) pure returns (int256)"
                                }
                              },
                              "id": 1907,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13583:42:5",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 1908,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "toUInt256",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3517,
                            "src": "13583:52:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_uint256_$bound_to$_t_int256_$",
                              "typeString": "function (int256) pure returns (uint256)"
                            }
                          },
                          "id": 1909,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13583:54:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13554:83:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1927,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1911,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1879,
                              "src": "13667:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                "typeString": "struct GoldMinerV2.UserInfo storage pointer"
                              }
                            },
                            "id": 1913,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "rewardDebt",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 879,
                            "src": "13667:15:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1924,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 1920,
                                            "name": "pool",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1873,
                                            "src": "13729:4:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_PoolInfo_$887_memory_ptr",
                                              "typeString": "struct GoldMinerV2.PoolInfo memory"
                                            }
                                          },
                                          "id": 1921,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "accGoldNuggetPerShare",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 882,
                                          "src": "13729:26:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint128",
                                            "typeString": "uint128"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint128",
                                            "typeString": "uint128"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1918,
                                          "name": "amount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1867,
                                          "src": "13718:6:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 1919,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 627,
                                        "src": "13718:10:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 1922,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "13718:38:5",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "/",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 1923,
                                      "name": "ACC_GOLN_PRECISION",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 926,
                                      "src": "13759:18:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "13718:59:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 1917,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "13711:6:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_int256_$",
                                    "typeString": "type(int256)"
                                  },
                                  "typeName": {
                                    "id": 1916,
                                    "name": "int256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "13711:6:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 1925,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13711:67:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1914,
                                "name": "accumulatedGoldNugget",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1888,
                                "src": "13685:21:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "id": 1915,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3457,
                              "src": "13685:25:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                "typeString": "function (int256,int256) pure returns (int256)"
                              }
                            },
                            "id": 1926,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13685:94:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "13667:112:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 1928,
                        "nodeType": "ExpressionStatement",
                        "src": "13667:112:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1937,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1929,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1879,
                              "src": "13789:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                "typeString": "struct GoldMinerV2.UserInfo storage pointer"
                              }
                            },
                            "id": 1931,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 877,
                            "src": "13789:11:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1935,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1867,
                                "src": "13819:6:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1932,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1879,
                                  "src": "13803:4:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                    "typeString": "struct GoldMinerV2.UserInfo storage pointer"
                                  }
                                },
                                "id": 1933,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "amount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 877,
                                "src": "13803:11:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1934,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 599,
                              "src": "13803:15:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 1936,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13803:23:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "13789:37:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1938,
                        "nodeType": "ExpressionStatement",
                        "src": "13789:37:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1942,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1869,
                              "src": "13879:2:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1943,
                              "name": "_pendingGoldNugget",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1902,
                              "src": "13883:18:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1939,
                              "name": "GOLN",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 893,
                              "src": "13861:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 1941,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 503,
                            "src": "13861:17:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$337_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$337_$",
                              "typeString": "function (contract IERC20,address,uint256)"
                            }
                          },
                          "id": 1944,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13861:41:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1945,
                        "nodeType": "ExpressionStatement",
                        "src": "13861:41:5"
                      },
                      {
                        "assignments": [
                          1947
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1947,
                            "mutability": "mutable",
                            "name": "_rewarder",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1998,
                            "src": "13913:19:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IRewarder_$3320",
                              "typeString": "contract IRewarder"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1946,
                              "name": "IRewarder",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 3320,
                              "src": "13913:9:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IRewarder_$3320",
                                "typeString": "contract IRewarder"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1951,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1948,
                            "name": "rewarder",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 910,
                            "src": "13935:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_contract$_IRewarder_$3320_$dyn_storage",
                              "typeString": "contract IRewarder[] storage ref"
                            }
                          },
                          "id": 1950,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1949,
                            "name": "pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1865,
                            "src": "13944:3:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13935:13:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IRewarder_$3320",
                            "typeString": "contract IRewarder"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13913:35:5"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 1960,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1954,
                                "name": "_rewarder",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1947,
                                "src": "13970:9:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IRewarder_$3320",
                                  "typeString": "contract IRewarder"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IRewarder_$3320",
                                  "typeString": "contract IRewarder"
                                }
                              ],
                              "id": 1953,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "13962:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1952,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "13962:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 1955,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13962:18:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1958,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "13992:1:5",
                                "subdenomination": null,
                                "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": 1957,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "13984:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1956,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "13984:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 1959,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13984:10:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "13962:32:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1974,
                        "nodeType": "IfStatement",
                        "src": "13958:145:5",
                        "trueBody": {
                          "id": 1973,
                          "nodeType": "Block",
                          "src": "13996:107:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1964,
                                    "name": "pid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1865,
                                    "src": "14039:3:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1965,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "14044:3:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 1966,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "14044:10:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 1967,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1869,
                                    "src": "14056:2:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 1968,
                                    "name": "_pendingGoldNugget",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1902,
                                    "src": "14060:18:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1969,
                                      "name": "user",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1879,
                                      "src": "14080:4:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                        "typeString": "struct GoldMinerV2.UserInfo storage pointer"
                                      }
                                    },
                                    "id": 1970,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "amount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 877,
                                    "src": "14080:11:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1961,
                                    "name": "_rewarder",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1947,
                                    "src": "14010:9:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IRewarder_$3320",
                                      "typeString": "contract IRewarder"
                                    }
                                  },
                                  "id": 1963,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "onGoldNuggetReward",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3304,
                                  "src": "14010:28:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256,address,address,uint256,uint256) external"
                                  }
                                },
                                "id": 1971,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14010:82:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1972,
                              "nodeType": "ExpressionStatement",
                              "src": "14010:82:5"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1979,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1869,
                              "src": "14139:2:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1980,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1867,
                              "src": "14143:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1975,
                                "name": "lpToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 906,
                                "src": "14113:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage",
                                  "typeString": "contract IERC20[] storage ref"
                                }
                              },
                              "id": 1977,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1976,
                                "name": "pid",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1865,
                                "src": "14121:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "14113:12:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 1978,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 503,
                            "src": "14113:25:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$337_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$337_$",
                              "typeString": "function (contract IERC20,address,uint256)"
                            }
                          },
                          "id": 1981,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14113:37:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1982,
                        "nodeType": "ExpressionStatement",
                        "src": "14113:37:5"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1984,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "14175:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1985,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "14175:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1986,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1865,
                              "src": "14187:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1987,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1867,
                              "src": "14192:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1988,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1869,
                              "src": "14200:2:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1983,
                            "name": "Withdraw",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 946,
                            "src": "14166:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$returns$__$",
                              "typeString": "function (address,uint256,uint256,address)"
                            }
                          },
                          "id": 1989,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14166:37:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1990,
                        "nodeType": "EmitStatement",
                        "src": "14161:42:5"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1992,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "14226:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1993,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "14226:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1994,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1865,
                              "src": "14238:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1995,
                              "name": "_pendingGoldNugget",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1902,
                              "src": "14243:18:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1991,
                            "name": "Harvest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 964,
                            "src": "14218:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 1996,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14218:44:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1997,
                        "nodeType": "EmitStatement",
                        "src": "14213:49:5"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1863,
                    "nodeType": "StructuredDocumentation",
                    "src": "12979:264:5",
                    "text": "@notice Withdraw LP tokens from MCV2 and harvest proceeds for transaction sender to `to`.\n @param pid The index of the pool. See `poolInfo`.\n @param amount LP token amount to withdraw.\n @param to Receiver of the LP tokens and GOLN rewards."
                  },
                  "functionSelector": "d1abb907",
                  "id": 1999,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdrawAndHarvest",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1870,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1865,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1999,
                        "src": "13276:11:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1864,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13276:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1867,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1999,
                        "src": "13289:14:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1866,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13289:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1869,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1999,
                        "src": "13305:10:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1868,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13305:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "13275:41:5"
                  },
                  "returnParameters": {
                    "id": 1871,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "13324:0:5"
                  },
                  "scope": 2091,
                  "src": "13248:1021:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 2010,
                    "nodeType": "Block",
                    "src": "14410:48:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2006,
                              "name": "GOLD_PID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 896,
                              "src": "14439:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 2007,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14449:1:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2003,
                              "name": "GOLD_MINER",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 890,
                              "src": "14420:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IGoldMiner_$3285",
                                "typeString": "contract IGoldMiner"
                              }
                            },
                            "id": 2005,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "deposit",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3284,
                            "src": "14420:18:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256) external"
                            }
                          },
                          "id": 2008,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14420:31:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2009,
                        "nodeType": "ExpressionStatement",
                        "src": "14420:31:5"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2000,
                    "nodeType": "StructuredDocumentation",
                    "src": "14275:91:5",
                    "text": "@notice Harvests GOLN from `GOLD_MINER` MCV1 and pool `GOLD_PID` to this MCV2 contract."
                  },
                  "functionSelector": "35c5c625",
                  "id": 2011,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "harvestFromGoldMiner",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2001,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14400:2:5"
                  },
                  "returnParameters": {
                    "id": 2002,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14410:0:5"
                  },
                  "scope": 2091,
                  "src": "14371:87:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 2089,
                    "nodeType": "Block",
                    "src": "14697:507:5",
                    "statements": [
                      {
                        "assignments": [
                          2020
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2020,
                            "mutability": "mutable",
                            "name": "user",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2089,
                            "src": "14707:21:5",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                              "typeString": "struct GoldMinerV2.UserInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 2019,
                              "name": "UserInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 880,
                              "src": "14707:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                "typeString": "struct GoldMinerV2.UserInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2027,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2021,
                              "name": "userInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 917,
                              "src": "14731:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$880_storage_$_$",
                                "typeString": "mapping(uint256 => mapping(address => struct GoldMinerV2.UserInfo storage ref))"
                              }
                            },
                            "id": 2023,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2022,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2014,
                              "src": "14740:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "14731:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$880_storage_$",
                              "typeString": "mapping(address => struct GoldMinerV2.UserInfo storage ref)"
                            }
                          },
                          "id": 2026,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2024,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "14745:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2025,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "14745:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "14731:25:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$880_storage",
                            "typeString": "struct GoldMinerV2.UserInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14707:49:5"
                      },
                      {
                        "assignments": [
                          2029
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2029,
                            "mutability": "mutable",
                            "name": "amount",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2089,
                            "src": "14766:14:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2028,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "14766:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2032,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2030,
                            "name": "user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2020,
                            "src": "14783:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                              "typeString": "struct GoldMinerV2.UserInfo storage pointer"
                            }
                          },
                          "id": 2031,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "amount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 877,
                          "src": "14783:11:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14766:28:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2037,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2033,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2020,
                              "src": "14804:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                "typeString": "struct GoldMinerV2.UserInfo storage pointer"
                              }
                            },
                            "id": 2035,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 877,
                            "src": "14804:11:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2036,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14818:1:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "14804:15:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2038,
                        "nodeType": "ExpressionStatement",
                        "src": "14804:15:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2043,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2039,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2020,
                              "src": "14829:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$880_storage_ptr",
                                "typeString": "struct GoldMinerV2.UserInfo storage pointer"
                              }
                            },
                            "id": 2041,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "rewardDebt",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 879,
                            "src": "14829:15:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2042,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14847:1:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "14829:19:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 2044,
                        "nodeType": "ExpressionStatement",
                        "src": "14829:19:5"
                      },
                      {
                        "assignments": [
                          2046
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2046,
                            "mutability": "mutable",
                            "name": "_rewarder",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2089,
                            "src": "14859:19:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IRewarder_$3320",
                              "typeString": "contract IRewarder"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 2045,
                              "name": "IRewarder",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 3320,
                              "src": "14859:9:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IRewarder_$3320",
                                "typeString": "contract IRewarder"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2050,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2047,
                            "name": "rewarder",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 910,
                            "src": "14881:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_contract$_IRewarder_$3320_$dyn_storage",
                              "typeString": "contract IRewarder[] storage ref"
                            }
                          },
                          "id": 2049,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2048,
                            "name": "pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2014,
                            "src": "14890:3:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "14881:13:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IRewarder_$3320",
                            "typeString": "contract IRewarder"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14859:35:5"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 2059,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2053,
                                "name": "_rewarder",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2046,
                                "src": "14916:9:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IRewarder_$3320",
                                  "typeString": "contract IRewarder"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IRewarder_$3320",
                                  "typeString": "contract IRewarder"
                                }
                              ],
                              "id": 2052,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "14908:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 2051,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "14908:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 2054,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14908:18:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2057,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "14938:1:5",
                                "subdenomination": null,
                                "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": 2056,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "14930:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 2055,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "14930:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 2058,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14930:10:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "14908:32:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2072,
                        "nodeType": "IfStatement",
                        "src": "14904:118:5",
                        "trueBody": {
                          "id": 2071,
                          "nodeType": "Block",
                          "src": "14942:80:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2063,
                                    "name": "pid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2014,
                                    "src": "14985:3:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2064,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "14990:3:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 2065,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "14990:10:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2066,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2016,
                                    "src": "15002:2:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 2067,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15006:1:5",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 2068,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15009:1:5",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2060,
                                    "name": "_rewarder",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2046,
                                    "src": "14956:9:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IRewarder_$3320",
                                      "typeString": "contract IRewarder"
                                    }
                                  },
                                  "id": 2062,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "onGoldNuggetReward",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3304,
                                  "src": "14956:28:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256,address,address,uint256,uint256) external"
                                  }
                                },
                                "id": 2069,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14956:55:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2070,
                              "nodeType": "ExpressionStatement",
                              "src": "14956:55:5"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2077,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2016,
                              "src": "15125:2:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2078,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2029,
                              "src": "15129:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2073,
                                "name": "lpToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 906,
                                "src": "15099:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage",
                                  "typeString": "contract IERC20[] storage ref"
                                }
                              },
                              "id": 2075,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2074,
                                "name": "pid",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2014,
                                "src": "15107:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "15099:12:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 2076,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 503,
                            "src": "15099:25:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$337_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$337_$",
                              "typeString": "function (contract IERC20,address,uint256)"
                            }
                          },
                          "id": 2079,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15099:37:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2080,
                        "nodeType": "ExpressionStatement",
                        "src": "15099:37:5"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2082,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "15169:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2083,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "15169:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2084,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2014,
                              "src": "15181:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2085,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2029,
                              "src": "15186:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2086,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2016,
                              "src": "15194:2:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2081,
                            "name": "EmergencyWithdraw",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 956,
                            "src": "15151:17:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$returns$__$",
                              "typeString": "function (address,uint256,uint256,address)"
                            }
                          },
                          "id": 2087,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15151:46:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2088,
                        "nodeType": "EmitStatement",
                        "src": "15146:51:5"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2012,
                    "nodeType": "StructuredDocumentation",
                    "src": "14464:169:5",
                    "text": "@notice Withdraw without caring about rewards. EMERGENCY ONLY.\n @param pid The index of the pool. See `poolInfo`.\n @param to Receiver of the LP tokens."
                  },
                  "functionSelector": "2f940c70",
                  "id": 2090,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "emergencyWithdraw",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2017,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2014,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2090,
                        "src": "14665:11:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2013,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14665:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2016,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2090,
                        "src": "14678:10:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2015,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14678:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14664:25:5"
                  },
                  "returnParameters": {
                    "id": 2018,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14697:0:5"
                  },
                  "scope": 2091,
                  "src": "14638:566:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 2092,
              "src": "1093:14113:5"
            }
          ],
          "src": "33:15174:5"
        },
        "id": 5
      },
      "contracts/MiniMinerV2.sol": {
        "ast": {
          "absolutePath": "contracts/MiniMinerV2.sol",
          "exportedSymbols": {
            "IMigratorMiner": [
              2108
            ],
            "MiniMinerV2": [
              3244
            ]
          },
          "id": 3245,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2093,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:23:6"
            },
            {
              "id": 2094,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "57:33:6"
            },
            {
              "absolutePath": "@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol",
              "file": "@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol",
              "id": 2095,
              "nodeType": "ImportDirective",
              "scope": 3245,
              "sourceUnit": 842,
              "src": "92:74:6",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@boringcrypto/boring-solidity/contracts/BoringBatchable.sol",
              "file": "@boringcrypto/boring-solidity/contracts/BoringBatchable.sol",
              "id": 2096,
              "nodeType": "ImportDirective",
              "scope": 3245,
              "sourceUnit": 146,
              "src": "167:69:6",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@boringcrypto/boring-solidity/contracts/BoringOwnable.sol",
              "file": "@boringcrypto/boring-solidity/contracts/BoringOwnable.sol",
              "id": 2097,
              "nodeType": "ImportDirective",
              "scope": 3245,
              "sourceUnit": 272,
              "src": "237:67:6",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/libraries/SignedSafeMath.sol",
              "file": "./libraries/SignedSafeMath.sol",
              "id": 2098,
              "nodeType": "ImportDirective",
              "scope": 3245,
              "sourceUnit": 3519,
              "src": "305:40:6",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IRewarder.sol",
              "file": "./interfaces/IRewarder.sol",
              "id": 2099,
              "nodeType": "ImportDirective",
              "scope": 3245,
              "sourceUnit": 3321,
              "src": "346:36:6",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IGoldMiner.sol",
              "file": "./interfaces/IGoldMiner.sol",
              "id": 2100,
              "nodeType": "ImportDirective",
              "scope": 3245,
              "sourceUnit": 3286,
              "src": "383:37:6",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 2108,
              "linearizedBaseContracts": [
                2108
              ],
              "name": "IMigratorMiner",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "ce5494bb",
                  "id": 2107,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "migrate",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2103,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2102,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2107,
                        "src": "614:12:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$337",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 2101,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 337,
                          "src": "614:6:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "613:14:6"
                  },
                  "returnParameters": {
                    "id": 2106,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2105,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2107,
                        "src": "646:6:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$337",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 2104,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 337,
                          "src": "646:6:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "645:8:6"
                  },
                  "scope": 2108,
                  "src": "597:57:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 3245,
              "src": "422:234:6"
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 2110,
                    "name": "BoringOwnable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 271,
                    "src": "1117:13:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BoringOwnable_$271",
                      "typeString": "contract BoringOwnable"
                    }
                  },
                  "id": 2111,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1117:13:6"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 2112,
                    "name": "BoringBatchable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 145,
                    "src": "1132:15:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BoringBatchable_$145",
                      "typeString": "contract BoringBatchable"
                    }
                  },
                  "id": 2113,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1132:15:6"
                }
              ],
              "contractDependencies": [
                110,
                145,
                152,
                271
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 2109,
                "nodeType": "StructuredDocumentation",
                "src": "658:435:6",
                "text": "@notice The (older) GoldMiner contract gives out a constant number of GOLN tokens per block.\n It is the only address with minting rights for GOLN.\n The idea for this GoldMiner V2 (MCV2) contract is therefore to be the owner of a dummy token\n that is deposited into the GoldMiner V1 (MCV1) contract.\n The allocation point for this pool on MCV1 is the total allocation point for all pools that receive double incentives."
              },
              "fullyImplemented": true,
              "id": 3244,
              "linearizedBaseContracts": [
                3244,
                145,
                110,
                271,
                152
              ],
              "name": "MiniMinerV2",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 2116,
                  "libraryName": {
                    "contractScope": null,
                    "id": 2114,
                    "name": "BoringMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 706,
                    "src": "1160:10:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BoringMath_$706",
                      "typeString": "library BoringMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1154:29:6",
                  "typeName": {
                    "id": 2115,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1175:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "id": 2119,
                  "libraryName": {
                    "contractScope": null,
                    "id": 2117,
                    "name": "BoringMath128",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 751,
                    "src": "1194:13:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BoringMath128_$751",
                      "typeString": "library BoringMath128"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1188:32:6",
                  "typeName": {
                    "id": 2118,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "1212:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  }
                },
                {
                  "id": 2122,
                  "libraryName": {
                    "contractScope": null,
                    "id": 2120,
                    "name": "BoringERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 553,
                    "src": "1231:11:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BoringERC20_$553",
                      "typeString": "library BoringERC20"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1225:29:6",
                  "typeName": {
                    "contractScope": null,
                    "id": 2121,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 337,
                    "src": "1247:6:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$337",
                      "typeString": "contract IERC20"
                    }
                  }
                },
                {
                  "id": 2125,
                  "libraryName": {
                    "contractScope": null,
                    "id": 2123,
                    "name": "SignedSafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3518,
                    "src": "1265:14:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SignedSafeMath_$3518",
                      "typeString": "library SignedSafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1259:32:6",
                  "typeName": {
                    "id": 2124,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1284:6:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  }
                },
                {
                  "canonicalName": "MiniMinerV2.UserInfo",
                  "id": 2130,
                  "members": [
                    {
                      "constant": false,
                      "id": 2127,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2130,
                      "src": "1481:14:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2126,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1481:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2129,
                      "mutability": "mutable",
                      "name": "rewardDebt",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2130,
                      "src": "1505:17:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 2128,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1505:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "UserInfo",
                  "nodeType": "StructDefinition",
                  "scope": 3244,
                  "src": "1455:74:6",
                  "visibility": "public"
                },
                {
                  "canonicalName": "MiniMinerV2.PoolInfo",
                  "id": 2137,
                  "members": [
                    {
                      "constant": false,
                      "id": 2132,
                      "mutability": "mutable",
                      "name": "accGoldNuggetPerShare",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2137,
                      "src": "1742:29:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      },
                      "typeName": {
                        "id": 2131,
                        "name": "uint128",
                        "nodeType": "ElementaryTypeName",
                        "src": "1742:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2134,
                      "mutability": "mutable",
                      "name": "lastRewardTime",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2137,
                      "src": "1781:21:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      },
                      "typeName": {
                        "id": 2133,
                        "name": "uint64",
                        "nodeType": "ElementaryTypeName",
                        "src": "1781:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2136,
                      "mutability": "mutable",
                      "name": "allocPoint",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2137,
                      "src": "1812:17:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      },
                      "typeName": {
                        "id": 2135,
                        "name": "uint64",
                        "nodeType": "ElementaryTypeName",
                        "src": "1812:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "PoolInfo",
                  "nodeType": "StructDefinition",
                  "scope": 3244,
                  "src": "1716:120:6",
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 2138,
                    "nodeType": "StructuredDocumentation",
                    "src": "1842:37:6",
                    "text": "@notice Address of GOLN contract."
                  },
                  "functionSelector": "fe4fc140",
                  "id": 2140,
                  "mutability": "immutable",
                  "name": "GOLN",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3244,
                  "src": "1884:28:6",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$337",
                    "typeString": "contract IERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2139,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 337,
                    "src": "1884:6:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$337",
                      "typeString": "contract IERC20"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "7cd07e47",
                  "id": 2142,
                  "mutability": "mutable",
                  "name": "migrator",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3244,
                  "src": "2023:30:6",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IMigratorMiner_$2108",
                    "typeString": "contract IMigratorMiner"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2141,
                    "name": "IMigratorMiner",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2108,
                    "src": "2023:14:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IMigratorMiner_$2108",
                      "typeString": "contract IMigratorMiner"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 2143,
                    "nodeType": "StructuredDocumentation",
                    "src": "2060:35:6",
                    "text": "@notice Info of each MCV2 pool."
                  },
                  "functionSelector": "1526fe27",
                  "id": 2146,
                  "mutability": "mutable",
                  "name": "poolInfo",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3244,
                  "src": "2100:26:6",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_PoolInfo_$2137_storage_$dyn_storage",
                    "typeString": "struct MiniMinerV2.PoolInfo[]"
                  },
                  "typeName": {
                    "baseType": {
                      "contractScope": null,
                      "id": 2144,
                      "name": "PoolInfo",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 2137,
                      "src": "2100:8:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_PoolInfo_$2137_storage_ptr",
                        "typeString": "struct MiniMinerV2.PoolInfo"
                      }
                    },
                    "id": 2145,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "2100:10:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_PoolInfo_$2137_storage_$dyn_storage_ptr",
                      "typeString": "struct MiniMinerV2.PoolInfo[]"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 2147,
                    "nodeType": "StructuredDocumentation",
                    "src": "2132:55:6",
                    "text": "@notice Address of the LP token for each MCV2 pool."
                  },
                  "functionSelector": "78ed5d1f",
                  "id": 2150,
                  "mutability": "mutable",
                  "name": "lpToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3244,
                  "src": "2192:23:6",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage",
                    "typeString": "contract IERC20[]"
                  },
                  "typeName": {
                    "baseType": {
                      "contractScope": null,
                      "id": 2148,
                      "name": "IERC20",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 337,
                      "src": "2192:6:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20_$337",
                        "typeString": "contract IERC20"
                      }
                    },
                    "id": 2149,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "2192:8:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage_ptr",
                      "typeString": "contract IERC20[]"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 2151,
                    "nodeType": "StructuredDocumentation",
                    "src": "2221:57:6",
                    "text": "@notice Address of each `IRewarder` contract in MCV2."
                  },
                  "functionSelector": "c346253d",
                  "id": 2154,
                  "mutability": "mutable",
                  "name": "rewarder",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3244,
                  "src": "2283:27:6",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_contract$_IRewarder_$3320_$dyn_storage",
                    "typeString": "contract IRewarder[]"
                  },
                  "typeName": {
                    "baseType": {
                      "contractScope": null,
                      "id": 2152,
                      "name": "IRewarder",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 3320,
                      "src": "2283:9:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IRewarder_$3320",
                        "typeString": "contract IRewarder"
                      }
                    },
                    "id": 2153,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "2283:11:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_contract$_IRewarder_$3320_$dyn_storage_ptr",
                      "typeString": "contract IRewarder[]"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 2155,
                    "nodeType": "StructuredDocumentation",
                    "src": "2317:52:6",
                    "text": "@notice Info of each user that stakes LP tokens."
                  },
                  "functionSelector": "93f1a40b",
                  "id": 2161,
                  "mutability": "mutable",
                  "name": "userInfo",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3244,
                  "src": "2374:66:6",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$2130_storage_$_$",
                    "typeString": "mapping(uint256 => mapping(address => struct MiniMinerV2.UserInfo))"
                  },
                  "typeName": {
                    "id": 2160,
                    "keyType": {
                      "id": 2156,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2383:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2374:50:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$2130_storage_$_$",
                      "typeString": "mapping(uint256 => mapping(address => struct MiniMinerV2.UserInfo))"
                    },
                    "valueType": {
                      "id": 2159,
                      "keyType": {
                        "id": 2157,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2403:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "2394:29:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$2130_storage_$",
                        "typeString": "mapping(address => struct MiniMinerV2.UserInfo)"
                      },
                      "valueType": {
                        "contractScope": null,
                        "id": 2158,
                        "name": "UserInfo",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2130,
                        "src": "2414:8:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                          "typeString": "struct MiniMinerV2.UserInfo"
                        }
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 2162,
                    "nodeType": "StructuredDocumentation",
                    "src": "2446:88:6",
                    "text": "@dev Total allocation points. Must be the sum of all allocation points in all pools."
                  },
                  "functionSelector": "17caf6f1",
                  "id": 2164,
                  "mutability": "mutable",
                  "name": "totalAllocPoint",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3244,
                  "src": "2539:30:6",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2163,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2539:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "ea63f9ff",
                  "id": 2166,
                  "mutability": "mutable",
                  "name": "goldnuggetPerSecond",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3244,
                  "src": "2576:34:6",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2165,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2576:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "id": 2169,
                  "mutability": "constant",
                  "name": "ACC_GOLN_PRECISION",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3244,
                  "src": "2616:50:6",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2167,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2616:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "31653132",
                    "id": 2168,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2662:4:6",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1000000000000_by_1",
                      "typeString": "int_const 1000000000000"
                    },
                    "value": "1e12"
                  },
                  "visibility": "private"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 2179,
                  "name": "Deposit",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 2178,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2171,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2179,
                        "src": "2687:20:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2170,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2687:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2173,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2179,
                        "src": "2709:19:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2172,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2709:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2175,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2179,
                        "src": "2730:14:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2174,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2730:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2177,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2179,
                        "src": "2746:18:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2176,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2746:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2686:79:6"
                  },
                  "src": "2673:93:6"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 2189,
                  "name": "Withdraw",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 2188,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2181,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2189,
                        "src": "2786:20:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2180,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2786:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2183,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2189,
                        "src": "2808:19:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2182,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2808:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2185,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2189,
                        "src": "2829:14:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2184,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2829:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2187,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2189,
                        "src": "2845:18:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2186,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2845:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2785:79:6"
                  },
                  "src": "2771:94:6"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 2199,
                  "name": "EmergencyWithdraw",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 2198,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2191,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2199,
                        "src": "2894:20:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2190,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2894:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2193,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2199,
                        "src": "2916:19:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2192,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2916:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2195,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2199,
                        "src": "2937:14:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2194,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2937:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2197,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2199,
                        "src": "2953:18:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2196,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2953:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2893:79:6"
                  },
                  "src": "2870:103:6"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 2207,
                  "name": "Harvest",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 2206,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2201,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2207,
                        "src": "2992:20:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2200,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2992:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2203,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2207,
                        "src": "3014:19:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2202,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3014:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2205,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2207,
                        "src": "3035:14:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2204,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3035:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2991:59:6"
                  },
                  "src": "2978:73:6"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 2217,
                  "name": "LogPoolAddition",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 2216,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2209,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2217,
                        "src": "3078:19:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2208,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3078:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2211,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "allocPoint",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2217,
                        "src": "3099:18:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2210,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3099:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2213,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "lpToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2217,
                        "src": "3119:22:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$337",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 2212,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 337,
                          "src": "3119:6:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2215,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "rewarder",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2217,
                        "src": "3143:26:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IRewarder_$3320",
                          "typeString": "contract IRewarder"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 2214,
                          "name": "IRewarder",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 3320,
                          "src": "3143:9:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IRewarder_$3320",
                            "typeString": "contract IRewarder"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3077:93:6"
                  },
                  "src": "3056:115:6"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 2227,
                  "name": "LogSetPool",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 2226,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2219,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2227,
                        "src": "3193:19:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2218,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3193:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2221,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "allocPoint",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2227,
                        "src": "3214:18:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2220,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3214:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2223,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "rewarder",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2227,
                        "src": "3234:26:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IRewarder_$3320",
                          "typeString": "contract IRewarder"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 2222,
                          "name": "IRewarder",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 3320,
                          "src": "3234:9:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IRewarder_$3320",
                            "typeString": "contract IRewarder"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2225,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "overwrite",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2227,
                        "src": "3262:14:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2224,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3262:4:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3192:85:6"
                  },
                  "src": "3176:102:6"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 2237,
                  "name": "LogUpdatePool",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 2236,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2229,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2237,
                        "src": "3303:19:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2228,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3303:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2231,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "lastRewardTime",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2237,
                        "src": "3324:21:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 2230,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "3324:6:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2233,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "lpSupply",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2237,
                        "src": "3347:16:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2232,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3347:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2235,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "accGoldNuggetPerShare",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2237,
                        "src": "3365:29:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2234,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3365:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3302:93:6"
                  },
                  "src": "3283:113:6"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 2241,
                  "name": "LogGoldNuggetPerSecond",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 2240,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2239,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "goldnuggetPerSecond",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2241,
                        "src": "3430:27:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2238,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3430:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3429:29:6"
                  },
                  "src": "3401:58:6"
                },
                {
                  "body": {
                    "id": 2251,
                    "nodeType": "Block",
                    "src": "3564:35:6",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2249,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2247,
                            "name": "GOLN",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2140,
                            "src": "3574:4:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 2248,
                            "name": "_goldnugget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2244,
                            "src": "3581:11:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            }
                          },
                          "src": "3574:18:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "id": 2250,
                        "nodeType": "ExpressionStatement",
                        "src": "3574:18:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2242,
                    "nodeType": "StructuredDocumentation",
                    "src": "3465:55:6",
                    "text": "@param _goldnugget The GOLN token contract address."
                  },
                  "id": 2252,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2245,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2244,
                        "mutability": "mutable",
                        "name": "_goldnugget",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2252,
                        "src": "3537:18:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$337",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 2243,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 337,
                          "src": "3537:6:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3536:20:6"
                  },
                  "returnParameters": {
                    "id": 2246,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3564:0:6"
                  },
                  "scope": 3244,
                  "src": "3525:74:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 2263,
                    "nodeType": "Block",
                    "src": "3713:40:6",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2261,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2258,
                            "name": "pools",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2256,
                            "src": "3723:5:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2259,
                              "name": "poolInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2146,
                              "src": "3731:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_PoolInfo_$2137_storage_$dyn_storage",
                                "typeString": "struct MiniMinerV2.PoolInfo storage ref[] storage ref"
                              }
                            },
                            "id": 2260,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3731:15:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3723:23:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2262,
                        "nodeType": "ExpressionStatement",
                        "src": "3723:23:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2253,
                    "nodeType": "StructuredDocumentation",
                    "src": "3605:45:6",
                    "text": "@notice Returns the number of MCV2 pools."
                  },
                  "functionSelector": "081e3eda",
                  "id": 2264,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "poolLength",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2254,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3674:2:6"
                  },
                  "returnParameters": {
                    "id": 2257,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2256,
                        "mutability": "mutable",
                        "name": "pools",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2264,
                        "src": "3698:13:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2255,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3698:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3697:15:6"
                  },
                  "scope": 3244,
                  "src": "3655:98:6",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 2321,
                    "nodeType": "Block",
                    "src": "4173:397:6",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2281,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2276,
                            "name": "totalAllocPoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2164,
                            "src": "4183:15:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2279,
                                "name": "allocPoint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2267,
                                "src": "4221:10:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 2277,
                                "name": "totalAllocPoint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2164,
                                "src": "4201:15:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2278,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 577,
                              "src": "4201:19:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 2280,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4201:31:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4183:49:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2282,
                        "nodeType": "ExpressionStatement",
                        "src": "4183:49:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2286,
                              "name": "_lpToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2269,
                              "src": "4255:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2283,
                              "name": "lpToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2150,
                              "src": "4242:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage",
                                "typeString": "contract IERC20[] storage ref"
                              }
                            },
                            "id": 2285,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4242:12:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_contract$_IERC20_$337_$returns$__$",
                              "typeString": "function (contract IERC20)"
                            }
                          },
                          "id": 2287,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4242:22:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2288,
                        "nodeType": "ExpressionStatement",
                        "src": "4242:22:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2292,
                              "name": "_rewarder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2271,
                              "src": "4288:9:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IRewarder_$3320",
                                "typeString": "contract IRewarder"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IRewarder_$3320",
                                "typeString": "contract IRewarder"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2289,
                              "name": "rewarder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2154,
                              "src": "4274:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IRewarder_$3320_$dyn_storage",
                                "typeString": "contract IRewarder[] storage ref"
                              }
                            },
                            "id": 2291,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4274:13:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_contract$_IRewarder_$3320_$returns$__$",
                              "typeString": "function (contract IRewarder)"
                            }
                          },
                          "id": 2293,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4274:24:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2294,
                        "nodeType": "ExpressionStatement",
                        "src": "4274:24:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2299,
                                      "name": "allocPoint",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2267,
                                      "src": "4358:10:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 2300,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "to64",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 679,
                                    "src": "4358:15:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256) pure returns (uint64)"
                                    }
                                  },
                                  "id": 2301,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4358:17:6",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2302,
                                        "name": "block",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -4,
                                        "src": "4405:5:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_block",
                                          "typeString": "block"
                                        }
                                      },
                                      "id": 2303,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "timestamp",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "4405:15:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 2304,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "to64",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 679,
                                    "src": "4405:20:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256) pure returns (uint64)"
                                    }
                                  },
                                  "id": 2305,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4405:22:6",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 2306,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4464:1:6",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  },
                                  {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  },
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 2298,
                                "name": "PoolInfo",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2137,
                                "src": "4323:8:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_struct$_PoolInfo_$2137_storage_ptr_$",
                                  "typeString": "type(struct MiniMinerV2.PoolInfo storage pointer)"
                                }
                              },
                              "id": 2307,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "structConstructorCall",
                              "lValueRequested": false,
                              "names": [
                                "allocPoint",
                                "lastRewardTime",
                                "accGoldNuggetPerShare"
                              ],
                              "nodeType": "FunctionCall",
                              "src": "4323:153:6",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                                "typeString": "struct MiniMinerV2.PoolInfo memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                                "typeString": "struct MiniMinerV2.PoolInfo memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2295,
                              "name": "poolInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2146,
                              "src": "4309:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_PoolInfo_$2137_storage_$dyn_storage",
                                "typeString": "struct MiniMinerV2.PoolInfo storage ref[] storage ref"
                              }
                            },
                            "id": 2297,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4309:13:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_struct$_PoolInfo_$2137_storage_$returns$__$",
                              "typeString": "function (struct MiniMinerV2.PoolInfo storage ref)"
                            }
                          },
                          "id": 2308,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4309:168:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2309,
                        "nodeType": "ExpressionStatement",
                        "src": "4309:168:6"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 2314,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4527:1:6",
                                  "subdenomination": null,
                                  "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": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2311,
                                    "name": "lpToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2150,
                                    "src": "4508:7:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage",
                                      "typeString": "contract IERC20[] storage ref"
                                    }
                                  },
                                  "id": 2312,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "4508:14:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 2313,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 599,
                                "src": "4508:18:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 2315,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4508:21:6",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2316,
                              "name": "allocPoint",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2267,
                              "src": "4531:10:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2317,
                              "name": "_lpToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2269,
                              "src": "4543:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2318,
                              "name": "_rewarder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2271,
                              "src": "4553:9:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IRewarder_$3320",
                                "typeString": "contract IRewarder"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              },
                              {
                                "typeIdentifier": "t_contract$_IRewarder_$3320",
                                "typeString": "contract IRewarder"
                              }
                            ],
                            "id": 2310,
                            "name": "LogPoolAddition",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2217,
                            "src": "4492:15:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_contract$_IERC20_$337_$_t_contract$_IRewarder_$3320_$returns$__$",
                              "typeString": "function (uint256,uint256,contract IERC20,contract IRewarder)"
                            }
                          },
                          "id": 2319,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4492:71:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2320,
                        "nodeType": "EmitStatement",
                        "src": "4487:76:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2265,
                    "nodeType": "StructuredDocumentation",
                    "src": "3759:321:6",
                    "text": "@notice Add a new LP to the pool. Can only be called by the owner.\n DO NOT add the same LP token more than once. Rewards will be messed up if you do.\n @param allocPoint AP of the new pool.\n @param _lpToken Address of the LP ERC-20 token.\n @param _rewarder Address of the rewarder delegate."
                  },
                  "functionSelector": "ab7de098",
                  "id": 2322,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 2274,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 2273,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 270,
                        "src": "4163:9:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4163:9:6"
                    }
                  ],
                  "name": "add",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2272,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2267,
                        "mutability": "mutable",
                        "name": "allocPoint",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2322,
                        "src": "4098:18:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2266,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4098:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2269,
                        "mutability": "mutable",
                        "name": "_lpToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2322,
                        "src": "4118:15:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$337",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 2268,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 337,
                          "src": "4118:6:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2271,
                        "mutability": "mutable",
                        "name": "_rewarder",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2322,
                        "src": "4135:19:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IRewarder_$3320",
                          "typeString": "contract IRewarder"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 2270,
                          "name": "IRewarder",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 3320,
                          "src": "4135:9:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IRewarder_$3320",
                            "typeString": "contract IRewarder"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4097:58:6"
                  },
                  "returnParameters": {
                    "id": 2275,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4173:0:6"
                  },
                  "scope": 3244,
                  "src": "4085:485:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 2379,
                    "nodeType": "Block",
                    "src": "5058:304:6",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2347,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2336,
                            "name": "totalAllocPoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2164,
                            "src": "5068:15:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2345,
                                "name": "_allocPoint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2327,
                                "src": "5137:11:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 2339,
                                        "name": "poolInfo",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2146,
                                        "src": "5106:8:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_PoolInfo_$2137_storage_$dyn_storage",
                                          "typeString": "struct MiniMinerV2.PoolInfo storage ref[] storage ref"
                                        }
                                      },
                                      "id": 2341,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 2340,
                                        "name": "_pid",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2325,
                                        "src": "5115:4:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "5106:14:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PoolInfo_$2137_storage",
                                        "typeString": "struct MiniMinerV2.PoolInfo storage ref"
                                      }
                                    },
                                    "id": 2342,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "allocPoint",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2136,
                                    "src": "5106:25:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2337,
                                    "name": "totalAllocPoint",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2164,
                                    "src": "5086:15:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 2338,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sub",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 599,
                                  "src": "5086:19:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 2343,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5086:46:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2344,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 577,
                              "src": "5086:50:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 2346,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5086:63:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5068:81:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2348,
                        "nodeType": "ExpressionStatement",
                        "src": "5068:81:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2356,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2349,
                                "name": "poolInfo",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2146,
                                "src": "5159:8:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_PoolInfo_$2137_storage_$dyn_storage",
                                  "typeString": "struct MiniMinerV2.PoolInfo storage ref[] storage ref"
                                }
                              },
                              "id": 2351,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2350,
                                "name": "_pid",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2325,
                                "src": "5168:4:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5159:14:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$2137_storage",
                                "typeString": "struct MiniMinerV2.PoolInfo storage ref"
                              }
                            },
                            "id": 2352,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "allocPoint",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2136,
                            "src": "5159:25:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "id": 2353,
                                "name": "_allocPoint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2327,
                                "src": "5187:11:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2354,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "to64",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 679,
                              "src": "5187:16:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256) pure returns (uint64)"
                              }
                            },
                            "id": 2355,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5187:18:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "src": "5159:46:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "id": 2357,
                        "nodeType": "ExpressionStatement",
                        "src": "5159:46:6"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 2358,
                          "name": "overwrite",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2331,
                          "src": "5219:9:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2366,
                        "nodeType": "IfStatement",
                        "src": "5215:46:6",
                        "trueBody": {
                          "id": 2365,
                          "nodeType": "Block",
                          "src": "5230:31:6",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2363,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 2359,
                                    "name": "rewarder",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2154,
                                    "src": "5232:8:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_contract$_IRewarder_$3320_$dyn_storage",
                                      "typeString": "contract IRewarder[] storage ref"
                                    }
                                  },
                                  "id": 2361,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 2360,
                                    "name": "_pid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2325,
                                    "src": "5241:4:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "5232:14:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IRewarder_$3320",
                                    "typeString": "contract IRewarder"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 2362,
                                  "name": "_rewarder",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2329,
                                  "src": "5249:9:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IRewarder_$3320",
                                    "typeString": "contract IRewarder"
                                  }
                                },
                                "src": "5232:26:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IRewarder_$3320",
                                  "typeString": "contract IRewarder"
                                }
                              },
                              "id": 2364,
                              "nodeType": "ExpressionStatement",
                              "src": "5232:26:6"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2368,
                              "name": "_pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2325,
                              "src": "5286:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2369,
                              "name": "_allocPoint",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2327,
                              "src": "5292:11:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "condition": {
                                "argumentTypes": null,
                                "id": 2370,
                                "name": "overwrite",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2331,
                                "src": "5305:9:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 2372,
                                  "name": "rewarder",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2154,
                                  "src": "5329:8:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_contract$_IRewarder_$3320_$dyn_storage",
                                    "typeString": "contract IRewarder[] storage ref"
                                  }
                                },
                                "id": 2374,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 2373,
                                  "name": "_pid",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2325,
                                  "src": "5338:4:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5329:14:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IRewarder_$3320",
                                  "typeString": "contract IRewarder"
                                }
                              },
                              "id": 2375,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "Conditional",
                              "src": "5305:38:6",
                              "trueExpression": {
                                "argumentTypes": null,
                                "id": 2371,
                                "name": "_rewarder",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2329,
                                "src": "5317:9:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IRewarder_$3320",
                                  "typeString": "contract IRewarder"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IRewarder_$3320",
                                "typeString": "contract IRewarder"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2376,
                              "name": "overwrite",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2331,
                              "src": "5345:9:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_contract$_IRewarder_$3320",
                                "typeString": "contract IRewarder"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 2367,
                            "name": "LogSetPool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2227,
                            "src": "5275:10:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_contract$_IRewarder_$3320_$_t_bool_$returns$__$",
                              "typeString": "function (uint256,uint256,contract IRewarder,bool)"
                            }
                          },
                          "id": 2377,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5275:80:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2378,
                        "nodeType": "EmitStatement",
                        "src": "5270:85:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2323,
                    "nodeType": "StructuredDocumentation",
                    "src": "4576:375:6",
                    "text": "@notice Update the given pool's GOLN allocation point and `IRewarder` contract. Can only be called by the owner.\n @param _pid The index of the pool. See `poolInfo`.\n @param _allocPoint New AP of the pool.\n @param _rewarder Address of the rewarder delegate.\n @param overwrite True if _rewarder should be `set`. Otherwise `_rewarder` is ignored."
                  },
                  "functionSelector": "88bba42f",
                  "id": 2380,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 2334,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 2333,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 270,
                        "src": "5048:9:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5048:9:6"
                    }
                  ],
                  "name": "set",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2332,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2325,
                        "mutability": "mutable",
                        "name": "_pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2380,
                        "src": "4969:12:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2324,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4969:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2327,
                        "mutability": "mutable",
                        "name": "_allocPoint",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2380,
                        "src": "4983:19:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2326,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4983:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2329,
                        "mutability": "mutable",
                        "name": "_rewarder",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2380,
                        "src": "5004:19:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IRewarder_$3320",
                          "typeString": "contract IRewarder"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 2328,
                          "name": "IRewarder",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 3320,
                          "src": "5004:9:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IRewarder_$3320",
                            "typeString": "contract IRewarder"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2331,
                        "mutability": "mutable",
                        "name": "overwrite",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2380,
                        "src": "5025:14:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2330,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "5025:4:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4968:72:6"
                  },
                  "returnParameters": {
                    "id": 2335,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5058:0:6"
                  },
                  "scope": 3244,
                  "src": "4956:406:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 2396,
                    "nodeType": "Block",
                    "src": "5637:118:6",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2390,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2388,
                            "name": "goldnuggetPerSecond",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2166,
                            "src": "5647:19:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 2389,
                            "name": "_goldnuggetPerSecond",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2383,
                            "src": "5669:20:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5647:42:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2391,
                        "nodeType": "ExpressionStatement",
                        "src": "5647:42:6"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2393,
                              "name": "_goldnuggetPerSecond",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2383,
                              "src": "5727:20:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2392,
                            "name": "LogGoldNuggetPerSecond",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2241,
                            "src": "5704:22:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 2394,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5704:44:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2395,
                        "nodeType": "EmitStatement",
                        "src": "5699:49:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2381,
                    "nodeType": "StructuredDocumentation",
                    "src": "5368:185:6",
                    "text": "@notice Sets the goldnugget per second to be distributed. Can only be called by the owner.\n @param _goldnuggetPerSecond The amount of GoldNugget to be distributed per second."
                  },
                  "functionSelector": "cac435dc",
                  "id": 2397,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 2386,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 2385,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 270,
                        "src": "5627:9:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5627:9:6"
                    }
                  ],
                  "name": "setGoldNuggetPerSecond",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2384,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2383,
                        "mutability": "mutable",
                        "name": "_goldnuggetPerSecond",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2397,
                        "src": "5590:28:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2382,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5590:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5589:30:6"
                  },
                  "returnParameters": {
                    "id": 2387,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5637:0:6"
                  },
                  "scope": 3244,
                  "src": "5558:197:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 2409,
                    "nodeType": "Block",
                    "src": "5957:37:6",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2407,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2405,
                            "name": "migrator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2142,
                            "src": "5967:8:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMigratorMiner_$2108",
                              "typeString": "contract IMigratorMiner"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 2406,
                            "name": "_migrator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2400,
                            "src": "5978:9:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMigratorMiner_$2108",
                              "typeString": "contract IMigratorMiner"
                            }
                          },
                          "src": "5967:20:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMigratorMiner_$2108",
                            "typeString": "contract IMigratorMiner"
                          }
                        },
                        "id": 2408,
                        "nodeType": "ExpressionStatement",
                        "src": "5967:20:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2398,
                    "nodeType": "StructuredDocumentation",
                    "src": "5761:127:6",
                    "text": "@notice Set the `migrator` contract. Can only be called by the owner.\n @param _migrator The contract address to set."
                  },
                  "functionSelector": "23cf3118",
                  "id": 2410,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 2403,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 2402,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 270,
                        "src": "5947:9:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5947:9:6"
                    }
                  ],
                  "name": "setMigrator",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2401,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2400,
                        "mutability": "mutable",
                        "name": "_migrator",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2410,
                        "src": "5914:24:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IMigratorMiner_$2108",
                          "typeString": "contract IMigratorMiner"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 2399,
                          "name": "IMigratorMiner",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 2108,
                          "src": "5914:14:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMigratorMiner_$2108",
                            "typeString": "contract IMigratorMiner"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5913:26:6"
                  },
                  "returnParameters": {
                    "id": 2404,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5957:0:6"
                  },
                  "scope": 3244,
                  "src": "5893:101:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 2481,
                    "nodeType": "Block",
                    "src": "6186:434:6",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 2425,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2419,
                                    "name": "migrator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2142,
                                    "src": "6212:8:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IMigratorMiner_$2108",
                                      "typeString": "contract IMigratorMiner"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_IMigratorMiner_$2108",
                                      "typeString": "contract IMigratorMiner"
                                    }
                                  ],
                                  "id": 2418,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6204:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 2417,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6204:7:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 2420,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6204:17:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 2423,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6233:1:6",
                                    "subdenomination": null,
                                    "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": 2422,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6225:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 2421,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6225:7:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 2424,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6225:10:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "6204:31:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "476f6c644d696e657256323a206e6f206d69677261746f7220736574",
                              "id": 2426,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6237:30:6",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9d04c574879bdb3f838197153a8fcc3b91ac7992b8a1dec456cef85dbe5c83c3",
                                "typeString": "literal_string \"GoldMinerV2: no migrator set\""
                              },
                              "value": "GoldMinerV2: no migrator set"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9d04c574879bdb3f838197153a8fcc3b91ac7992b8a1dec456cef85dbe5c83c3",
                                "typeString": "literal_string \"GoldMinerV2: no migrator set\""
                              }
                            ],
                            "id": 2416,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6196:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2427,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6196:72:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2428,
                        "nodeType": "ExpressionStatement",
                        "src": "6196:72:6"
                      },
                      {
                        "assignments": [
                          2430
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2430,
                            "mutability": "mutable",
                            "name": "_lpToken",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2481,
                            "src": "6278:15:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 2429,
                              "name": "IERC20",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 337,
                              "src": "6278:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2434,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2431,
                            "name": "lpToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2150,
                            "src": "6296:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage",
                              "typeString": "contract IERC20[] storage ref"
                            }
                          },
                          "id": 2433,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2432,
                            "name": "_pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2413,
                            "src": "6304:4:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6296:13:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6278:31:6"
                      },
                      {
                        "assignments": [
                          2436
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2436,
                            "mutability": "mutable",
                            "name": "bal",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2481,
                            "src": "6319:11:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2435,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6319:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2444,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2441,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "6360:4:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_MiniMinerV2_$3244",
                                    "typeString": "contract MiniMinerV2"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_MiniMinerV2_$3244",
                                    "typeString": "contract MiniMinerV2"
                                  }
                                ],
                                "id": 2440,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "6352:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 2439,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6352:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 2442,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6352:13:6",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2437,
                              "name": "_lpToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2430,
                              "src": "6333:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 2438,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 285,
                            "src": "6333:18:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 2443,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6333:33:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6319:47:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2450,
                                  "name": "migrator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2142,
                                  "src": "6401:8:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IMigratorMiner_$2108",
                                    "typeString": "contract IMigratorMiner"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IMigratorMiner_$2108",
                                    "typeString": "contract IMigratorMiner"
                                  }
                                ],
                                "id": 2449,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "6393:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 2448,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6393:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 2451,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6393:17:6",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2452,
                              "name": "bal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2436,
                              "src": "6412:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2445,
                              "name": "_lpToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2430,
                              "src": "6376:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 2447,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "approve",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 303,
                            "src": "6376:16:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 2453,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6376:40:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2454,
                        "nodeType": "ExpressionStatement",
                        "src": "6376:40:6"
                      },
                      {
                        "assignments": [
                          2456
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2456,
                            "mutability": "mutable",
                            "name": "newLpToken",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2481,
                            "src": "6426:17:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 2455,
                              "name": "IERC20",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 337,
                              "src": "6426:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2461,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2459,
                              "name": "_lpToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2430,
                              "src": "6463:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2457,
                              "name": "migrator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2142,
                              "src": "6446:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IMigratorMiner_$2108",
                                "typeString": "contract IMigratorMiner"
                              }
                            },
                            "id": 2458,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "migrate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2107,
                            "src": "6446:16:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IERC20_$337_$returns$_t_contract$_IERC20_$337_$",
                              "typeString": "function (contract IERC20) external returns (contract IERC20)"
                            }
                          },
                          "id": 2460,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6446:26:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6426:46:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2471,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 2463,
                                "name": "bal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2436,
                                "src": "6490:3:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2468,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "6526:4:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MiniMinerV2_$3244",
                                          "typeString": "contract MiniMinerV2"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MiniMinerV2_$3244",
                                          "typeString": "contract MiniMinerV2"
                                        }
                                      ],
                                      "id": 2467,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "6518:7:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 2466,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6518:7:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 2469,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6518:13:6",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2464,
                                    "name": "newLpToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2456,
                                    "src": "6497:10:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$337",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 2465,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "balanceOf",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 285,
                                  "src": "6497:20:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address) view external returns (uint256)"
                                  }
                                },
                                "id": 2470,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6497:35:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6490:42:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "476f6c644d696e657256323a206d696772617465642062616c616e6365206d757374206d61746368",
                              "id": 2472,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6534:42:6",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_feb7ece8af2b4b45eb85d609559704471d2bb79ce204f7a188fdc0b7890f6301",
                                "typeString": "literal_string \"GoldMinerV2: migrated balance must match\""
                              },
                              "value": "GoldMinerV2: migrated balance must match"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_feb7ece8af2b4b45eb85d609559704471d2bb79ce204f7a188fdc0b7890f6301",
                                "typeString": "literal_string \"GoldMinerV2: migrated balance must match\""
                              }
                            ],
                            "id": 2462,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6482:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2473,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6482:95:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2474,
                        "nodeType": "ExpressionStatement",
                        "src": "6482:95:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2479,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2475,
                              "name": "lpToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2150,
                              "src": "6587:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage",
                                "typeString": "contract IERC20[] storage ref"
                              }
                            },
                            "id": 2477,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2476,
                              "name": "_pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2413,
                              "src": "6595:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6587:13:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 2478,
                            "name": "newLpToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2456,
                            "src": "6603:10:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            }
                          },
                          "src": "6587:26:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "id": 2480,
                        "nodeType": "ExpressionStatement",
                        "src": "6587:26:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2411,
                    "nodeType": "StructuredDocumentation",
                    "src": "6000:143:6",
                    "text": "@notice Migrate LP token to another LP contract through the `migrator` contract.\n @param _pid The index of the pool. See `poolInfo`."
                  },
                  "functionSelector": "454b0608",
                  "id": 2482,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "migrate",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2414,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2413,
                        "mutability": "mutable",
                        "name": "_pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2482,
                        "src": "6165:12:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2412,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6165:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6164:14:6"
                  },
                  "returnParameters": {
                    "id": 2415,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6186:0:6"
                  },
                  "scope": 3244,
                  "src": "6148:472:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 2587,
                    "nodeType": "Block",
                    "src": "6936:738:6",
                    "statements": [
                      {
                        "assignments": [
                          2493
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2493,
                            "mutability": "mutable",
                            "name": "pool",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2587,
                            "src": "6946:20:6",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                              "typeString": "struct MiniMinerV2.PoolInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 2492,
                              "name": "PoolInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 2137,
                              "src": "6946:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$2137_storage_ptr",
                                "typeString": "struct MiniMinerV2.PoolInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2497,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2494,
                            "name": "poolInfo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2146,
                            "src": "6969:8:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_PoolInfo_$2137_storage_$dyn_storage",
                              "typeString": "struct MiniMinerV2.PoolInfo storage ref[] storage ref"
                            }
                          },
                          "id": 2496,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2495,
                            "name": "_pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2485,
                            "src": "6978:4:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6969:14:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$2137_storage",
                            "typeString": "struct MiniMinerV2.PoolInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6946:37:6"
                      },
                      {
                        "assignments": [
                          2499
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2499,
                            "mutability": "mutable",
                            "name": "user",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2587,
                            "src": "6993:21:6",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                              "typeString": "struct MiniMinerV2.UserInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 2498,
                              "name": "UserInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 2130,
                              "src": "6993:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                "typeString": "struct MiniMinerV2.UserInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2505,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2500,
                              "name": "userInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2161,
                              "src": "7017:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$2130_storage_$_$",
                                "typeString": "mapping(uint256 => mapping(address => struct MiniMinerV2.UserInfo storage ref))"
                              }
                            },
                            "id": 2502,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2501,
                              "name": "_pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2485,
                              "src": "7026:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7017:14:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$2130_storage_$",
                              "typeString": "mapping(address => struct MiniMinerV2.UserInfo storage ref)"
                            }
                          },
                          "id": 2504,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2503,
                            "name": "_user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2487,
                            "src": "7032:5:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "7017:21:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$2130_storage",
                            "typeString": "struct MiniMinerV2.UserInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6993:45:6"
                      },
                      {
                        "assignments": [
                          2507
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2507,
                            "mutability": "mutable",
                            "name": "accGoldNuggetPerShare",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2587,
                            "src": "7048:29:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2506,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7048:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2510,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2508,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2493,
                            "src": "7080:4:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                              "typeString": "struct MiniMinerV2.PoolInfo memory"
                            }
                          },
                          "id": 2509,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "accGoldNuggetPerShare",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2132,
                          "src": "7080:26:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7048:58:6"
                      },
                      {
                        "assignments": [
                          2512
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2512,
                            "mutability": "mutable",
                            "name": "lpSupply",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2587,
                            "src": "7116:16:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2511,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7116:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2522,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2519,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "7167:4:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_MiniMinerV2_$3244",
                                    "typeString": "contract MiniMinerV2"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_MiniMinerV2_$3244",
                                    "typeString": "contract MiniMinerV2"
                                  }
                                ],
                                "id": 2518,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "7159:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 2517,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7159:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 2520,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7159:13:6",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2513,
                                "name": "lpToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2150,
                                "src": "7135:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage",
                                  "typeString": "contract IERC20[] storage ref"
                                }
                              },
                              "id": 2515,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2514,
                                "name": "_pid",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2485,
                                "src": "7143:4:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7135:13:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 2516,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 285,
                            "src": "7135:23:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 2521,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7135:38:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7116:57:6"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2531,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2527,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2523,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "7187:5:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 2524,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "7187:15:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2525,
                                "name": "pool",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2493,
                                "src": "7205:4:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                                  "typeString": "struct MiniMinerV2.PoolInfo memory"
                                }
                              },
                              "id": 2526,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "lastRewardTime",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2134,
                              "src": "7205:19:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "src": "7187:37:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2530,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2528,
                              "name": "lpSupply",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2512,
                              "src": "7228:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 2529,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7240:1:6",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "7228:13:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "7187:54:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2567,
                        "nodeType": "IfStatement",
                        "src": "7183:365:6",
                        "trueBody": {
                          "id": 2566,
                          "nodeType": "Block",
                          "src": "7243:305:6",
                          "statements": [
                            {
                              "assignments": [
                                2533
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2533,
                                  "mutability": "mutable",
                                  "name": "time",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 2566,
                                  "src": "7257:12:6",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 2532,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7257:7:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2540,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2537,
                                      "name": "pool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2493,
                                      "src": "7292:4:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                                        "typeString": "struct MiniMinerV2.PoolInfo memory"
                                      }
                                    },
                                    "id": 2538,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "lastRewardTime",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2134,
                                    "src": "7292:19:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2534,
                                      "name": "block",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -4,
                                      "src": "7272:5:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_block",
                                        "typeString": "block"
                                      }
                                    },
                                    "id": 2535,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "timestamp",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "7272:15:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 2536,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sub",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 599,
                                  "src": "7272:19:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 2539,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7272:40:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "7257:55:6"
                            },
                            {
                              "assignments": [
                                2542
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2542,
                                  "mutability": "mutable",
                                  "name": "goldnuggetReward",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 2566,
                                  "src": "7326:24:6",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 2541,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7326:7:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2553,
                              "initialValue": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2552,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2548,
                                        "name": "pool",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2493,
                                        "src": "7387:4:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                                          "typeString": "struct MiniMinerV2.PoolInfo memory"
                                        }
                                      },
                                      "id": 2549,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "allocPoint",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2136,
                                      "src": "7387:15:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 2545,
                                          "name": "goldnuggetPerSecond",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2166,
                                          "src": "7362:19:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 2543,
                                          "name": "time",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2533,
                                          "src": "7353:4:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 2544,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 627,
                                        "src": "7353:8:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 2546,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7353:29:6",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 2547,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 627,
                                    "src": "7353:33:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 2550,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7353:50:6",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 2551,
                                  "name": "totalAllocPoint",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2164,
                                  "src": "7406:15:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7353:68:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "7326:95:6"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2564,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 2554,
                                  "name": "accGoldNuggetPerShare",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2507,
                                  "src": "7435:21:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 2562,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 2559,
                                            "name": "ACC_GOLN_PRECISION",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2169,
                                            "src": "7506:18:6",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 2557,
                                            "name": "goldnuggetReward",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2542,
                                            "src": "7485:16:6",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 2558,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "mul",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 627,
                                          "src": "7485:20:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 2560,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7485:40:6",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "/",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 2561,
                                        "name": "lpSupply",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2512,
                                        "src": "7528:8:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "7485:51:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2555,
                                      "name": "accGoldNuggetPerShare",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2507,
                                      "src": "7459:21:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 2556,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 577,
                                    "src": "7459:25:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 2563,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7459:78:6",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7435:102:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2565,
                              "nodeType": "ExpressionStatement",
                              "src": "7435:102:6"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2585,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2568,
                            "name": "pending",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2490,
                            "src": "7557:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2580,
                                      "name": "user",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2499,
                                      "src": "7639:4:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                        "typeString": "struct MiniMinerV2.UserInfo storage pointer"
                                      }
                                    },
                                    "id": 2581,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "rewardDebt",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2129,
                                    "src": "7639:15:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 2577,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 2574,
                                              "name": "accGoldNuggetPerShare",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2507,
                                              "src": "7590:21:6",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 2571,
                                                "name": "user",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2499,
                                                "src": "7574:4:6",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                                  "typeString": "struct MiniMinerV2.UserInfo storage pointer"
                                                }
                                              },
                                              "id": 2572,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "amount",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 2127,
                                              "src": "7574:11:6",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 2573,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "mul",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 627,
                                            "src": "7574:15:6",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                          },
                                          "id": 2575,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "7574:38:6",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "/",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 2576,
                                          "name": "ACC_GOLN_PRECISION",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2169,
                                          "src": "7615:18:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "7574:59:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 2570,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "7567:6:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_int256_$",
                                        "typeString": "type(int256)"
                                      },
                                      "typeName": {
                                        "id": 2569,
                                        "name": "int256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "7567:6:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 2578,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7567:67:6",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "id": 2579,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sub",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3457,
                                  "src": "7567:71:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                    "typeString": "function (int256,int256) pure returns (int256)"
                                  }
                                },
                                "id": 2582,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7567:88:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "id": 2583,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "toUInt256",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3517,
                              "src": "7567:98:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_uint256_$bound_to$_t_int256_$",
                                "typeString": "function (int256) pure returns (uint256)"
                              }
                            },
                            "id": 2584,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7567:100:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7557:110:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2586,
                        "nodeType": "ExpressionStatement",
                        "src": "7557:110:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2483,
                    "nodeType": "StructuredDocumentation",
                    "src": "6626:209:6",
                    "text": "@notice View function to see pending GOLN on frontend.\n @param _pid The index of the pool. See `poolInfo`.\n @param _user Address of user.\n @return pending GOLN reward for a given user."
                  },
                  "functionSelector": "ffb6c9ec",
                  "id": 2588,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "pendingGoldNugget",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2488,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2485,
                        "mutability": "mutable",
                        "name": "_pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2588,
                        "src": "6867:12:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2484,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6867:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2487,
                        "mutability": "mutable",
                        "name": "_user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2588,
                        "src": "6881:13:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2486,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6881:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6866:29:6"
                  },
                  "returnParameters": {
                    "id": 2491,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2490,
                        "mutability": "mutable",
                        "name": "pending",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2588,
                        "src": "6919:15:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2489,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6919:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6918:17:6"
                  },
                  "scope": 3244,
                  "src": "6840:834:6",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 2618,
                    "nodeType": "Block",
                    "src": "7911:129:6",
                    "statements": [
                      {
                        "assignments": [
                          2596
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2596,
                            "mutability": "mutable",
                            "name": "len",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2618,
                            "src": "7921:11:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2595,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7921:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2599,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2597,
                            "name": "pids",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2592,
                            "src": "7935:4:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          "id": 2598,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "7935:11:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7921:25:6"
                      },
                      {
                        "body": {
                          "id": 2616,
                          "nodeType": "Block",
                          "src": "7990:44:6",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 2611,
                                      "name": "pids",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2592,
                                      "src": "8015:4:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                        "typeString": "uint256[] calldata"
                                      }
                                    },
                                    "id": 2613,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 2612,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2601,
                                      "src": "8020:1:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "8015:7:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 2610,
                                  "name": "updatePool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2722,
                                  "src": "8004:10:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_struct$_PoolInfo_$2137_memory_ptr_$",
                                    "typeString": "function (uint256) returns (struct MiniMinerV2.PoolInfo memory)"
                                  }
                                },
                                "id": 2614,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8004:19:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                                  "typeString": "struct MiniMinerV2.PoolInfo memory"
                                }
                              },
                              "id": 2615,
                              "nodeType": "ExpressionStatement",
                              "src": "8004:19:6"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2606,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2604,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2601,
                            "src": "7976:1:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2605,
                            "name": "len",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2596,
                            "src": "7980:3:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7976:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2617,
                        "initializationExpression": {
                          "assignments": [
                            2601
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 2601,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 2617,
                              "src": "7961:9:6",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 2600,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "7961:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 2603,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2602,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7973:1:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "7961:13:6"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 2608,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "7985:3:6",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 2607,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2601,
                              "src": "7987:1:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2609,
                          "nodeType": "ExpressionStatement",
                          "src": "7985:3:6"
                        },
                        "nodeType": "ForStatement",
                        "src": "7956:78:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2589,
                    "nodeType": "StructuredDocumentation",
                    "src": "7680:167:6",
                    "text": "@notice Update reward variables for all pools. Be careful of gas spending!\n @param pids Pool IDs of all to be updated. Make sure to update all active pools."
                  },
                  "functionSelector": "57a5b58c",
                  "id": 2619,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "massUpdatePools",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2593,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2592,
                        "mutability": "mutable",
                        "name": "pids",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2619,
                        "src": "7877:23:6",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2590,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "7877:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2591,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "7877:9:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7876:25:6"
                  },
                  "returnParameters": {
                    "id": 2594,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7911:0:6"
                  },
                  "scope": 3244,
                  "src": "7852:188:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 2721,
                    "nodeType": "Block",
                    "src": "8290:730:6",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2631,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2627,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2625,
                            "src": "8300:4:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                              "typeString": "struct MiniMinerV2.PoolInfo memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2628,
                              "name": "poolInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2146,
                              "src": "8307:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_PoolInfo_$2137_storage_$dyn_storage",
                                "typeString": "struct MiniMinerV2.PoolInfo storage ref[] storage ref"
                              }
                            },
                            "id": 2630,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2629,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2622,
                              "src": "8316:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "8307:13:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$2137_storage",
                              "typeString": "struct MiniMinerV2.PoolInfo storage ref"
                            }
                          },
                          "src": "8300:20:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                            "typeString": "struct MiniMinerV2.PoolInfo memory"
                          }
                        },
                        "id": 2632,
                        "nodeType": "ExpressionStatement",
                        "src": "8300:20:6"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2637,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2633,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "8334:5:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 2634,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "8334:15:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2635,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2625,
                              "src": "8352:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                                "typeString": "struct MiniMinerV2.PoolInfo memory"
                              }
                            },
                            "id": 2636,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "lastRewardTime",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2134,
                            "src": "8352:19:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "src": "8334:37:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2720,
                        "nodeType": "IfStatement",
                        "src": "8330:684:6",
                        "trueBody": {
                          "id": 2719,
                          "nodeType": "Block",
                          "src": "8373:641:6",
                          "statements": [
                            {
                              "assignments": [
                                2639
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2639,
                                  "mutability": "mutable",
                                  "name": "lpSupply",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 2719,
                                  "src": "8387:16:6",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 2638,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8387:7:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2649,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2646,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "8437:4:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MiniMinerV2_$3244",
                                          "typeString": "contract MiniMinerV2"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MiniMinerV2_$3244",
                                          "typeString": "contract MiniMinerV2"
                                        }
                                      ],
                                      "id": 2645,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "8429:7:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 2644,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "8429:7:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 2647,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8429:13:6",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 2640,
                                      "name": "lpToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2150,
                                      "src": "8406:7:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage",
                                        "typeString": "contract IERC20[] storage ref"
                                      }
                                    },
                                    "id": 2642,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 2641,
                                      "name": "pid",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2622,
                                      "src": "8414:3:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "8406:12:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$337",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 2643,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "balanceOf",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 285,
                                  "src": "8406:22:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address) view external returns (uint256)"
                                  }
                                },
                                "id": 2648,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8406:37:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "8387:56:6"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2652,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2650,
                                  "name": "lpSupply",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2639,
                                  "src": "8461:8:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 2651,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8472:1:6",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "8461:12:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 2694,
                              "nodeType": "IfStatement",
                              "src": "8457:359:6",
                              "trueBody": {
                                "id": 2693,
                                "nodeType": "Block",
                                "src": "8475:341:6",
                                "statements": [
                                  {
                                    "assignments": [
                                      2654
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 2654,
                                        "mutability": "mutable",
                                        "name": "time",
                                        "nodeType": "VariableDeclaration",
                                        "overrides": null,
                                        "scope": 2693,
                                        "src": "8493:12:6",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 2653,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "8493:7:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 2661,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 2658,
                                            "name": "pool",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2625,
                                            "src": "8528:4:6",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                                              "typeString": "struct MiniMinerV2.PoolInfo memory"
                                            }
                                          },
                                          "id": 2659,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "lastRewardTime",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2134,
                                          "src": "8528:19:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint64",
                                            "typeString": "uint64"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint64",
                                            "typeString": "uint64"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 2655,
                                            "name": "block",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -4,
                                            "src": "8508:5:6",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_block",
                                              "typeString": "block"
                                            }
                                          },
                                          "id": 2656,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "timestamp",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": null,
                                          "src": "8508:15:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 2657,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sub",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 599,
                                        "src": "8508:19:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 2660,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "8508:40:6",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "8493:55:6"
                                  },
                                  {
                                    "assignments": [
                                      2663
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 2663,
                                        "mutability": "mutable",
                                        "name": "goldnuggetReward",
                                        "nodeType": "VariableDeclaration",
                                        "overrides": null,
                                        "scope": 2693,
                                        "src": "8566:24:6",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 2662,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "8566:7:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 2674,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 2673,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 2669,
                                              "name": "pool",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2625,
                                              "src": "8627:4:6",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                                                "typeString": "struct MiniMinerV2.PoolInfo memory"
                                              }
                                            },
                                            "id": 2670,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "allocPoint",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 2136,
                                            "src": "8627:15:6",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint64",
                                              "typeString": "uint64"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint64",
                                              "typeString": "uint64"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 2666,
                                                "name": "goldnuggetPerSecond",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2166,
                                                "src": "8602:19:6",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 2664,
                                                "name": "time",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2654,
                                                "src": "8593:4:6",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 2665,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "mul",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 627,
                                              "src": "8593:8:6",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                              }
                                            },
                                            "id": 2667,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "8593:29:6",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 2668,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "mul",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 627,
                                          "src": "8593:33:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 2671,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8593:50:6",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "/",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 2672,
                                        "name": "totalAllocPoint",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2164,
                                        "src": "8646:15:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "8593:68:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "8566:95:6"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2691,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 2675,
                                          "name": "pool",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2625,
                                          "src": "8679:4:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                                            "typeString": "struct MiniMinerV2.PoolInfo memory"
                                          }
                                        },
                                        "id": 2677,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberName": "accGoldNuggetPerShare",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2132,
                                        "src": "8679:26:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "arguments": [],
                                            "expression": {
                                              "argumentTypes": [],
                                              "expression": {
                                                "argumentTypes": null,
                                                "components": [
                                                  {
                                                    "argumentTypes": null,
                                                    "commonType": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    },
                                                    "id": 2686,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                      "argumentTypes": null,
                                                      "arguments": [
                                                        {
                                                          "argumentTypes": null,
                                                          "id": 2683,
                                                          "name": "ACC_GOLN_PRECISION",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 2169,
                                                          "src": "8761:18:6",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        }
                                                      ],
                                                      "expression": {
                                                        "argumentTypes": [
                                                          {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        ],
                                                        "expression": {
                                                          "argumentTypes": null,
                                                          "id": 2681,
                                                          "name": "goldnuggetReward",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 2663,
                                                          "src": "8740:16:6",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        },
                                                        "id": 2682,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "mul",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 627,
                                                        "src": "8740:20:6",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                        }
                                                      },
                                                      "id": 2684,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "kind": "functionCall",
                                                      "lValueRequested": false,
                                                      "names": [],
                                                      "nodeType": "FunctionCall",
                                                      "src": "8740:40:6",
                                                      "tryCall": false,
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "/",
                                                    "rightExpression": {
                                                      "argumentTypes": null,
                                                      "id": 2685,
                                                      "name": "lpSupply",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 2639,
                                                      "src": "8783:8:6",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "8740:51:6",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  }
                                                ],
                                                "id": 2687,
                                                "isConstant": false,
                                                "isInlineArray": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "TupleExpression",
                                                "src": "8739:53:6",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 2688,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "to128",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 653,
                                              "src": "8739:59:6",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint128_$bound_to$_t_uint256_$",
                                                "typeString": "function (uint256) pure returns (uint128)"
                                              }
                                            },
                                            "id": 2689,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "8739:61:6",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint128",
                                              "typeString": "uint128"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint128",
                                              "typeString": "uint128"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 2678,
                                              "name": "pool",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2625,
                                              "src": "8708:4:6",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                                                "typeString": "struct MiniMinerV2.PoolInfo memory"
                                              }
                                            },
                                            "id": 2679,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "accGoldNuggetPerShare",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 2132,
                                            "src": "8708:26:6",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint128",
                                              "typeString": "uint128"
                                            }
                                          },
                                          "id": 2680,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "add",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 728,
                                          "src": "8708:30:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint128_$_t_uint128_$returns$_t_uint128_$bound_to$_t_uint128_$",
                                            "typeString": "function (uint128,uint128) pure returns (uint128)"
                                          }
                                        },
                                        "id": 2690,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8708:93:6",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      },
                                      "src": "8679:122:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    },
                                    "id": 2692,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8679:122:6"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2702,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2695,
                                    "name": "pool",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2625,
                                    "src": "8829:4:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                                      "typeString": "struct MiniMinerV2.PoolInfo memory"
                                    }
                                  },
                                  "id": 2697,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "lastRewardTime",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2134,
                                  "src": "8829:19:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2698,
                                        "name": "block",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -4,
                                        "src": "8851:5:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_block",
                                          "typeString": "block"
                                        }
                                      },
                                      "id": 2699,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "timestamp",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "8851:15:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 2700,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "to64",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 679,
                                    "src": "8851:20:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256) pure returns (uint64)"
                                    }
                                  },
                                  "id": 2701,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8851:22:6",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                "src": "8829:44:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              "id": 2703,
                              "nodeType": "ExpressionStatement",
                              "src": "8829:44:6"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2708,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 2704,
                                    "name": "poolInfo",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2146,
                                    "src": "8887:8:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_PoolInfo_$2137_storage_$dyn_storage",
                                      "typeString": "struct MiniMinerV2.PoolInfo storage ref[] storage ref"
                                    }
                                  },
                                  "id": 2706,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 2705,
                                    "name": "pid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2622,
                                    "src": "8896:3:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "8887:13:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PoolInfo_$2137_storage",
                                    "typeString": "struct MiniMinerV2.PoolInfo storage ref"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 2707,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2625,
                                  "src": "8903:4:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                                    "typeString": "struct MiniMinerV2.PoolInfo memory"
                                  }
                                },
                                "src": "8887:20:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PoolInfo_$2137_storage",
                                  "typeString": "struct MiniMinerV2.PoolInfo storage ref"
                                }
                              },
                              "id": 2709,
                              "nodeType": "ExpressionStatement",
                              "src": "8887:20:6"
                            },
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2711,
                                    "name": "pid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2622,
                                    "src": "8940:3:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2712,
                                      "name": "pool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2625,
                                      "src": "8945:4:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                                        "typeString": "struct MiniMinerV2.PoolInfo memory"
                                      }
                                    },
                                    "id": 2713,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "lastRewardTime",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2134,
                                    "src": "8945:19:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2714,
                                    "name": "lpSupply",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2639,
                                    "src": "8966:8:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2715,
                                      "name": "pool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2625,
                                      "src": "8976:4:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                                        "typeString": "struct MiniMinerV2.PoolInfo memory"
                                      }
                                    },
                                    "id": 2716,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "accGoldNuggetPerShare",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2132,
                                    "src": "8976:26:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  ],
                                  "id": 2710,
                                  "name": "LogUpdatePool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2237,
                                  "src": "8926:13:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint64_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256,uint64,uint256,uint256)"
                                  }
                                },
                                "id": 2717,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8926:77:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2718,
                              "nodeType": "EmitStatement",
                              "src": "8921:82:6"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2620,
                    "nodeType": "StructuredDocumentation",
                    "src": "8046:168:6",
                    "text": "@notice Update reward variables of the given pool.\n @param pid The index of the pool. See `poolInfo`.\n @return pool Returns the pool that was updated."
                  },
                  "functionSelector": "51eb05a6",
                  "id": 2722,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "updatePool",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2623,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2622,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2722,
                        "src": "8239:11:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2621,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8239:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8238:13:6"
                  },
                  "returnParameters": {
                    "id": 2626,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2625,
                        "mutability": "mutable",
                        "name": "pool",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2722,
                        "src": "8268:20:6",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                          "typeString": "struct MiniMinerV2.PoolInfo"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 2624,
                          "name": "PoolInfo",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 2137,
                          "src": "8268:8:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$2137_storage_ptr",
                            "typeString": "struct MiniMinerV2.PoolInfo"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8267:22:6"
                  },
                  "scope": 3244,
                  "src": "8219:801:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 2824,
                    "nodeType": "Block",
                    "src": "9322:615:6",
                    "statements": [
                      {
                        "assignments": [
                          2733
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2733,
                            "mutability": "mutable",
                            "name": "pool",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2824,
                            "src": "9332:20:6",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                              "typeString": "struct MiniMinerV2.PoolInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 2732,
                              "name": "PoolInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 2137,
                              "src": "9332:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$2137_storage_ptr",
                                "typeString": "struct MiniMinerV2.PoolInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2737,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2735,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2725,
                              "src": "9366:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2734,
                            "name": "updatePool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2722,
                            "src": "9355:10:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_struct$_PoolInfo_$2137_memory_ptr_$",
                              "typeString": "function (uint256) returns (struct MiniMinerV2.PoolInfo memory)"
                            }
                          },
                          "id": 2736,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9355:15:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                            "typeString": "struct MiniMinerV2.PoolInfo memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9332:38:6"
                      },
                      {
                        "assignments": [
                          2739
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2739,
                            "mutability": "mutable",
                            "name": "user",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2824,
                            "src": "9380:21:6",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                              "typeString": "struct MiniMinerV2.UserInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 2738,
                              "name": "UserInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 2130,
                              "src": "9380:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                "typeString": "struct MiniMinerV2.UserInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2745,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2740,
                              "name": "userInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2161,
                              "src": "9404:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$2130_storage_$_$",
                                "typeString": "mapping(uint256 => mapping(address => struct MiniMinerV2.UserInfo storage ref))"
                              }
                            },
                            "id": 2742,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2741,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2725,
                              "src": "9413:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9404:13:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$2130_storage_$",
                              "typeString": "mapping(address => struct MiniMinerV2.UserInfo storage ref)"
                            }
                          },
                          "id": 2744,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2743,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2729,
                            "src": "9418:2:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "9404:17:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$2130_storage",
                            "typeString": "struct MiniMinerV2.UserInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9380:41:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2754,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2746,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2739,
                              "src": "9451:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                "typeString": "struct MiniMinerV2.UserInfo storage pointer"
                              }
                            },
                            "id": 2748,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2127,
                            "src": "9451:11:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2752,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2727,
                                "src": "9481:6:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2749,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2739,
                                  "src": "9465:4:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                    "typeString": "struct MiniMinerV2.UserInfo storage pointer"
                                  }
                                },
                                "id": 2750,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "amount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2127,
                                "src": "9465:11:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2751,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 577,
                              "src": "9465:15:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 2753,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9465:23:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9451:37:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2755,
                        "nodeType": "ExpressionStatement",
                        "src": "9451:37:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2773,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2756,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2739,
                              "src": "9498:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                "typeString": "struct MiniMinerV2.UserInfo storage pointer"
                              }
                            },
                            "id": 2758,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "rewardDebt",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2129,
                            "src": "9498:15:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 2770,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 2766,
                                            "name": "pool",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2733,
                                            "src": "9554:4:6",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                                              "typeString": "struct MiniMinerV2.PoolInfo memory"
                                            }
                                          },
                                          "id": 2767,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "accGoldNuggetPerShare",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2132,
                                          "src": "9554:26:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint128",
                                            "typeString": "uint128"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint128",
                                            "typeString": "uint128"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 2764,
                                          "name": "amount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2727,
                                          "src": "9543:6:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 2765,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 627,
                                        "src": "9543:10:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 2768,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "9543:38:6",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "/",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 2769,
                                      "name": "ACC_GOLN_PRECISION",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2169,
                                      "src": "9584:18:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "9543:59:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 2763,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9536:6:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_int256_$",
                                    "typeString": "type(int256)"
                                  },
                                  "typeName": {
                                    "id": 2762,
                                    "name": "int256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9536:6:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 2771,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9536:67:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2759,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2739,
                                  "src": "9516:4:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                    "typeString": "struct MiniMinerV2.UserInfo storage pointer"
                                  }
                                },
                                "id": 2760,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "rewardDebt",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2129,
                                "src": "9516:15:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "id": 2761,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3497,
                              "src": "9516:19:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                "typeString": "function (int256,int256) pure returns (int256)"
                              }
                            },
                            "id": 2772,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9516:88:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "9498:106:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 2774,
                        "nodeType": "ExpressionStatement",
                        "src": "9498:106:6"
                      },
                      {
                        "assignments": [
                          2776
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2776,
                            "mutability": "mutable",
                            "name": "_rewarder",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2824,
                            "src": "9639:19:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IRewarder_$3320",
                              "typeString": "contract IRewarder"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 2775,
                              "name": "IRewarder",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 3320,
                              "src": "9639:9:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IRewarder_$3320",
                                "typeString": "contract IRewarder"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2780,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2777,
                            "name": "rewarder",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2154,
                            "src": "9661:8:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_contract$_IRewarder_$3320_$dyn_storage",
                              "typeString": "contract IRewarder[] storage ref"
                            }
                          },
                          "id": 2779,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2778,
                            "name": "pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2725,
                            "src": "9670:3:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "9661:13:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IRewarder_$3320",
                            "typeString": "contract IRewarder"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9639:35:6"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 2789,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2783,
                                "name": "_rewarder",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2776,
                                "src": "9696:9:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IRewarder_$3320",
                                  "typeString": "contract IRewarder"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IRewarder_$3320",
                                  "typeString": "contract IRewarder"
                                }
                              ],
                              "id": 2782,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "9688:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 2781,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "9688:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 2784,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9688:18:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2787,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9718:1:6",
                                "subdenomination": null,
                                "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": 2786,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "9710:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 2785,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "9710:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 2788,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9710:10:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "9688:32:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2802,
                        "nodeType": "IfStatement",
                        "src": "9684:120:6",
                        "trueBody": {
                          "id": 2801,
                          "nodeType": "Block",
                          "src": "9722:82:6",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2793,
                                    "name": "pid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2725,
                                    "src": "9765:3:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2794,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2729,
                                    "src": "9770:2:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2795,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2729,
                                    "src": "9774:2:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 2796,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9778:1:6",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2797,
                                      "name": "user",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2739,
                                      "src": "9781:4:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                        "typeString": "struct MiniMinerV2.UserInfo storage pointer"
                                      }
                                    },
                                    "id": 2798,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "amount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2127,
                                    "src": "9781:11:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2790,
                                    "name": "_rewarder",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2776,
                                    "src": "9736:9:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IRewarder_$3320",
                                      "typeString": "contract IRewarder"
                                    }
                                  },
                                  "id": 2792,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "onGoldNuggetReward",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3304,
                                  "src": "9736:28:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256,address,address,uint256,uint256) external"
                                  }
                                },
                                "id": 2799,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9736:57:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2800,
                              "nodeType": "ExpressionStatement",
                              "src": "9736:57:6"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2807,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "9844:3:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2808,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "9844:10:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2811,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "9864:4:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_MiniMinerV2_$3244",
                                    "typeString": "contract MiniMinerV2"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_MiniMinerV2_$3244",
                                    "typeString": "contract MiniMinerV2"
                                  }
                                ],
                                "id": 2810,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9856:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 2809,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "9856:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 2812,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9856:13:6",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2813,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2727,
                              "src": "9871:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2803,
                                "name": "lpToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2150,
                                "src": "9814:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage",
                                  "typeString": "contract IERC20[] storage ref"
                                }
                              },
                              "id": 2805,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2804,
                                "name": "pid",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2725,
                                "src": "9822:3:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "9814:12:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 2806,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 552,
                            "src": "9814:29:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$337_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$337_$",
                              "typeString": "function (contract IERC20,address,address,uint256)"
                            }
                          },
                          "id": 2814,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9814:64:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2815,
                        "nodeType": "ExpressionStatement",
                        "src": "9814:64:6"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2817,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "9902:3:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2818,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "9902:10:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2819,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2725,
                              "src": "9914:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2820,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2727,
                              "src": "9919:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2821,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2729,
                              "src": "9927:2:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2816,
                            "name": "Deposit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2179,
                            "src": "9894:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$returns$__$",
                              "typeString": "function (address,uint256,uint256,address)"
                            }
                          },
                          "id": 2822,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9894:36:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2823,
                        "nodeType": "EmitStatement",
                        "src": "9889:41:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2723,
                    "nodeType": "StructuredDocumentation",
                    "src": "9026:226:6",
                    "text": "@notice Deposit LP tokens to MCV2 for GOLN allocation.\n @param pid The index of the pool. See `poolInfo`.\n @param amount LP token amount to deposit.\n @param to The receiver of `amount` deposit benefit."
                  },
                  "functionSelector": "8dbdbe6d",
                  "id": 2825,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "deposit",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2730,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2725,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2825,
                        "src": "9274:11:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2724,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9274:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2727,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2825,
                        "src": "9287:14:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2726,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9287:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2729,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2825,
                        "src": "9303:10:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2728,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9303:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9273:41:6"
                  },
                  "returnParameters": {
                    "id": 2731,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9322:0:6"
                  },
                  "scope": 3244,
                  "src": "9257:680:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 2924,
                    "nodeType": "Block",
                    "src": "10209:613:6",
                    "statements": [
                      {
                        "assignments": [
                          2836
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2836,
                            "mutability": "mutable",
                            "name": "pool",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2924,
                            "src": "10219:20:6",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                              "typeString": "struct MiniMinerV2.PoolInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 2835,
                              "name": "PoolInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 2137,
                              "src": "10219:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$2137_storage_ptr",
                                "typeString": "struct MiniMinerV2.PoolInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2840,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2838,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2828,
                              "src": "10253:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2837,
                            "name": "updatePool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2722,
                            "src": "10242:10:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_struct$_PoolInfo_$2137_memory_ptr_$",
                              "typeString": "function (uint256) returns (struct MiniMinerV2.PoolInfo memory)"
                            }
                          },
                          "id": 2839,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10242:15:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                            "typeString": "struct MiniMinerV2.PoolInfo memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10219:38:6"
                      },
                      {
                        "assignments": [
                          2842
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2842,
                            "mutability": "mutable",
                            "name": "user",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2924,
                            "src": "10267:21:6",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                              "typeString": "struct MiniMinerV2.UserInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 2841,
                              "name": "UserInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 2130,
                              "src": "10267:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                "typeString": "struct MiniMinerV2.UserInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2849,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2843,
                              "name": "userInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2161,
                              "src": "10291:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$2130_storage_$_$",
                                "typeString": "mapping(uint256 => mapping(address => struct MiniMinerV2.UserInfo storage ref))"
                              }
                            },
                            "id": 2845,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2844,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2828,
                              "src": "10300:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "10291:13:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$2130_storage_$",
                              "typeString": "mapping(address => struct MiniMinerV2.UserInfo storage ref)"
                            }
                          },
                          "id": 2848,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2846,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "10305:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2847,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "10305:10:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "10291:25:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$2130_storage",
                            "typeString": "struct MiniMinerV2.UserInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10267:49:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2867,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2850,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2842,
                              "src": "10346:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                "typeString": "struct MiniMinerV2.UserInfo storage pointer"
                              }
                            },
                            "id": 2852,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "rewardDebt",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2129,
                            "src": "10346:15:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 2864,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 2860,
                                            "name": "pool",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2836,
                                            "src": "10402:4:6",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                                              "typeString": "struct MiniMinerV2.PoolInfo memory"
                                            }
                                          },
                                          "id": 2861,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "accGoldNuggetPerShare",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2132,
                                          "src": "10402:26:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint128",
                                            "typeString": "uint128"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint128",
                                            "typeString": "uint128"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 2858,
                                          "name": "amount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2830,
                                          "src": "10391:6:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 2859,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 627,
                                        "src": "10391:10:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 2862,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "10391:38:6",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "/",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 2863,
                                      "name": "ACC_GOLN_PRECISION",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2169,
                                      "src": "10432:18:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "10391:59:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 2857,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "10384:6:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_int256_$",
                                    "typeString": "type(int256)"
                                  },
                                  "typeName": {
                                    "id": 2856,
                                    "name": "int256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10384:6:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 2865,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10384:67:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2853,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2842,
                                  "src": "10364:4:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                    "typeString": "struct MiniMinerV2.UserInfo storage pointer"
                                  }
                                },
                                "id": 2854,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "rewardDebt",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2129,
                                "src": "10364:15:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "id": 2855,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3457,
                              "src": "10364:19:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                "typeString": "function (int256,int256) pure returns (int256)"
                              }
                            },
                            "id": 2866,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10364:88:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "10346:106:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 2868,
                        "nodeType": "ExpressionStatement",
                        "src": "10346:106:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2877,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2869,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2842,
                              "src": "10462:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                "typeString": "struct MiniMinerV2.UserInfo storage pointer"
                              }
                            },
                            "id": 2871,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2127,
                            "src": "10462:11:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2875,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2830,
                                "src": "10492:6:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2872,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2842,
                                  "src": "10476:4:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                    "typeString": "struct MiniMinerV2.UserInfo storage pointer"
                                  }
                                },
                                "id": 2873,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "amount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2127,
                                "src": "10476:11:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2874,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 599,
                              "src": "10476:15:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 2876,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10476:23:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10462:37:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2878,
                        "nodeType": "ExpressionStatement",
                        "src": "10462:37:6"
                      },
                      {
                        "assignments": [
                          2880
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2880,
                            "mutability": "mutable",
                            "name": "_rewarder",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2924,
                            "src": "10534:19:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IRewarder_$3320",
                              "typeString": "contract IRewarder"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 2879,
                              "name": "IRewarder",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 3320,
                              "src": "10534:9:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IRewarder_$3320",
                                "typeString": "contract IRewarder"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2884,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2881,
                            "name": "rewarder",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2154,
                            "src": "10556:8:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_contract$_IRewarder_$3320_$dyn_storage",
                              "typeString": "contract IRewarder[] storage ref"
                            }
                          },
                          "id": 2883,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2882,
                            "name": "pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2828,
                            "src": "10565:3:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "10556:13:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IRewarder_$3320",
                            "typeString": "contract IRewarder"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10534:35:6"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 2893,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2887,
                                "name": "_rewarder",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2880,
                                "src": "10591:9:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IRewarder_$3320",
                                  "typeString": "contract IRewarder"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IRewarder_$3320",
                                  "typeString": "contract IRewarder"
                                }
                              ],
                              "id": 2886,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "10583:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 2885,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "10583:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 2888,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10583:18:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2891,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10613:1:6",
                                "subdenomination": null,
                                "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": 2890,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "10605:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 2889,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "10605:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 2892,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10605:10:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "10583:32:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2907,
                        "nodeType": "IfStatement",
                        "src": "10579:128:6",
                        "trueBody": {
                          "id": 2906,
                          "nodeType": "Block",
                          "src": "10617:90:6",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2897,
                                    "name": "pid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2828,
                                    "src": "10660:3:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2898,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "10665:3:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 2899,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "10665:10:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2900,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2832,
                                    "src": "10677:2:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 2901,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10681:1:6",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2902,
                                      "name": "user",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2842,
                                      "src": "10684:4:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                        "typeString": "struct MiniMinerV2.UserInfo storage pointer"
                                      }
                                    },
                                    "id": 2903,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "amount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2127,
                                    "src": "10684:11:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2894,
                                    "name": "_rewarder",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2880,
                                    "src": "10631:9:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IRewarder_$3320",
                                      "typeString": "contract IRewarder"
                                    }
                                  },
                                  "id": 2896,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "onGoldNuggetReward",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3304,
                                  "src": "10631:28:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256,address,address,uint256,uint256) external"
                                  }
                                },
                                "id": 2904,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10631:65:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2905,
                              "nodeType": "ExpressionStatement",
                              "src": "10631:65:6"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2912,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2832,
                              "src": "10751:2:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2913,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2830,
                              "src": "10755:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2908,
                                "name": "lpToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2150,
                                "src": "10725:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage",
                                  "typeString": "contract IERC20[] storage ref"
                                }
                              },
                              "id": 2910,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2909,
                                "name": "pid",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2828,
                                "src": "10733:3:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10725:12:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 2911,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 503,
                            "src": "10725:25:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$337_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$337_$",
                              "typeString": "function (contract IERC20,address,uint256)"
                            }
                          },
                          "id": 2914,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10725:37:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2915,
                        "nodeType": "ExpressionStatement",
                        "src": "10725:37:6"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2917,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "10787:3:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2918,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "10787:10:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2919,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2828,
                              "src": "10799:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2920,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2830,
                              "src": "10804:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2921,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2832,
                              "src": "10812:2:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2916,
                            "name": "Withdraw",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2189,
                            "src": "10778:8:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$returns$__$",
                              "typeString": "function (address,uint256,uint256,address)"
                            }
                          },
                          "id": 2922,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10778:37:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2923,
                        "nodeType": "EmitStatement",
                        "src": "10773:42:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2826,
                    "nodeType": "StructuredDocumentation",
                    "src": "9943:195:6",
                    "text": "@notice Withdraw LP tokens from MCV2.\n @param pid The index of the pool. See `poolInfo`.\n @param amount LP token amount to withdraw.\n @param to Receiver of the LP tokens."
                  },
                  "functionSelector": "0ad58d2f",
                  "id": 2925,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdraw",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2833,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2828,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2925,
                        "src": "10161:11:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2827,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10161:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2830,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2925,
                        "src": "10174:14:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2829,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10174:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2832,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2925,
                        "src": "10190:10:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2831,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10190:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10160:41:6"
                  },
                  "returnParameters": {
                    "id": 2834,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10209:0:6"
                  },
                  "scope": 3244,
                  "src": "10143:679:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 3026,
                    "nodeType": "Block",
                    "src": "11044:787:6",
                    "statements": [
                      {
                        "assignments": [
                          2934
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2934,
                            "mutability": "mutable",
                            "name": "pool",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3026,
                            "src": "11054:20:6",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                              "typeString": "struct MiniMinerV2.PoolInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 2933,
                              "name": "PoolInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 2137,
                              "src": "11054:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$2137_storage_ptr",
                                "typeString": "struct MiniMinerV2.PoolInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2938,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2936,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2928,
                              "src": "11088:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2935,
                            "name": "updatePool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2722,
                            "src": "11077:10:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_struct$_PoolInfo_$2137_memory_ptr_$",
                              "typeString": "function (uint256) returns (struct MiniMinerV2.PoolInfo memory)"
                            }
                          },
                          "id": 2937,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11077:15:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                            "typeString": "struct MiniMinerV2.PoolInfo memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11054:38:6"
                      },
                      {
                        "assignments": [
                          2940
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2940,
                            "mutability": "mutable",
                            "name": "user",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3026,
                            "src": "11102:21:6",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                              "typeString": "struct MiniMinerV2.UserInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 2939,
                              "name": "UserInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 2130,
                              "src": "11102:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                "typeString": "struct MiniMinerV2.UserInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2947,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2941,
                              "name": "userInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2161,
                              "src": "11126:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$2130_storage_$_$",
                                "typeString": "mapping(uint256 => mapping(address => struct MiniMinerV2.UserInfo storage ref))"
                              }
                            },
                            "id": 2943,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2942,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2928,
                              "src": "11135:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "11126:13:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$2130_storage_$",
                              "typeString": "mapping(address => struct MiniMinerV2.UserInfo storage ref)"
                            }
                          },
                          "id": 2946,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2944,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "11140:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2945,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "11140:10:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "11126:25:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$2130_storage",
                            "typeString": "struct MiniMinerV2.UserInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11102:49:6"
                      },
                      {
                        "assignments": [
                          2949
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2949,
                            "mutability": "mutable",
                            "name": "accumulatedGoldNugget",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3026,
                            "src": "11161:28:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 2948,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11161:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2961,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2959,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2955,
                                      "name": "pool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2934,
                                      "src": "11215:4:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                                        "typeString": "struct MiniMinerV2.PoolInfo memory"
                                      }
                                    },
                                    "id": 2956,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "accGoldNuggetPerShare",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2132,
                                    "src": "11215:26:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2952,
                                      "name": "user",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2940,
                                      "src": "11199:4:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                        "typeString": "struct MiniMinerV2.UserInfo storage pointer"
                                      }
                                    },
                                    "id": 2953,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "amount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2127,
                                    "src": "11199:11:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 2954,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 627,
                                  "src": "11199:15:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 2957,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11199:43:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 2958,
                                "name": "ACC_GOLN_PRECISION",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2169,
                                "src": "11245:18:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "11199:64:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2951,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "11192:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_int256_$",
                              "typeString": "type(int256)"
                            },
                            "typeName": {
                              "id": 2950,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11192:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 2960,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11192:72:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11161:103:6"
                      },
                      {
                        "assignments": [
                          2963
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2963,
                            "mutability": "mutable",
                            "name": "_pendingGoldNugget",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3026,
                            "src": "11274:26:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2962,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11274:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2971,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2966,
                                    "name": "user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2940,
                                    "src": "11329:4:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                      "typeString": "struct MiniMinerV2.UserInfo storage pointer"
                                    }
                                  },
                                  "id": 2967,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "rewardDebt",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2129,
                                  "src": "11329:15:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2964,
                                  "name": "accumulatedGoldNugget",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2949,
                                  "src": "11303:21:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 2965,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3457,
                                "src": "11303:25:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                  "typeString": "function (int256,int256) pure returns (int256)"
                                }
                              },
                              "id": 2968,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11303:42:6",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 2969,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "toUInt256",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3517,
                            "src": "11303:52:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_uint256_$bound_to$_t_int256_$",
                              "typeString": "function (int256) pure returns (uint256)"
                            }
                          },
                          "id": 2970,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11303:54:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11274:83:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2976,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2972,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2940,
                              "src": "11387:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                "typeString": "struct MiniMinerV2.UserInfo storage pointer"
                              }
                            },
                            "id": 2974,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "rewardDebt",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2129,
                            "src": "11387:15:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 2975,
                            "name": "accumulatedGoldNugget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2949,
                            "src": "11405:21:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "11387:39:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 2977,
                        "nodeType": "ExpressionStatement",
                        "src": "11387:39:6"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2980,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2978,
                            "name": "_pendingGoldNugget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2963,
                            "src": "11465:18:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2979,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11487:1:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "11465:23:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2989,
                        "nodeType": "IfStatement",
                        "src": "11461:95:6",
                        "trueBody": {
                          "id": 2988,
                          "nodeType": "Block",
                          "src": "11490:66:6",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2984,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2930,
                                    "src": "11522:2:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2985,
                                    "name": "_pendingGoldNugget",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2963,
                                    "src": "11526:18:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2981,
                                    "name": "GOLN",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2140,
                                    "src": "11504:4:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$337",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 2983,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "safeTransfer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 503,
                                  "src": "11504:17:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$337_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$337_$",
                                    "typeString": "function (contract IERC20,address,uint256)"
                                  }
                                },
                                "id": 2986,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11504:41:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2987,
                              "nodeType": "ExpressionStatement",
                              "src": "11504:41:6"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          2991
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2991,
                            "mutability": "mutable",
                            "name": "_rewarder",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3026,
                            "src": "11574:19:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IRewarder_$3320",
                              "typeString": "contract IRewarder"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 2990,
                              "name": "IRewarder",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 3320,
                              "src": "11574:9:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IRewarder_$3320",
                                "typeString": "contract IRewarder"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2995,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2992,
                            "name": "rewarder",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2154,
                            "src": "11596:8:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_contract$_IRewarder_$3320_$dyn_storage",
                              "typeString": "contract IRewarder[] storage ref"
                            }
                          },
                          "id": 2994,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2993,
                            "name": "pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2928,
                            "src": "11605:3:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "11596:13:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IRewarder_$3320",
                            "typeString": "contract IRewarder"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11574:35:6"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 3004,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2998,
                                "name": "_rewarder",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2991,
                                "src": "11631:9:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IRewarder_$3320",
                                  "typeString": "contract IRewarder"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IRewarder_$3320",
                                  "typeString": "contract IRewarder"
                                }
                              ],
                              "id": 2997,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "11623:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 2996,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "11623:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 2999,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11623:18:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 3002,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11653:1:6",
                                "subdenomination": null,
                                "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": 3001,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "11645:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 3000,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "11645:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 3003,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11645:10:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "11623:32:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3018,
                        "nodeType": "IfStatement",
                        "src": "11619:146:6",
                        "trueBody": {
                          "id": 3017,
                          "nodeType": "Block",
                          "src": "11657:108:6",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3008,
                                    "name": "pid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2928,
                                    "src": "11701:3:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3009,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "11706:3:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 3010,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "11706:10:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 3011,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2930,
                                    "src": "11718:2:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 3012,
                                    "name": "_pendingGoldNugget",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2963,
                                    "src": "11722:18:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3013,
                                      "name": "user",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2940,
                                      "src": "11742:4:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                        "typeString": "struct MiniMinerV2.UserInfo storage pointer"
                                      }
                                    },
                                    "id": 3014,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "amount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2127,
                                    "src": "11742:11:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3005,
                                    "name": "_rewarder",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2991,
                                    "src": "11671:9:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IRewarder_$3320",
                                      "typeString": "contract IRewarder"
                                    }
                                  },
                                  "id": 3007,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "onGoldNuggetReward",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3304,
                                  "src": "11671:28:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256,address,address,uint256,uint256) external"
                                  }
                                },
                                "id": 3015,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11671:83:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3016,
                              "nodeType": "ExpressionStatement",
                              "src": "11671:83:6"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3020,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "11788:3:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 3021,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "11788:10:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3022,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2928,
                              "src": "11800:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3023,
                              "name": "_pendingGoldNugget",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2963,
                              "src": "11805:18:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3019,
                            "name": "Harvest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2207,
                            "src": "11780:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 3024,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11780:44:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3025,
                        "nodeType": "EmitStatement",
                        "src": "11775:49:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2926,
                    "nodeType": "StructuredDocumentation",
                    "src": "10828:162:6",
                    "text": "@notice Harvest proceeds for transaction sender to `to`.\n @param pid The index of the pool. See `poolInfo`.\n @param to Receiver of GOLN rewards."
                  },
                  "functionSelector": "18fccc76",
                  "id": 3027,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "harvest",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2931,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2928,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3027,
                        "src": "11012:11:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2927,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11012:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2930,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3027,
                        "src": "11025:10:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2929,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11025:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11011:25:6"
                  },
                  "returnParameters": {
                    "id": 2932,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11044:0:6"
                  },
                  "scope": 3244,
                  "src": "10995:836:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 3163,
                    "nodeType": "Block",
                    "src": "12186:953:6",
                    "statements": [
                      {
                        "assignments": [
                          3038
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3038,
                            "mutability": "mutable",
                            "name": "pool",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3163,
                            "src": "12196:20:6",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                              "typeString": "struct MiniMinerV2.PoolInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 3037,
                              "name": "PoolInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 2137,
                              "src": "12196:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$2137_storage_ptr",
                                "typeString": "struct MiniMinerV2.PoolInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3042,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3040,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3030,
                              "src": "12230:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3039,
                            "name": "updatePool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2722,
                            "src": "12219:10:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_struct$_PoolInfo_$2137_memory_ptr_$",
                              "typeString": "function (uint256) returns (struct MiniMinerV2.PoolInfo memory)"
                            }
                          },
                          "id": 3041,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12219:15:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                            "typeString": "struct MiniMinerV2.PoolInfo memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12196:38:6"
                      },
                      {
                        "assignments": [
                          3044
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3044,
                            "mutability": "mutable",
                            "name": "user",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3163,
                            "src": "12244:21:6",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                              "typeString": "struct MiniMinerV2.UserInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 3043,
                              "name": "UserInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 2130,
                              "src": "12244:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                "typeString": "struct MiniMinerV2.UserInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3051,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3045,
                              "name": "userInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2161,
                              "src": "12268:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$2130_storage_$_$",
                                "typeString": "mapping(uint256 => mapping(address => struct MiniMinerV2.UserInfo storage ref))"
                              }
                            },
                            "id": 3047,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3046,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3030,
                              "src": "12277:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12268:13:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$2130_storage_$",
                              "typeString": "mapping(address => struct MiniMinerV2.UserInfo storage ref)"
                            }
                          },
                          "id": 3050,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3048,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "12282:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 3049,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "12282:10:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "12268:25:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$2130_storage",
                            "typeString": "struct MiniMinerV2.UserInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12244:49:6"
                      },
                      {
                        "assignments": [
                          3053
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3053,
                            "mutability": "mutable",
                            "name": "accumulatedGoldNugget",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3163,
                            "src": "12303:28:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 3052,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12303:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3065,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3063,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3059,
                                      "name": "pool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3038,
                                      "src": "12357:4:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                                        "typeString": "struct MiniMinerV2.PoolInfo memory"
                                      }
                                    },
                                    "id": 3060,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "accGoldNuggetPerShare",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2132,
                                    "src": "12357:26:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3056,
                                      "name": "user",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3044,
                                      "src": "12341:4:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                        "typeString": "struct MiniMinerV2.UserInfo storage pointer"
                                      }
                                    },
                                    "id": 3057,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "amount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2127,
                                    "src": "12341:11:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3058,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 627,
                                  "src": "12341:15:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 3061,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12341:43:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 3062,
                                "name": "ACC_GOLN_PRECISION",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2169,
                                "src": "12387:18:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "12341:64:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3055,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "12334:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_int256_$",
                              "typeString": "type(int256)"
                            },
                            "typeName": {
                              "id": 3054,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12334:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 3064,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12334:72:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12303:103:6"
                      },
                      {
                        "assignments": [
                          3067
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3067,
                            "mutability": "mutable",
                            "name": "_pendingGoldNugget",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3163,
                            "src": "12416:26:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3066,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12416:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3075,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3070,
                                    "name": "user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3044,
                                    "src": "12471:4:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                      "typeString": "struct MiniMinerV2.UserInfo storage pointer"
                                    }
                                  },
                                  "id": 3071,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "rewardDebt",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2129,
                                  "src": "12471:15:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3068,
                                  "name": "accumulatedGoldNugget",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3053,
                                  "src": "12445:21:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 3069,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3457,
                                "src": "12445:25:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                  "typeString": "function (int256,int256) pure returns (int256)"
                                }
                              },
                              "id": 3072,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12445:42:6",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 3073,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "toUInt256",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3517,
                            "src": "12445:52:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_uint256_$bound_to$_t_int256_$",
                              "typeString": "function (int256) pure returns (uint256)"
                            }
                          },
                          "id": 3074,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12445:54:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12416:83:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3092,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3076,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3044,
                              "src": "12529:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                "typeString": "struct MiniMinerV2.UserInfo storage pointer"
                              }
                            },
                            "id": 3078,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "rewardDebt",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2129,
                            "src": "12529:15:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 3089,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 3085,
                                            "name": "pool",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3038,
                                            "src": "12591:4:6",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_PoolInfo_$2137_memory_ptr",
                                              "typeString": "struct MiniMinerV2.PoolInfo memory"
                                            }
                                          },
                                          "id": 3086,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "accGoldNuggetPerShare",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2132,
                                          "src": "12591:26:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint128",
                                            "typeString": "uint128"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint128",
                                            "typeString": "uint128"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 3083,
                                          "name": "amount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3032,
                                          "src": "12580:6:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 3084,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 627,
                                        "src": "12580:10:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 3087,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "12580:38:6",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "/",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 3088,
                                      "name": "ACC_GOLN_PRECISION",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2169,
                                      "src": "12621:18:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "12580:59:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 3082,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "12573:6:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_int256_$",
                                    "typeString": "type(int256)"
                                  },
                                  "typeName": {
                                    "id": 3081,
                                    "name": "int256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12573:6:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 3090,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12573:67:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 3079,
                                "name": "accumulatedGoldNugget",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3053,
                                "src": "12547:21:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "id": 3080,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3457,
                              "src": "12547:25:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                "typeString": "function (int256,int256) pure returns (int256)"
                              }
                            },
                            "id": 3091,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12547:94:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "12529:112:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 3093,
                        "nodeType": "ExpressionStatement",
                        "src": "12529:112:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3102,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3094,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3044,
                              "src": "12651:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                "typeString": "struct MiniMinerV2.UserInfo storage pointer"
                              }
                            },
                            "id": 3096,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2127,
                            "src": "12651:11:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3100,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3032,
                                "src": "12681:6:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3097,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3044,
                                  "src": "12665:4:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                    "typeString": "struct MiniMinerV2.UserInfo storage pointer"
                                  }
                                },
                                "id": 3098,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "amount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2127,
                                "src": "12665:11:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3099,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 599,
                              "src": "12665:15:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 3101,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12665:23:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12651:37:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3103,
                        "nodeType": "ExpressionStatement",
                        "src": "12651:37:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3107,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3034,
                              "src": "12749:2:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3108,
                              "name": "_pendingGoldNugget",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3067,
                              "src": "12753:18:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 3104,
                              "name": "GOLN",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2140,
                              "src": "12731:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 3106,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 503,
                            "src": "12731:17:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$337_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$337_$",
                              "typeString": "function (contract IERC20,address,uint256)"
                            }
                          },
                          "id": 3109,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12731:41:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3110,
                        "nodeType": "ExpressionStatement",
                        "src": "12731:41:6"
                      },
                      {
                        "assignments": [
                          3112
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3112,
                            "mutability": "mutable",
                            "name": "_rewarder",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3163,
                            "src": "12783:19:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IRewarder_$3320",
                              "typeString": "contract IRewarder"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 3111,
                              "name": "IRewarder",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 3320,
                              "src": "12783:9:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IRewarder_$3320",
                                "typeString": "contract IRewarder"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3116,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3113,
                            "name": "rewarder",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2154,
                            "src": "12805:8:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_contract$_IRewarder_$3320_$dyn_storage",
                              "typeString": "contract IRewarder[] storage ref"
                            }
                          },
                          "id": 3115,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3114,
                            "name": "pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3030,
                            "src": "12814:3:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "12805:13:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IRewarder_$3320",
                            "typeString": "contract IRewarder"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12783:35:6"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 3125,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3119,
                                "name": "_rewarder",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3112,
                                "src": "12840:9:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IRewarder_$3320",
                                  "typeString": "contract IRewarder"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IRewarder_$3320",
                                  "typeString": "contract IRewarder"
                                }
                              ],
                              "id": 3118,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "12832:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 3117,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "12832:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 3120,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12832:18:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 3123,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12862:1:6",
                                "subdenomination": null,
                                "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": 3122,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "12854:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 3121,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "12854:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 3124,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12854:10:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "12832:32:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3139,
                        "nodeType": "IfStatement",
                        "src": "12828:145:6",
                        "trueBody": {
                          "id": 3138,
                          "nodeType": "Block",
                          "src": "12866:107:6",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3129,
                                    "name": "pid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3030,
                                    "src": "12909:3:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3130,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "12914:3:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 3131,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "12914:10:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 3132,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3034,
                                    "src": "12926:2:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 3133,
                                    "name": "_pendingGoldNugget",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3067,
                                    "src": "12930:18:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3134,
                                      "name": "user",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3044,
                                      "src": "12950:4:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                        "typeString": "struct MiniMinerV2.UserInfo storage pointer"
                                      }
                                    },
                                    "id": 3135,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "amount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2127,
                                    "src": "12950:11:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3126,
                                    "name": "_rewarder",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3112,
                                    "src": "12880:9:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IRewarder_$3320",
                                      "typeString": "contract IRewarder"
                                    }
                                  },
                                  "id": 3128,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "onGoldNuggetReward",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3304,
                                  "src": "12880:28:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256,address,address,uint256,uint256) external"
                                  }
                                },
                                "id": 3136,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12880:82:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3137,
                              "nodeType": "ExpressionStatement",
                              "src": "12880:82:6"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3144,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3034,
                              "src": "13009:2:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3145,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3032,
                              "src": "13013:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3140,
                                "name": "lpToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2150,
                                "src": "12983:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage",
                                  "typeString": "contract IERC20[] storage ref"
                                }
                              },
                              "id": 3142,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 3141,
                                "name": "pid",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3030,
                                "src": "12991:3:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "12983:12:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 3143,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 503,
                            "src": "12983:25:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$337_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$337_$",
                              "typeString": "function (contract IERC20,address,uint256)"
                            }
                          },
                          "id": 3146,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12983:37:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3147,
                        "nodeType": "ExpressionStatement",
                        "src": "12983:37:6"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3149,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "13045:3:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 3150,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "13045:10:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3151,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3030,
                              "src": "13057:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3152,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3032,
                              "src": "13062:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3153,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3034,
                              "src": "13070:2:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3148,
                            "name": "Withdraw",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2189,
                            "src": "13036:8:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$returns$__$",
                              "typeString": "function (address,uint256,uint256,address)"
                            }
                          },
                          "id": 3154,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13036:37:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3155,
                        "nodeType": "EmitStatement",
                        "src": "13031:42:6"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3157,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "13096:3:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 3158,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "13096:10:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3159,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3030,
                              "src": "13108:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3160,
                              "name": "_pendingGoldNugget",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3067,
                              "src": "13113:18:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3156,
                            "name": "Harvest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2207,
                            "src": "13088:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 3161,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13088:44:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3162,
                        "nodeType": "EmitStatement",
                        "src": "13083:49:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3028,
                    "nodeType": "StructuredDocumentation",
                    "src": "11841:264:6",
                    "text": "@notice Withdraw LP tokens from MCV2 and harvest proceeds for transaction sender to `to`.\n @param pid The index of the pool. See `poolInfo`.\n @param amount LP token amount to withdraw.\n @param to Receiver of the LP tokens and GOLN rewards."
                  },
                  "functionSelector": "d1abb907",
                  "id": 3164,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdrawAndHarvest",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3035,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3030,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3164,
                        "src": "12138:11:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3029,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12138:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3032,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3164,
                        "src": "12151:14:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3031,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12151:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3034,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3164,
                        "src": "12167:10:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3033,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12167:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12137:41:6"
                  },
                  "returnParameters": {
                    "id": 3036,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12186:0:6"
                  },
                  "scope": 3244,
                  "src": "12110:1029:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 3242,
                    "nodeType": "Block",
                    "src": "13378:507:6",
                    "statements": [
                      {
                        "assignments": [
                          3173
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3173,
                            "mutability": "mutable",
                            "name": "user",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3242,
                            "src": "13388:21:6",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                              "typeString": "struct MiniMinerV2.UserInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 3172,
                              "name": "UserInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 2130,
                              "src": "13388:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                "typeString": "struct MiniMinerV2.UserInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3180,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3174,
                              "name": "userInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2161,
                              "src": "13412:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$2130_storage_$_$",
                                "typeString": "mapping(uint256 => mapping(address => struct MiniMinerV2.UserInfo storage ref))"
                              }
                            },
                            "id": 3176,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3175,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3167,
                              "src": "13421:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "13412:13:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$2130_storage_$",
                              "typeString": "mapping(address => struct MiniMinerV2.UserInfo storage ref)"
                            }
                          },
                          "id": 3179,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3177,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "13426:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 3178,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "13426:10:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13412:25:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$2130_storage",
                            "typeString": "struct MiniMinerV2.UserInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13388:49:6"
                      },
                      {
                        "assignments": [
                          3182
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3182,
                            "mutability": "mutable",
                            "name": "amount",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3242,
                            "src": "13447:14:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3181,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13447:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3185,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3183,
                            "name": "user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3173,
                            "src": "13464:4:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                              "typeString": "struct MiniMinerV2.UserInfo storage pointer"
                            }
                          },
                          "id": 3184,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "amount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2127,
                          "src": "13464:11:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13447:28:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3190,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3186,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3173,
                              "src": "13485:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                "typeString": "struct MiniMinerV2.UserInfo storage pointer"
                              }
                            },
                            "id": 3188,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2127,
                            "src": "13485:11:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 3189,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13499:1:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "13485:15:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3191,
                        "nodeType": "ExpressionStatement",
                        "src": "13485:15:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3196,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3192,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3173,
                              "src": "13510:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$2130_storage_ptr",
                                "typeString": "struct MiniMinerV2.UserInfo storage pointer"
                              }
                            },
                            "id": 3194,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "rewardDebt",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2129,
                            "src": "13510:15:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 3195,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13528:1:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "13510:19:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 3197,
                        "nodeType": "ExpressionStatement",
                        "src": "13510:19:6"
                      },
                      {
                        "assignments": [
                          3199
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3199,
                            "mutability": "mutable",
                            "name": "_rewarder",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3242,
                            "src": "13540:19:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IRewarder_$3320",
                              "typeString": "contract IRewarder"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 3198,
                              "name": "IRewarder",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 3320,
                              "src": "13540:9:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IRewarder_$3320",
                                "typeString": "contract IRewarder"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3203,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3200,
                            "name": "rewarder",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2154,
                            "src": "13562:8:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_contract$_IRewarder_$3320_$dyn_storage",
                              "typeString": "contract IRewarder[] storage ref"
                            }
                          },
                          "id": 3202,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3201,
                            "name": "pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3167,
                            "src": "13571:3:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13562:13:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IRewarder_$3320",
                            "typeString": "contract IRewarder"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13540:35:6"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 3212,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3206,
                                "name": "_rewarder",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3199,
                                "src": "13597:9:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IRewarder_$3320",
                                  "typeString": "contract IRewarder"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IRewarder_$3320",
                                  "typeString": "contract IRewarder"
                                }
                              ],
                              "id": 3205,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "13589:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 3204,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "13589:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 3207,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13589:18:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 3210,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "13619:1:6",
                                "subdenomination": null,
                                "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": 3209,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "13611:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 3208,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "13611:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 3211,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13611:10:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "13589:32:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3225,
                        "nodeType": "IfStatement",
                        "src": "13585:118:6",
                        "trueBody": {
                          "id": 3224,
                          "nodeType": "Block",
                          "src": "13623:80:6",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3216,
                                    "name": "pid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3167,
                                    "src": "13666:3:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3217,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "13671:3:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 3218,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "13671:10:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 3219,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3169,
                                    "src": "13683:2:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 3220,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13687:1:6",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 3221,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13690:1:6",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3213,
                                    "name": "_rewarder",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3199,
                                    "src": "13637:9:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IRewarder_$3320",
                                      "typeString": "contract IRewarder"
                                    }
                                  },
                                  "id": 3215,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "onGoldNuggetReward",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3304,
                                  "src": "13637:28:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256,address,address,uint256,uint256) external"
                                  }
                                },
                                "id": 3222,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13637:55:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3223,
                              "nodeType": "ExpressionStatement",
                              "src": "13637:55:6"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3230,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3169,
                              "src": "13806:2:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3231,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3182,
                              "src": "13810:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3226,
                                "name": "lpToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2150,
                                "src": "13780:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage",
                                  "typeString": "contract IERC20[] storage ref"
                                }
                              },
                              "id": 3228,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 3227,
                                "name": "pid",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3167,
                                "src": "13788:3:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "13780:12:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 3229,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 503,
                            "src": "13780:25:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$337_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$337_$",
                              "typeString": "function (contract IERC20,address,uint256)"
                            }
                          },
                          "id": 3232,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13780:37:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3233,
                        "nodeType": "ExpressionStatement",
                        "src": "13780:37:6"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3235,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "13850:3:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 3236,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "13850:10:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3237,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3167,
                              "src": "13862:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3238,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3182,
                              "src": "13867:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3239,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3169,
                              "src": "13875:2:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3234,
                            "name": "EmergencyWithdraw",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2199,
                            "src": "13832:17:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$returns$__$",
                              "typeString": "function (address,uint256,uint256,address)"
                            }
                          },
                          "id": 3240,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13832:46:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3241,
                        "nodeType": "EmitStatement",
                        "src": "13827:51:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3165,
                    "nodeType": "StructuredDocumentation",
                    "src": "13145:169:6",
                    "text": "@notice Withdraw without caring about rewards. EMERGENCY ONLY.\n @param pid The index of the pool. See `poolInfo`.\n @param to Receiver of the LP tokens."
                  },
                  "functionSelector": "2f940c70",
                  "id": 3243,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "emergencyWithdraw",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3170,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3167,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3243,
                        "src": "13346:11:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3166,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13346:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3169,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3243,
                        "src": "13359:10:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3168,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13359:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "13345:25:6"
                  },
                  "returnParameters": {
                    "id": 3171,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "13378:0:6"
                  },
                  "scope": 3244,
                  "src": "13319:566:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 3245,
              "src": "1093:12794:6"
            }
          ],
          "src": "33:13855:6"
        },
        "id": 6
      },
      "contracts/interfaces/IGoldMiner.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/IGoldMiner.sol",
          "exportedSymbols": {
            "IGoldMiner": [
              3285
            ]
          },
          "id": 3286,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3246,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:7"
            },
            {
              "id": 3247,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "56:33:7"
            },
            {
              "absolutePath": "@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol",
              "file": "@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol",
              "id": 3248,
              "nodeType": "ImportDirective",
              "scope": 3286,
              "sourceUnit": 554,
              "src": "90:75:7",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 3285,
              "linearizedBaseContracts": [
                3285
              ],
              "name": "IGoldMiner",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 3251,
                  "libraryName": {
                    "contractScope": null,
                    "id": 3249,
                    "name": "BoringERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 553,
                    "src": "200:11:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BoringERC20_$553",
                      "typeString": "library BoringERC20"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "194:29:7",
                  "typeName": {
                    "contractScope": null,
                    "id": 3250,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 337,
                    "src": "216:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$337",
                      "typeString": "contract IERC20"
                    }
                  }
                },
                {
                  "canonicalName": "IGoldMiner.UserInfo",
                  "id": 3256,
                  "members": [
                    {
                      "constant": false,
                      "id": 3253,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3256,
                      "src": "254:14:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3252,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "254:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3255,
                      "mutability": "mutable",
                      "name": "rewardDebt",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3256,
                      "src": "327:18:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3254,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "327:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "UserInfo",
                  "nodeType": "StructDefinition",
                  "scope": 3285,
                  "src": "228:163:7",
                  "visibility": "public"
                },
                {
                  "canonicalName": "IGoldMiner.PoolInfo",
                  "id": 3265,
                  "members": [
                    {
                      "constant": false,
                      "id": 3258,
                      "mutability": "mutable",
                      "name": "lpToken",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3265,
                      "src": "423:14:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20_$337",
                        "typeString": "contract IERC20"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3257,
                        "name": "IERC20",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 337,
                        "src": "423:6:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$337",
                          "typeString": "contract IERC20"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3260,
                      "mutability": "mutable",
                      "name": "allocPoint",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3265,
                      "src": "490:18:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3259,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "490:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3262,
                      "mutability": "mutable",
                      "name": "lastRewardBlock",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3265,
                      "src": "607:23:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3261,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "607:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3264,
                      "mutability": "mutable",
                      "name": "accGoldNuggetPerShare",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3265,
                      "src": "693:29:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3263,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "693:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "PoolInfo",
                  "nodeType": "StructDefinition",
                  "scope": 3285,
                  "src": "397:386:7",
                  "visibility": "public"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "1526fe27",
                  "id": 3272,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "poolInfo",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3268,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3267,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3272,
                        "src": "807:11:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3266,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "807:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "806:13:7"
                  },
                  "returnParameters": {
                    "id": 3271,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3270,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3272,
                        "src": "843:26:7",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PoolInfo_$3265_memory_ptr",
                          "typeString": "struct IGoldMiner.PoolInfo"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 3269,
                          "name": "IGoldMiner.PoolInfo",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 3265,
                          "src": "843:19:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$3265_storage_ptr",
                            "typeString": "struct IGoldMiner.PoolInfo"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "842:28:7"
                  },
                  "scope": 3285,
                  "src": "789:82:7",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "17caf6f1",
                  "id": 3277,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalAllocPoint",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3273,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "900:2:7"
                  },
                  "returnParameters": {
                    "id": 3276,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3275,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3277,
                        "src": "926:7:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3274,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "926:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "925:9:7"
                  },
                  "scope": 3285,
                  "src": "876:59:7",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "e2bbb158",
                  "id": 3284,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "deposit",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3282,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3279,
                        "mutability": "mutable",
                        "name": "_pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3284,
                        "src": "957:12:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3278,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "957:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3281,
                        "mutability": "mutable",
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3284,
                        "src": "971:15:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3280,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "971:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "956:31:7"
                  },
                  "returnParameters": {
                    "id": 3283,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "996:0:7"
                  },
                  "scope": 3285,
                  "src": "940:57:7",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 3286,
              "src": "167:832:7"
            }
          ],
          "src": "32:968:7"
        },
        "id": 7
      },
      "contracts/interfaces/IRewarder.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/IRewarder.sol",
          "exportedSymbols": {
            "IRewarder": [
              3320
            ]
          },
          "id": 3321,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3287,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:23:8"
            },
            {
              "absolutePath": "@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol",
              "file": "@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol",
              "id": 3288,
              "nodeType": "ImportDirective",
              "scope": 3321,
              "sourceUnit": 554,
              "src": "57:75:8",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 3320,
              "linearizedBaseContracts": [
                3320
              ],
              "name": "IRewarder",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 3291,
                  "libraryName": {
                    "contractScope": null,
                    "id": 3289,
                    "name": "BoringERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 553,
                    "src": "165:11:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BoringERC20_$553",
                      "typeString": "library BoringERC20"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "159:29:8",
                  "typeName": {
                    "contractScope": null,
                    "id": 3290,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 337,
                    "src": "181:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$337",
                      "typeString": "contract IERC20"
                    }
                  }
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "a3d83320",
                  "id": 3304,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onGoldNuggetReward",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3302,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3293,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3304,
                        "src": "221:11:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3292,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "221:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3295,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3304,
                        "src": "234:12:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3294,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "234:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3297,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3304,
                        "src": "248:17:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3296,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "248:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3299,
                        "mutability": "mutable",
                        "name": "goldnuggetAmount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3304,
                        "src": "267:24:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3298,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "267:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3301,
                        "mutability": "mutable",
                        "name": "newLpAmount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3304,
                        "src": "293:19:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3300,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "293:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "220:93:8"
                  },
                  "returnParameters": {
                    "id": 3303,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "322:0:8"
                  },
                  "scope": 3320,
                  "src": "193:130:8",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "d63b3c49",
                  "id": 3319,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "pendingTokens",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3311,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3306,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3319,
                        "src": "351:11:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3305,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "351:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3308,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3319,
                        "src": "364:12:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3307,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "364:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3310,
                        "mutability": "mutable",
                        "name": "goldnuggetAmount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3319,
                        "src": "378:24:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3309,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "378:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "350:53:8"
                  },
                  "returnParameters": {
                    "id": 3318,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3314,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3319,
                        "src": "427:15:8",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_memory_ptr",
                          "typeString": "contract IERC20[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 3312,
                            "name": "IERC20",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 337,
                            "src": "427:6:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 3313,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "427:8:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage_ptr",
                            "typeString": "contract IERC20[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3317,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3319,
                        "src": "444:16:8",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3315,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "444:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3316,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "444:9:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "426:35:8"
                  },
                  "scope": 3320,
                  "src": "328:134:8",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 3321,
              "src": "133:331:8"
            }
          ],
          "src": "33:432:8"
        },
        "id": 8
      },
      "contracts/libraries/SignedSafeMath.sol": {
        "ast": {
          "absolutePath": "contracts/libraries/SignedSafeMath.sol",
          "exportedSymbols": {
            "SignedSafeMath": [
              3518
            ]
          },
          "id": 3519,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3322,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:23:9"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": null,
              "fullyImplemented": true,
              "id": 3518,
              "linearizedBaseContracts": [
                3518
              ],
              "name": "SignedSafeMath",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "id": 3328,
                  "mutability": "constant",
                  "name": "_INT256_MIN",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3518,
                  "src": "87:45:9",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 3323,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "87:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_rational_minus_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1",
                      "typeString": "int_const -578...(70 digits omitted)...9968"
                    },
                    "id": 3327,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3325,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "-",
                      "prefix": true,
                      "src": "125:2:9",
                      "subExpression": {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 3324,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "126:1:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_minus_2_by_1",
                        "typeString": "int_const -2"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "**",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "323535",
                      "id": 3326,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "129:3:9",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_255_by_1",
                        "typeString": "int_const 255"
                      },
                      "value": "255"
                    },
                    "src": "125:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_minus_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1",
                      "typeString": "int_const -578...(70 digits omitted)...9968"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 3376,
                    "nodeType": "Block",
                    "src": "442:490:9",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 3340,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3338,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3331,
                            "src": "674:1:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 3339,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "679:1:9",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "674:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3344,
                        "nodeType": "IfStatement",
                        "src": "670:45:9",
                        "trueBody": {
                          "id": 3343,
                          "nodeType": "Block",
                          "src": "682:33:9",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 3341,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "703:1:9",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 3337,
                              "id": 3342,
                              "nodeType": "Return",
                              "src": "696:8:9"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3355,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "733:30:9",
                              "subExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 3353,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 3349,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 3346,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3331,
                                        "src": "735:1:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 3348,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "UnaryOperation",
                                        "operator": "-",
                                        "prefix": true,
                                        "src": "740:2:9",
                                        "subExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "31",
                                          "id": 3347,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "741:1:9",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_minus_1_by_1",
                                          "typeString": "int_const -1"
                                        }
                                      },
                                      "src": "735:7:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 3352,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 3350,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3333,
                                        "src": "746:1:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 3351,
                                        "name": "_INT256_MIN",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3328,
                                        "src": "751:11:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "src": "746:16:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "735:27:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 3354,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "734:29:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77",
                              "id": 3356,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "765:41:9",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a608fbdf6cc4ee9c43b141f63e234f4edb26cfb78aba3140cfd865641cb2c954",
                                "typeString": "literal_string \"SignedSafeMath: multiplication overflow\""
                              },
                              "value": "SignedSafeMath: multiplication overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a608fbdf6cc4ee9c43b141f63e234f4edb26cfb78aba3140cfd865641cb2c954",
                                "typeString": "literal_string \"SignedSafeMath: multiplication overflow\""
                              }
                            ],
                            "id": 3345,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "725:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3357,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "725:82:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3358,
                        "nodeType": "ExpressionStatement",
                        "src": "725:82:9"
                      },
                      {
                        "assignments": [
                          3360
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3360,
                            "mutability": "mutable",
                            "name": "c",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3376,
                            "src": "818:8:9",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 3359,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "818:6:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3364,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 3363,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3361,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3331,
                            "src": "829:1:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 3362,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3333,
                            "src": "833:1:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "829:5:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "818:16:9"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 3370,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 3368,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 3366,
                                  "name": "c",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3360,
                                  "src": "852:1:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 3367,
                                  "name": "a",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3331,
                                  "src": "856:1:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "src": "852:5:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 3369,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3333,
                                "src": "861:1:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "src": "852:10:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77",
                              "id": 3371,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "864:41:9",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a608fbdf6cc4ee9c43b141f63e234f4edb26cfb78aba3140cfd865641cb2c954",
                                "typeString": "literal_string \"SignedSafeMath: multiplication overflow\""
                              },
                              "value": "SignedSafeMath: multiplication overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a608fbdf6cc4ee9c43b141f63e234f4edb26cfb78aba3140cfd865641cb2c954",
                                "typeString": "literal_string \"SignedSafeMath: multiplication overflow\""
                              }
                            ],
                            "id": 3365,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "844:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3372,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "844:62:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3373,
                        "nodeType": "ExpressionStatement",
                        "src": "844:62:9"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3374,
                          "name": "c",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3360,
                          "src": "924:1:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "functionReturnParameters": 3337,
                        "id": 3375,
                        "nodeType": "Return",
                        "src": "917:8:9"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3329,
                    "nodeType": "StructuredDocumentation",
                    "src": "139:234:9",
                    "text": " @dev Returns the multiplication of two signed integers, reverting on\n overflow.\n Counterpart to Solidity's `*` operator.\n Requirements:\n - Multiplication cannot overflow."
                  },
                  "id": 3377,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mul",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3334,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3331,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3377,
                        "src": "391:8:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 3330,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "391:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3333,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3377,
                        "src": "401:8:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 3332,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "401:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "390:20:9"
                  },
                  "returnParameters": {
                    "id": 3337,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3336,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3377,
                        "src": "434:6:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 3335,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "434:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "433:8:9"
                  },
                  "scope": 3518,
                  "src": "378:554:9",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3416,
                    "nodeType": "Block",
                    "src": "1456:200:9",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 3390,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 3388,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3382,
                                "src": "1474:1:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 3389,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1479:1:9",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "1474:6:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5369676e6564536166654d6174683a206469766973696f6e206279207a65726f",
                              "id": 3391,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1482:34:9",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ebc4d0068c2e029285c70894a725032247a74fcdc822ba305ea67dbddf7750bd",
                                "typeString": "literal_string \"SignedSafeMath: division by zero\""
                              },
                              "value": "SignedSafeMath: division by zero"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ebc4d0068c2e029285c70894a725032247a74fcdc822ba305ea67dbddf7750bd",
                                "typeString": "literal_string \"SignedSafeMath: division by zero\""
                              }
                            ],
                            "id": 3387,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1466:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3392,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1466:51:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3393,
                        "nodeType": "ExpressionStatement",
                        "src": "1466:51:9"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3404,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "1535:30:9",
                              "subExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 3402,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 3398,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 3395,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3382,
                                        "src": "1537:1:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 3397,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "UnaryOperation",
                                        "operator": "-",
                                        "prefix": true,
                                        "src": "1542:2:9",
                                        "subExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "31",
                                          "id": 3396,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "1543:1:9",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_minus_1_by_1",
                                          "typeString": "int_const -1"
                                        }
                                      },
                                      "src": "1537:7:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 3401,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 3399,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3380,
                                        "src": "1548:1:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 3400,
                                        "name": "_INT256_MIN",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3328,
                                        "src": "1553:11:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "src": "1548:16:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "1537:27:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 3403,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "1536:29:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5369676e6564536166654d6174683a206469766973696f6e206f766572666c6f77",
                              "id": 3405,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1567:35:9",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7bc0f3df013376568eb9f7cb8999198097051f79bdb4d07d83447767f5224b81",
                                "typeString": "literal_string \"SignedSafeMath: division overflow\""
                              },
                              "value": "SignedSafeMath: division overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_7bc0f3df013376568eb9f7cb8999198097051f79bdb4d07d83447767f5224b81",
                                "typeString": "literal_string \"SignedSafeMath: division overflow\""
                              }
                            ],
                            "id": 3394,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1527:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3406,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1527:76:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3407,
                        "nodeType": "ExpressionStatement",
                        "src": "1527:76:9"
                      },
                      {
                        "assignments": [
                          3409
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3409,
                            "mutability": "mutable",
                            "name": "c",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3416,
                            "src": "1614:8:9",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 3408,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1614:6:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3413,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 3412,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3410,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3380,
                            "src": "1625:1:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 3411,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3382,
                            "src": "1629:1:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "1625:5:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1614:16:9"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3414,
                          "name": "c",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3409,
                          "src": "1648:1:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "functionReturnParameters": 3386,
                        "id": 3415,
                        "nodeType": "Return",
                        "src": "1641:8:9"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3378,
                    "nodeType": "StructuredDocumentation",
                    "src": "938:449:9",
                    "text": " @dev Returns the integer division of two signed integers. Reverts on\n division by zero. The result is rounded towards zero.\n Counterpart to Solidity's `/` operator. Note: this function uses a\n `revert` opcode (which leaves remaining gas untouched) while Solidity\n uses an invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero."
                  },
                  "id": 3417,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "div",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3383,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3380,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3417,
                        "src": "1405:8:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 3379,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1405:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3382,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3417,
                        "src": "1415:8:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 3381,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1415:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1404:20:9"
                  },
                  "returnParameters": {
                    "id": 3386,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3385,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3417,
                        "src": "1448:6:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 3384,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1448:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1447:8:9"
                  },
                  "scope": 3518,
                  "src": "1392:264:9",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3456,
                    "nodeType": "Block",
                    "src": "1959:149:9",
                    "statements": [
                      {
                        "assignments": [
                          3428
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3428,
                            "mutability": "mutable",
                            "name": "c",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3456,
                            "src": "1969:8:9",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 3427,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1969:6:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3432,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 3431,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3429,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3420,
                            "src": "1980:1:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 3430,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3422,
                            "src": "1984:1:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "1980:5:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1969:16:9"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 3450,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 3440,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 3436,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 3434,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3422,
                                        "src": "2004:1:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">=",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 3435,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2009:1:9",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "2004:6:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 3439,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 3437,
                                        "name": "c",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3428,
                                        "src": "2014:1:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<=",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 3438,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3420,
                                        "src": "2019:1:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "src": "2014:6:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "2004:16:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 3441,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "2003:18:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 3448,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 3444,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 3442,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3422,
                                        "src": "2026:1:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 3443,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2030:1:9",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "2026:5:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 3447,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 3445,
                                        "name": "c",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3428,
                                        "src": "2035:1:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 3446,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3420,
                                        "src": "2039:1:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "src": "2035:5:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "2026:14:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 3449,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "2025:16:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "2003:38:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5369676e6564536166654d6174683a207375627472616374696f6e206f766572666c6f77",
                              "id": 3451,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2043:38:9",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_dfe37ab0612d67daeef366062296f3ebcaf7e2cc3eb392bf66a6cb5a7bed3bcd",
                                "typeString": "literal_string \"SignedSafeMath: subtraction overflow\""
                              },
                              "value": "SignedSafeMath: subtraction overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_dfe37ab0612d67daeef366062296f3ebcaf7e2cc3eb392bf66a6cb5a7bed3bcd",
                                "typeString": "literal_string \"SignedSafeMath: subtraction overflow\""
                              }
                            ],
                            "id": 3433,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1995:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3452,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1995:87:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3453,
                        "nodeType": "ExpressionStatement",
                        "src": "1995:87:9"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3454,
                          "name": "c",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3428,
                          "src": "2100:1:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "functionReturnParameters": 3426,
                        "id": 3455,
                        "nodeType": "Return",
                        "src": "2093:8:9"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3418,
                    "nodeType": "StructuredDocumentation",
                    "src": "1662:228:9",
                    "text": " @dev Returns the subtraction of two signed integers, reverting on\n overflow.\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow."
                  },
                  "id": 3457,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "sub",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3423,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3420,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3457,
                        "src": "1908:8:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 3419,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1908:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3422,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3457,
                        "src": "1918:8:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 3421,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1918:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1907:20:9"
                  },
                  "returnParameters": {
                    "id": 3426,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3425,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3457,
                        "src": "1951:6:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 3424,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1951:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1950:8:9"
                  },
                  "scope": 3518,
                  "src": "1895:213:9",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3496,
                    "nodeType": "Block",
                    "src": "2405:146:9",
                    "statements": [
                      {
                        "assignments": [
                          3468
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3468,
                            "mutability": "mutable",
                            "name": "c",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3496,
                            "src": "2415:8:9",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 3467,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2415:6:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3472,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 3471,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3469,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3460,
                            "src": "2426:1:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 3470,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3462,
                            "src": "2430:1:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "2426:5:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2415:16:9"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 3490,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 3480,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 3476,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 3474,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3462,
                                        "src": "2450:1:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">=",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 3475,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2455:1:9",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "2450:6:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 3479,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 3477,
                                        "name": "c",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3468,
                                        "src": "2460:1:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">=",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 3478,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3460,
                                        "src": "2465:1:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "src": "2460:6:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "2450:16:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 3481,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "2449:18:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 3488,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 3484,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 3482,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3462,
                                        "src": "2472:1:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 3483,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2476:1:9",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "2472:5:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 3487,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 3485,
                                        "name": "c",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3468,
                                        "src": "2481:1:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 3486,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3460,
                                        "src": "2485:1:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "src": "2481:5:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "2472:14:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 3489,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "2471:16:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "2449:38:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f77",
                              "id": 3491,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2489:35:9",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_47c8d4a3974eee4fcf9925cffefc088ed6ac723b55fb65cf621edb1b7db7b8eb",
                                "typeString": "literal_string \"SignedSafeMath: addition overflow\""
                              },
                              "value": "SignedSafeMath: addition overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_47c8d4a3974eee4fcf9925cffefc088ed6ac723b55fb65cf621edb1b7db7b8eb",
                                "typeString": "literal_string \"SignedSafeMath: addition overflow\""
                              }
                            ],
                            "id": 3473,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2441:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3492,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2441:84:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3493,
                        "nodeType": "ExpressionStatement",
                        "src": "2441:84:9"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3494,
                          "name": "c",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3468,
                          "src": "2543:1:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "functionReturnParameters": 3466,
                        "id": 3495,
                        "nodeType": "Return",
                        "src": "2536:8:9"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3458,
                    "nodeType": "StructuredDocumentation",
                    "src": "2114:222:9",
                    "text": " @dev Returns the addition of two signed integers, reverting on\n overflow.\n Counterpart to Solidity's `+` operator.\n Requirements:\n - Addition cannot overflow."
                  },
                  "id": 3497,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "add",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3463,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3460,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3497,
                        "src": "2354:8:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 3459,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2354:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3462,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3497,
                        "src": "2364:8:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 3461,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2364:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2353:20:9"
                  },
                  "returnParameters": {
                    "id": 3466,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3465,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3497,
                        "src": "2397:6:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 3464,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2397:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2396:8:9"
                  },
                  "scope": 3518,
                  "src": "2341:210:9",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3516,
                    "nodeType": "Block",
                    "src": "2618:74:9",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 3507,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 3505,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3499,
                                "src": "2636:1:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 3506,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2641:1:9",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "2636:6:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "496e7465676572203c2030",
                              "id": 3508,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2644:13:9",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_072bbf819d7fcc25efb63989aaa3ad43d444efad2d36a2598ffe45c4c4d00f7a",
                                "typeString": "literal_string \"Integer < 0\""
                              },
                              "value": "Integer < 0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_072bbf819d7fcc25efb63989aaa3ad43d444efad2d36a2598ffe45c4c4d00f7a",
                                "typeString": "literal_string \"Integer < 0\""
                              }
                            ],
                            "id": 3504,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2628:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3509,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2628:30:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3510,
                        "nodeType": "ExpressionStatement",
                        "src": "2628:30:9"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3513,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3499,
                              "src": "2683:1:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "id": 3512,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2675:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 3511,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2675:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 3514,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2675:10:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 3503,
                        "id": 3515,
                        "nodeType": "Return",
                        "src": "2668:17:9"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 3517,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUInt256",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3500,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3499,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3517,
                        "src": "2576:8:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 3498,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2576:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2575:10:9"
                  },
                  "returnParameters": {
                    "id": 3503,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3502,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3517,
                        "src": "2609:7:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3501,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2609:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2608:9:9"
                  },
                  "scope": 3518,
                  "src": "2557:135:9",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 3519,
              "src": "58:2636:9"
            }
          ],
          "src": "33:2661:9"
        },
        "id": 9
      },
      "contracts/mocks/ComplexRewarder.sol": {
        "ast": {
          "absolutePath": "contracts/mocks/ComplexRewarder.sol",
          "exportedSymbols": {
            "ComplexRewarder": [
              4146
            ]
          },
          "id": 4147,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3520,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:23:10"
            },
            {
              "id": 3521,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "57:33:10"
            },
            {
              "absolutePath": "contracts/interfaces/IRewarder.sol",
              "file": "../interfaces/IRewarder.sol",
              "id": 3522,
              "nodeType": "ImportDirective",
              "scope": 4147,
              "sourceUnit": 3321,
              "src": "91:37:10",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol",
              "file": "@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol",
              "id": 3523,
              "nodeType": "ImportDirective",
              "scope": 4147,
              "sourceUnit": 554,
              "src": "129:75:10",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol",
              "file": "@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol",
              "id": 3524,
              "nodeType": "ImportDirective",
              "scope": 4147,
              "sourceUnit": 842,
              "src": "205:74:10",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@boringcrypto/boring-solidity/contracts/BoringOwnable.sol",
              "file": "@boringcrypto/boring-solidity/contracts/BoringOwnable.sol",
              "id": 3525,
              "nodeType": "ImportDirective",
              "scope": 4147,
              "sourceUnit": 272,
              "src": "280:67:10",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/GoldMinerV2.sol",
              "file": "../GoldMinerV2.sol",
              "id": 3526,
              "nodeType": "ImportDirective",
              "scope": 4147,
              "sourceUnit": 2092,
              "src": "348:28:10",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 3528,
                    "name": "IRewarder",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3320,
                    "src": "426:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IRewarder_$3320",
                      "typeString": "contract IRewarder"
                    }
                  },
                  "id": 3529,
                  "nodeType": "InheritanceSpecifier",
                  "src": "426:9:10"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 3530,
                    "name": "BoringOwnable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 271,
                    "src": "438:13:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BoringOwnable_$271",
                      "typeString": "contract BoringOwnable"
                    }
                  },
                  "id": 3531,
                  "nodeType": "InheritanceSpecifier",
                  "src": "438:13:10"
                }
              ],
              "contractDependencies": [
                152,
                271,
                3320
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 3527,
                "nodeType": "StructuredDocumentation",
                "src": "378:20:10",
                "text": "@author @0xKeno"
              },
              "fullyImplemented": true,
              "id": 4146,
              "linearizedBaseContracts": [
                4146,
                271,
                152,
                3320
              ],
              "name": "ComplexRewarder",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 3534,
                  "libraryName": {
                    "contractScope": null,
                    "id": 3532,
                    "name": "BoringMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 706,
                    "src": "463:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BoringMath_$706",
                      "typeString": "library BoringMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "457:29:10",
                  "typeName": {
                    "id": 3533,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "478:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "id": 3537,
                  "libraryName": {
                    "contractScope": null,
                    "id": 3535,
                    "name": "BoringMath128",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 751,
                    "src": "497:13:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BoringMath128_$751",
                      "typeString": "library BoringMath128"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "491:32:10",
                  "typeName": {
                    "id": 3536,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "515:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  }
                },
                {
                  "id": 3540,
                  "libraryName": {
                    "contractScope": null,
                    "id": 3538,
                    "name": "BoringERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 553,
                    "src": "534:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BoringERC20_$553",
                      "typeString": "library BoringERC20"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "528:29:10",
                  "typeName": {
                    "contractScope": null,
                    "id": 3539,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 337,
                    "src": "550:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$337",
                      "typeString": "contract IERC20"
                    }
                  }
                },
                {
                  "constant": false,
                  "id": 3542,
                  "mutability": "immutable",
                  "name": "rewardToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4146,
                  "src": "563:36:10",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$337",
                    "typeString": "contract IERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3541,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 337,
                    "src": "563:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$337",
                      "typeString": "contract IERC20"
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "canonicalName": "ComplexRewarder.UserInfo",
                  "id": 3547,
                  "members": [
                    {
                      "constant": false,
                      "id": 3544,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3547,
                      "src": "790:14:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3543,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "790:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3546,
                      "mutability": "mutable",
                      "name": "rewardDebt",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3547,
                      "src": "814:18:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3545,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "814:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "UserInfo",
                  "nodeType": "StructDefinition",
                  "scope": 4146,
                  "src": "764:75:10",
                  "visibility": "public"
                },
                {
                  "canonicalName": "ComplexRewarder.PoolInfo",
                  "id": 3554,
                  "members": [
                    {
                      "constant": false,
                      "id": 3549,
                      "mutability": "mutable",
                      "name": "accGoldNuggetPerShare",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3554,
                      "src": "1052:29:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      },
                      "typeName": {
                        "id": 3548,
                        "name": "uint128",
                        "nodeType": "ElementaryTypeName",
                        "src": "1052:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3551,
                      "mutability": "mutable",
                      "name": "lastRewardBlock",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3554,
                      "src": "1091:22:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      },
                      "typeName": {
                        "id": 3550,
                        "name": "uint64",
                        "nodeType": "ElementaryTypeName",
                        "src": "1091:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3553,
                      "mutability": "mutable",
                      "name": "allocPoint",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3554,
                      "src": "1123:17:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      },
                      "typeName": {
                        "id": 3552,
                        "name": "uint64",
                        "nodeType": "ElementaryTypeName",
                        "src": "1123:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "PoolInfo",
                  "nodeType": "StructDefinition",
                  "scope": 4146,
                  "src": "1026:121:10",
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 3555,
                    "nodeType": "StructuredDocumentation",
                    "src": "1153:30:10",
                    "text": "@notice Info of each pool."
                  },
                  "functionSelector": "1526fe27",
                  "id": 3559,
                  "mutability": "mutable",
                  "name": "poolInfo",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4146,
                  "src": "1188:45:10",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_PoolInfo_$3554_storage_$",
                    "typeString": "mapping(uint256 => struct ComplexRewarder.PoolInfo)"
                  },
                  "typeName": {
                    "id": 3558,
                    "keyType": {
                      "id": 3556,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1197:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1188:29:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_PoolInfo_$3554_storage_$",
                      "typeString": "mapping(uint256 => struct ComplexRewarder.PoolInfo)"
                    },
                    "valueType": {
                      "contractScope": null,
                      "id": 3557,
                      "name": "PoolInfo",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 3554,
                      "src": "1208:8:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_PoolInfo_$3554_storage_ptr",
                        "typeString": "struct ComplexRewarder.PoolInfo"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "69883b4e",
                  "id": 3562,
                  "mutability": "mutable",
                  "name": "poolIds",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4146,
                  "src": "1240:24:10",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3560,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1240:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3561,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1240:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 3563,
                    "nodeType": "StructuredDocumentation",
                    "src": "1271:52:10",
                    "text": "@notice Info of each user that stakes LP tokens."
                  },
                  "functionSelector": "93f1a40b",
                  "id": 3569,
                  "mutability": "mutable",
                  "name": "userInfo",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4146,
                  "src": "1328:66:10",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$3547_storage_$_$",
                    "typeString": "mapping(uint256 => mapping(address => struct ComplexRewarder.UserInfo))"
                  },
                  "typeName": {
                    "id": 3568,
                    "keyType": {
                      "id": 3564,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1337:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1328:50:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$3547_storage_$_$",
                      "typeString": "mapping(uint256 => mapping(address => struct ComplexRewarder.UserInfo))"
                    },
                    "valueType": {
                      "id": 3567,
                      "keyType": {
                        "id": 3565,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1357:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "1348:29:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$3547_storage_$",
                        "typeString": "mapping(address => struct ComplexRewarder.UserInfo)"
                      },
                      "valueType": {
                        "contractScope": null,
                        "id": 3566,
                        "name": "UserInfo",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 3547,
                        "src": "1368:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$3547_storage_ptr",
                          "typeString": "struct ComplexRewarder.UserInfo"
                        }
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 3570,
                    "nodeType": "StructuredDocumentation",
                    "src": "1400:88:10",
                    "text": "@dev Total allocation points. Must be the sum of all allocation points in all pools."
                  },
                  "id": 3572,
                  "mutability": "mutable",
                  "name": "totalAllocPoint",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4146,
                  "src": "1493:23:10",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3571,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1493:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "functionSelector": "4198709a",
                  "id": 3574,
                  "mutability": "mutable",
                  "name": "tokenPerBlock",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4146,
                  "src": "1523:28:10",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3573,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1523:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "id": 3577,
                  "mutability": "constant",
                  "name": "ACC_TOKEN_PRECISION",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4146,
                  "src": "1557:51:10",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3575,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1557:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "31653132",
                    "id": 3576,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1604:4:10",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1000000000000_by_1",
                      "typeString": "int_const 1000000000000"
                    },
                    "value": "1e12"
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 3579,
                  "mutability": "immutable",
                  "name": "GOLDMINER_V2",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4146,
                  "src": "1615:38:10",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3578,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1615:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 3589,
                  "name": "LogOnReward",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 3588,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3581,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3589,
                        "src": "1678:20:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3580,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1678:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3583,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3589,
                        "src": "1700:19:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3582,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1700:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3585,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3589,
                        "src": "1721:14:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3584,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1721:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3587,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3589,
                        "src": "1737:18:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3586,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1737:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1677:79:10"
                  },
                  "src": "1660:97:10"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 3595,
                  "name": "LogPoolAddition",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 3594,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3591,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3595,
                        "src": "1784:19:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3590,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1784:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3593,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "allocPoint",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3595,
                        "src": "1805:18:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3592,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1805:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1783:41:10"
                  },
                  "src": "1762:63:10"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 3601,
                  "name": "LogSetPool",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 3600,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3597,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3601,
                        "src": "1847:19:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3596,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1847:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3599,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "allocPoint",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3601,
                        "src": "1868:18:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3598,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1868:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1846:41:10"
                  },
                  "src": "1830:58:10"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 3611,
                  "name": "LogUpdatePool",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 3610,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3603,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3611,
                        "src": "1913:19:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3602,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1913:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3605,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "lastRewardBlock",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3611,
                        "src": "1934:22:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 3604,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "1934:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3607,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "lpSupply",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3611,
                        "src": "1958:16:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3606,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1958:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3609,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "accGoldNuggetPerShare",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3611,
                        "src": "1976:29:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3608,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1976:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1912:94:10"
                  },
                  "src": "1893:114:10"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 3613,
                  "name": "LogInit",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 3612,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2025:2:10"
                  },
                  "src": "2012:16:10"
                },
                {
                  "body": {
                    "id": 3634,
                    "nodeType": "Block",
                    "src": "2122:121:10",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3624,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3622,
                            "name": "rewardToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3542,
                            "src": "2132:11:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 3623,
                            "name": "_rewardToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3615,
                            "src": "2146:12:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            }
                          },
                          "src": "2132:26:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "id": 3625,
                        "nodeType": "ExpressionStatement",
                        "src": "2132:26:10"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3628,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3626,
                            "name": "tokenPerBlock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3574,
                            "src": "2168:13:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 3627,
                            "name": "_tokenPerBlock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3617,
                            "src": "2184:14:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2168:30:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3629,
                        "nodeType": "ExpressionStatement",
                        "src": "2168:30:10"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3632,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3630,
                            "name": "GOLDMINER_V2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3579,
                            "src": "2208:12:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 3631,
                            "name": "_GOLDMINER_V2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3619,
                            "src": "2223:13:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2208:28:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 3633,
                        "nodeType": "ExpressionStatement",
                        "src": "2208:28:10"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 3635,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3620,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3615,
                        "mutability": "mutable",
                        "name": "_rewardToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3635,
                        "src": "2047:19:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$337",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 3614,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 337,
                          "src": "2047:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3617,
                        "mutability": "mutable",
                        "name": "_tokenPerBlock",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3635,
                        "src": "2068:22:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3616,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2068:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3619,
                        "mutability": "mutable",
                        "name": "_GOLDMINER_V2",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3635,
                        "src": "2092:21:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3618,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2092:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2046:68:10"
                  },
                  "returnParameters": {
                    "id": 3621,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2122:0:10"
                  },
                  "scope": 4146,
                  "src": "2034:209:10",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3304
                  ],
                  "body": {
                    "id": 3722,
                    "nodeType": "Block",
                    "src": "2372:563:10",
                    "statements": [
                      {
                        "assignments": [
                          3652
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3652,
                            "mutability": "mutable",
                            "name": "pool",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3722,
                            "src": "2382:20:10",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$3554_memory_ptr",
                              "typeString": "struct ComplexRewarder.PoolInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 3651,
                              "name": "PoolInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 3554,
                              "src": "2382:8:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$3554_storage_ptr",
                                "typeString": "struct ComplexRewarder.PoolInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3656,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3654,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3637,
                              "src": "2416:3:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3653,
                            "name": "updatePool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4145,
                            "src": "2405:10:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_struct$_PoolInfo_$3554_memory_ptr_$",
                              "typeString": "function (uint256) returns (struct ComplexRewarder.PoolInfo memory)"
                            }
                          },
                          "id": 3655,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2405:15:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$3554_memory_ptr",
                            "typeString": "struct ComplexRewarder.PoolInfo memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2382:38:10"
                      },
                      {
                        "assignments": [
                          3658
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3658,
                            "mutability": "mutable",
                            "name": "user",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3722,
                            "src": "2430:21:10",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$3547_storage_ptr",
                              "typeString": "struct ComplexRewarder.UserInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 3657,
                              "name": "UserInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 3547,
                              "src": "2430:8:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$3547_storage_ptr",
                                "typeString": "struct ComplexRewarder.UserInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3664,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3659,
                              "name": "userInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3569,
                              "src": "2454:8:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$3547_storage_$_$",
                                "typeString": "mapping(uint256 => mapping(address => struct ComplexRewarder.UserInfo storage ref))"
                              }
                            },
                            "id": 3661,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3660,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3637,
                              "src": "2463:3:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "2454:13:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$3547_storage_$",
                              "typeString": "mapping(address => struct ComplexRewarder.UserInfo storage ref)"
                            }
                          },
                          "id": 3663,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3662,
                            "name": "_user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3639,
                            "src": "2468:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2454:20:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$3547_storage",
                            "typeString": "struct ComplexRewarder.UserInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2430:44:10"
                      },
                      {
                        "assignments": [
                          3666
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3666,
                            "mutability": "mutable",
                            "name": "pending",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3722,
                            "src": "2484:15:10",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3665,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2484:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3667,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2484:15:10"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3671,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3668,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3658,
                              "src": "2513:4:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$3547_storage_ptr",
                                "typeString": "struct ComplexRewarder.UserInfo storage pointer"
                              }
                            },
                            "id": 3669,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3544,
                            "src": "2513:11:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 3670,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2527:1:10",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "2513:15:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3696,
                        "nodeType": "IfStatement",
                        "src": "2509:249:10",
                        "trueBody": {
                          "id": 3695,
                          "nodeType": "Block",
                          "src": "2530:228:10",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3686,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 3672,
                                  "name": "pending",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3666,
                                  "src": "2544:7:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 3683,
                                        "name": "user",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3658,
                                        "src": "2663:4:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_UserInfo_$3547_storage_ptr",
                                          "typeString": "struct ComplexRewarder.UserInfo storage pointer"
                                        }
                                      },
                                      "id": 3684,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "rewardDebt",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3546,
                                      "src": "2663:15:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 3680,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 3676,
                                                  "name": "pool",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 3652,
                                                  "src": "2587:4:10",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_PoolInfo_$3554_memory_ptr",
                                                    "typeString": "struct ComplexRewarder.PoolInfo memory"
                                                  }
                                                },
                                                "id": 3677,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "accGoldNuggetPerShare",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 3549,
                                                "src": "2587:26:10",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint128",
                                                  "typeString": "uint128"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint128",
                                                  "typeString": "uint128"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 3673,
                                                  "name": "user",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 3658,
                                                  "src": "2571:4:10",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_UserInfo_$3547_storage_ptr",
                                                    "typeString": "struct ComplexRewarder.UserInfo storage pointer"
                                                  }
                                                },
                                                "id": 3674,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "amount",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 3544,
                                                "src": "2571:11:10",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 3675,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "mul",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 627,
                                              "src": "2571:15:10",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                              }
                                            },
                                            "id": 3678,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "2571:43:10",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "/",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "id": 3679,
                                            "name": "ACC_TOKEN_PRECISION",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3577,
                                            "src": "2617:19:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "2571:65:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 3681,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "2570:67:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 3682,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 599,
                                    "src": "2570:71:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 3685,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2570:126:10",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2544:152:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3687,
                              "nodeType": "ExpressionStatement",
                              "src": "2544:152:10"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3691,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3641,
                                    "src": "2735:2:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 3692,
                                    "name": "pending",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3666,
                                    "src": "2739:7:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3688,
                                    "name": "rewardToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3542,
                                    "src": "2710:11:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$337",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 3690,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "safeTransfer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 503,
                                  "src": "2710:24:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$337_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$337_$",
                                    "typeString": "function (contract IERC20,address,uint256)"
                                  }
                                },
                                "id": 3693,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2710:37:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3694,
                              "nodeType": "ExpressionStatement",
                              "src": "2710:37:10"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3701,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3697,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3658,
                              "src": "2767:4:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$3547_storage_ptr",
                                "typeString": "struct ComplexRewarder.UserInfo storage pointer"
                              }
                            },
                            "id": 3699,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3544,
                            "src": "2767:11:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 3700,
                            "name": "lpToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3645,
                            "src": "2781:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2767:21:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3702,
                        "nodeType": "ExpressionStatement",
                        "src": "2767:21:10"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3713,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3703,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3658,
                              "src": "2798:4:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$3547_storage_ptr",
                                "typeString": "struct ComplexRewarder.UserInfo storage pointer"
                              }
                            },
                            "id": 3705,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "rewardDebt",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3546,
                            "src": "2798:15:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3712,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3708,
                                    "name": "pool",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3652,
                                    "src": "2828:4:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PoolInfo_$3554_memory_ptr",
                                      "typeString": "struct ComplexRewarder.PoolInfo memory"
                                    }
                                  },
                                  "id": 3709,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "accGoldNuggetPerShare",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3549,
                                  "src": "2828:26:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3706,
                                  "name": "lpToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3645,
                                  "src": "2816:7:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 3707,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 627,
                                "src": "2816:11:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 3710,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2816:39:10",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 3711,
                              "name": "ACC_TOKEN_PRECISION",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3577,
                              "src": "2858:19:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "2816:61:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2798:79:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3714,
                        "nodeType": "ExpressionStatement",
                        "src": "2798:79:10"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3716,
                              "name": "_user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3639,
                              "src": "2904:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3717,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3637,
                              "src": "2911:3:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3718,
                              "name": "pending",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3666,
                              "src": "2916:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3719,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3641,
                              "src": "2925:2:10",
                              "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_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3715,
                            "name": "LogOnReward",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3589,
                            "src": "2892:11:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$returns$__$",
                              "typeString": "function (address,uint256,uint256,address)"
                            }
                          },
                          "id": 3720,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2892:36:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3721,
                        "nodeType": "EmitStatement",
                        "src": "2887:41:10"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "a3d83320",
                  "id": 3723,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 3648,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 3647,
                        "name": "onlyMCV2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3793,
                        "src": "2345:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2345:8:10"
                    }
                  ],
                  "name": "onGoldNuggetReward",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 3649,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2354:8:10"
                  },
                  "parameters": {
                    "id": 3646,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3637,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3723,
                        "src": "2279:11:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3636,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2279:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3639,
                        "mutability": "mutable",
                        "name": "_user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3723,
                        "src": "2292:13:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3638,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2292:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3641,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3723,
                        "src": "2307:10:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3640,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2307:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3643,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3723,
                        "src": "2319:7:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3642,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2319:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3645,
                        "mutability": "mutable",
                        "name": "lpToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3723,
                        "src": "2328:15:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3644,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2328:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2278:66:10"
                  },
                  "returnParameters": {
                    "id": 3650,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2372:0:10"
                  },
                  "scope": 4146,
                  "src": "2250:685:10",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    3319
                  ],
                  "body": {
                    "id": 3780,
                    "nodeType": "Block",
                    "src": "3098:267:10",
                    "statements": [
                      {
                        "assignments": [
                          3742
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3742,
                            "mutability": "mutable",
                            "name": "_rewardTokens",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3780,
                            "src": "3108:29:10",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_memory_ptr",
                              "typeString": "contract IERC20[]"
                            },
                            "typeName": {
                              "baseType": {
                                "contractScope": null,
                                "id": 3740,
                                "name": "IERC20",
                                "nodeType": "UserDefinedTypeName",
                                "referencedDeclaration": 337,
                                "src": "3108:6:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$337",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "id": 3741,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "3108:8:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage_ptr",
                                "typeString": "contract IERC20[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3748,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 3746,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3153:1:10",
                              "subdenomination": null,
                              "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": 3745,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "3140:12:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IERC20_$337_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (contract IERC20[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "contractScope": null,
                                "id": 3743,
                                "name": "IERC20",
                                "nodeType": "UserDefinedTypeName",
                                "referencedDeclaration": 337,
                                "src": "3144:6:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$337",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "id": 3744,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "3144:8:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage_ptr",
                                "typeString": "contract IERC20[]"
                              }
                            }
                          },
                          "id": 3747,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3140:15:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_memory_ptr",
                            "typeString": "contract IERC20[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3108:47:10"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3754,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3749,
                              "name": "_rewardTokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3742,
                              "src": "3165:13:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_memory_ptr",
                                "typeString": "contract IERC20[] memory"
                              }
                            },
                            "id": 3751,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 3750,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3179:1:10",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3165:16:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 3752,
                                "name": "rewardToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3542,
                                "src": "3185:11:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$337",
                                  "typeString": "contract IERC20"
                                }
                              }
                            ],
                            "id": 3753,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "3184:13:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            }
                          },
                          "src": "3165:32:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "id": 3755,
                        "nodeType": "ExpressionStatement",
                        "src": "3165:32:10"
                      },
                      {
                        "assignments": [
                          3760
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3760,
                            "mutability": "mutable",
                            "name": "_rewardAmounts",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3780,
                            "src": "3207:31:10",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 3758,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "3207:7:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3759,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "3207:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3766,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 3764,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3255:1:10",
                              "subdenomination": null,
                              "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": 3763,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "3241:13:10",
                            "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": 3761,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "3245:7:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3762,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "3245:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 3765,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3241:16:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3207:50:10"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3774,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3767,
                              "name": "_rewardAmounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3760,
                              "src": "3267:14:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 3769,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 3768,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3282:1:10",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3267:17:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3771,
                                "name": "pid",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3725,
                                "src": "3300:3:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 3772,
                                "name": "user",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3727,
                                "src": "3305:4:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 3770,
                              "name": "pendingToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4003,
                              "src": "3287:12:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (uint256,address) view returns (uint256)"
                              }
                            },
                            "id": 3773,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3287:23:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3267:43:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3775,
                        "nodeType": "ExpressionStatement",
                        "src": "3267:43:10"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 3776,
                              "name": "_rewardTokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3742,
                              "src": "3328:13:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_memory_ptr",
                                "typeString": "contract IERC20[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3777,
                              "name": "_rewardAmounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3760,
                              "src": "3343:14:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "id": 3778,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "3327:31:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_array$_t_contract$_IERC20_$337_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                            "typeString": "tuple(contract IERC20[] memory,uint256[] memory)"
                          }
                        },
                        "functionReturnParameters": 3738,
                        "id": 3779,
                        "nodeType": "Return",
                        "src": "3320:38:10"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "d63b3c49",
                  "id": 3781,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "pendingTokens",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 3731,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3004:8:10"
                  },
                  "parameters": {
                    "id": 3730,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3725,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3781,
                        "src": "2968:11:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3724,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2968:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3727,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3781,
                        "src": "2981:12:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3726,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2981:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3729,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3781,
                        "src": "2995:7:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3728,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2995:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2967:36:10"
                  },
                  "returnParameters": {
                    "id": 3738,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3734,
                        "mutability": "mutable",
                        "name": "rewardTokens",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3781,
                        "src": "3036:28:10",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_memory_ptr",
                          "typeString": "contract IERC20[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 3732,
                            "name": "IERC20",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 337,
                            "src": "3036:6:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 3733,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "3036:8:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage_ptr",
                            "typeString": "contract IERC20[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3737,
                        "mutability": "mutable",
                        "name": "rewardAmounts",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3781,
                        "src": "3066:30:10",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3735,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3066:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3736,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "3066:9:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3035:62:10"
                  },
                  "scope": 4146,
                  "src": "2945:420:10",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 3792,
                    "nodeType": "Block",
                    "src": "3389:134:10",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 3787,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3784,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "3420:3:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 3785,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3420:10:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 3786,
                                "name": "GOLDMINER_V2",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3579,
                                "src": "3434:12:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "3420:26:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4f6e6c79204d4356322063616e2063616c6c20746869732066756e6374696f6e2e",
                              "id": 3788,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3460:35:10",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_3119d70f54e65f7fc05dc3fff78f1ae1d0c82eaf50b477c40260718556fca1cd",
                                "typeString": "literal_string \"Only MCV2 can call this function.\""
                              },
                              "value": "Only MCV2 can call this function."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_3119d70f54e65f7fc05dc3fff78f1ae1d0c82eaf50b477c40260718556fca1cd",
                                "typeString": "literal_string \"Only MCV2 can call this function.\""
                              }
                            ],
                            "id": 3783,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3399:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3789,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3399:106:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3790,
                        "nodeType": "ExpressionStatement",
                        "src": "3399:106:10"
                      },
                      {
                        "id": 3791,
                        "nodeType": "PlaceholderStatement",
                        "src": "3515:1:10"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 3793,
                  "name": "onlyMCV2",
                  "nodeType": "ModifierDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3782,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3389:0:10"
                  },
                  "src": "3371:152:10",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3804,
                    "nodeType": "Block",
                    "src": "3637:39:10",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3802,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3799,
                            "name": "pools",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3797,
                            "src": "3647:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3800,
                              "name": "poolIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3562,
                              "src": "3655:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                "typeString": "uint256[] storage ref"
                              }
                            },
                            "id": 3801,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3655:14:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3647:22:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3803,
                        "nodeType": "ExpressionStatement",
                        "src": "3647:22:10"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3794,
                    "nodeType": "StructuredDocumentation",
                    "src": "3529:45:10",
                    "text": "@notice Returns the number of MCV2 pools."
                  },
                  "functionSelector": "081e3eda",
                  "id": 3805,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "poolLength",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3795,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3598:2:10"
                  },
                  "returnParameters": {
                    "id": 3798,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3797,
                        "mutability": "mutable",
                        "name": "pools",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3805,
                        "src": "3622:13:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3796,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3622:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3621:15:10"
                  },
                  "scope": 4146,
                  "src": "3579:97:10",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 3862,
                    "nodeType": "Block",
                    "src": "3990:449:10",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              },
                              "id": 3821,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3816,
                                    "name": "poolInfo",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3559,
                                    "src": "4008:8:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_PoolInfo_$3554_storage_$",
                                      "typeString": "mapping(uint256 => struct ComplexRewarder.PoolInfo storage ref)"
                                    }
                                  },
                                  "id": 3818,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 3817,
                                    "name": "_pid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3810,
                                    "src": "4017:4:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4008:14:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PoolInfo_$3554_storage",
                                    "typeString": "struct ComplexRewarder.PoolInfo storage ref"
                                  }
                                },
                                "id": 3819,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "lastRewardBlock",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3551,
                                "src": "4008:30:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 3820,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4042:1:10",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "4008:35:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "506f6f6c20616c726561647920657869737473",
                              "id": 3822,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4045:21:10",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_12db6f275306e49a55f39c487439bf20013b2e7f9ac363f83c1b47cbc0b35b95",
                                "typeString": "literal_string \"Pool already exists\""
                              },
                              "value": "Pool already exists"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_12db6f275306e49a55f39c487439bf20013b2e7f9ac363f83c1b47cbc0b35b95",
                                "typeString": "literal_string \"Pool already exists\""
                              }
                            ],
                            "id": 3815,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4000:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3823,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4000:67:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3824,
                        "nodeType": "ExpressionStatement",
                        "src": "4000:67:10"
                      },
                      {
                        "assignments": [
                          3826
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3826,
                            "mutability": "mutable",
                            "name": "lastRewardBlock",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3862,
                            "src": "4077:23:10",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3825,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4077:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3829,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3827,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -4,
                            "src": "4103:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 3828,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "number",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4103:12:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4077:38:10"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3835,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3830,
                            "name": "totalAllocPoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3572,
                            "src": "4125:15:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3833,
                                "name": "allocPoint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3808,
                                "src": "4163:10:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 3831,
                                "name": "totalAllocPoint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3572,
                                "src": "4143:15:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3832,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 577,
                              "src": "4143:19:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 3834,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4143:31:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4125:49:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3836,
                        "nodeType": "ExpressionStatement",
                        "src": "4125:49:10"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3849,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3837,
                              "name": "poolInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3559,
                              "src": "4185:8:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_PoolInfo_$3554_storage_$",
                                "typeString": "mapping(uint256 => struct ComplexRewarder.PoolInfo storage ref)"
                              }
                            },
                            "id": 3839,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3838,
                              "name": "_pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3810,
                              "src": "4194:4:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4185:14:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$3554_storage",
                              "typeString": "struct ComplexRewarder.PoolInfo storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3841,
                                    "name": "allocPoint",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3808,
                                    "src": "4237:10:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3842,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "to64",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 679,
                                  "src": "4237:15:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256) pure returns (uint64)"
                                  }
                                },
                                "id": 3843,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4237:17:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3844,
                                    "name": "lastRewardBlock",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3826,
                                    "src": "4285:15:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3845,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "to64",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 679,
                                  "src": "4285:20:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256) pure returns (uint64)"
                                  }
                                },
                                "id": 3846,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4285:22:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 3847,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4344:1:10",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                },
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 3840,
                              "name": "PoolInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3554,
                              "src": "4202:8:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_struct$_PoolInfo_$3554_storage_ptr_$",
                                "typeString": "type(struct ComplexRewarder.PoolInfo storage pointer)"
                              }
                            },
                            "id": 3848,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "structConstructorCall",
                            "lValueRequested": false,
                            "names": [
                              "allocPoint",
                              "lastRewardBlock",
                              "accGoldNuggetPerShare"
                            ],
                            "nodeType": "FunctionCall",
                            "src": "4202:154:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$3554_memory_ptr",
                              "typeString": "struct ComplexRewarder.PoolInfo memory"
                            }
                          },
                          "src": "4185:171:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$3554_storage",
                            "typeString": "struct ComplexRewarder.PoolInfo storage ref"
                          }
                        },
                        "id": 3850,
                        "nodeType": "ExpressionStatement",
                        "src": "4185:171:10"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3854,
                              "name": "_pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3810,
                              "src": "4379:4:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 3851,
                              "name": "poolIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3562,
                              "src": "4366:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                "typeString": "uint256[] storage ref"
                              }
                            },
                            "id": 3853,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4366:12:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 3855,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4366:18:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3856,
                        "nodeType": "ExpressionStatement",
                        "src": "4366:18:10"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3858,
                              "name": "_pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3810,
                              "src": "4415:4:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3859,
                              "name": "allocPoint",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3808,
                              "src": "4421:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3857,
                            "name": "LogPoolAddition",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3595,
                            "src": "4399:15:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256)"
                            }
                          },
                          "id": 3860,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4399:33:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3861,
                        "nodeType": "EmitStatement",
                        "src": "4394:38:10"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3806,
                    "nodeType": "StructuredDocumentation",
                    "src": "3682:239:10",
                    "text": "@notice Add a new LP to the pool.  Can only be called by the owner.\n DO NOT add the same LP token more than once. Rewards will be messed up if you do.\n @param allocPoint AP of the new pool.\n @param _pid Pid on MCV2"
                  },
                  "functionSelector": "771602f7",
                  "id": 3863,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 3813,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 3812,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 270,
                        "src": "3980:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "3980:9:10"
                    }
                  ],
                  "name": "add",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3811,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3808,
                        "mutability": "mutable",
                        "name": "allocPoint",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3863,
                        "src": "3939:18:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3807,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3939:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3810,
                        "mutability": "mutable",
                        "name": "_pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3863,
                        "src": "3959:12:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3809,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3959:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3938:34:10"
                  },
                  "returnParameters": {
                    "id": 3814,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3990:0:10"
                  },
                  "scope": 4146,
                  "src": "3926:513:10",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 3900,
                    "nodeType": "Block",
                    "src": "4737:198:10",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3884,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3873,
                            "name": "totalAllocPoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3572,
                            "src": "4747:15:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3882,
                                "name": "_allocPoint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3868,
                                "src": "4816:11:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 3876,
                                        "name": "poolInfo",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3559,
                                        "src": "4785:8:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_PoolInfo_$3554_storage_$",
                                          "typeString": "mapping(uint256 => struct ComplexRewarder.PoolInfo storage ref)"
                                        }
                                      },
                                      "id": 3878,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 3877,
                                        "name": "_pid",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3866,
                                        "src": "4794:4:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "4785:14:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PoolInfo_$3554_storage",
                                        "typeString": "struct ComplexRewarder.PoolInfo storage ref"
                                      }
                                    },
                                    "id": 3879,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "allocPoint",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3553,
                                    "src": "4785:25:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3874,
                                    "name": "totalAllocPoint",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3572,
                                    "src": "4765:15:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3875,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sub",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 599,
                                  "src": "4765:19:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 3880,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4765:46:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3881,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 577,
                              "src": "4765:50:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 3883,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4765:63:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4747:81:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3885,
                        "nodeType": "ExpressionStatement",
                        "src": "4747:81:10"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3893,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3886,
                                "name": "poolInfo",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3559,
                                "src": "4838:8:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_PoolInfo_$3554_storage_$",
                                  "typeString": "mapping(uint256 => struct ComplexRewarder.PoolInfo storage ref)"
                                }
                              },
                              "id": 3888,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 3887,
                                "name": "_pid",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3866,
                                "src": "4847:4:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4838:14:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$3554_storage",
                                "typeString": "struct ComplexRewarder.PoolInfo storage ref"
                              }
                            },
                            "id": 3889,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "allocPoint",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3553,
                            "src": "4838:25:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "id": 3890,
                                "name": "_allocPoint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3868,
                                "src": "4866:11:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3891,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "to64",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 679,
                              "src": "4866:16:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256) pure returns (uint64)"
                              }
                            },
                            "id": 3892,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4866:18:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "src": "4838:46:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "id": 3894,
                        "nodeType": "ExpressionStatement",
                        "src": "4838:46:10"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3896,
                              "name": "_pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3866,
                              "src": "4910:4:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3897,
                              "name": "_allocPoint",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3868,
                              "src": "4916:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3895,
                            "name": "LogSetPool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3601,
                            "src": "4899:10:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256)"
                            }
                          },
                          "id": 3898,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4899:29:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3899,
                        "nodeType": "EmitStatement",
                        "src": "4894:34:10"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3864,
                    "nodeType": "StructuredDocumentation",
                    "src": "4445:222:10",
                    "text": "@notice Update the given pool's GOLN allocation point and `IRewarder` contract. Can only be called by the owner.\n @param _pid The index of the pool. See `poolInfo`.\n @param _allocPoint New AP of the pool."
                  },
                  "functionSelector": "1ab06ee5",
                  "id": 3901,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 3871,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 3870,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 270,
                        "src": "4727:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4727:9:10"
                    }
                  ],
                  "name": "set",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3869,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3866,
                        "mutability": "mutable",
                        "name": "_pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3901,
                        "src": "4685:12:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3865,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4685:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3868,
                        "mutability": "mutable",
                        "name": "_allocPoint",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3901,
                        "src": "4699:19:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3867,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4699:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4684:35:10"
                  },
                  "returnParameters": {
                    "id": 3872,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4737:0:10"
                  },
                  "scope": 4146,
                  "src": "4672:263:10",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 4002,
                    "nodeType": "Block",
                    "src": "5232:741:10",
                    "statements": [
                      {
                        "assignments": [
                          3912
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3912,
                            "mutability": "mutable",
                            "name": "pool",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4002,
                            "src": "5242:20:10",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$3554_memory_ptr",
                              "typeString": "struct ComplexRewarder.PoolInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 3911,
                              "name": "PoolInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 3554,
                              "src": "5242:8:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$3554_storage_ptr",
                                "typeString": "struct ComplexRewarder.PoolInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3916,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3913,
                            "name": "poolInfo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3559,
                            "src": "5265:8:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_PoolInfo_$3554_storage_$",
                              "typeString": "mapping(uint256 => struct ComplexRewarder.PoolInfo storage ref)"
                            }
                          },
                          "id": 3915,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3914,
                            "name": "_pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3904,
                            "src": "5274:4:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5265:14:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$3554_storage",
                            "typeString": "struct ComplexRewarder.PoolInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5242:37:10"
                      },
                      {
                        "assignments": [
                          3918
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3918,
                            "mutability": "mutable",
                            "name": "user",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4002,
                            "src": "5289:21:10",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$3547_storage_ptr",
                              "typeString": "struct ComplexRewarder.UserInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 3917,
                              "name": "UserInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 3547,
                              "src": "5289:8:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$3547_storage_ptr",
                                "typeString": "struct ComplexRewarder.UserInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3924,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3919,
                              "name": "userInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3569,
                              "src": "5313:8:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$3547_storage_$_$",
                                "typeString": "mapping(uint256 => mapping(address => struct ComplexRewarder.UserInfo storage ref))"
                              }
                            },
                            "id": 3921,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3920,
                              "name": "_pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3904,
                              "src": "5322:4:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5313:14:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$3547_storage_$",
                              "typeString": "mapping(address => struct ComplexRewarder.UserInfo storage ref)"
                            }
                          },
                          "id": 3923,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3922,
                            "name": "_user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3906,
                            "src": "5328:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5313:21:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$3547_storage",
                            "typeString": "struct ComplexRewarder.UserInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5289:45:10"
                      },
                      {
                        "assignments": [
                          3926
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3926,
                            "mutability": "mutable",
                            "name": "accGoldNuggetPerShare",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4002,
                            "src": "5344:29:10",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3925,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5344:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3929,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3927,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3912,
                            "src": "5376:4:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$3554_memory_ptr",
                              "typeString": "struct ComplexRewarder.PoolInfo memory"
                            }
                          },
                          "id": 3928,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "accGoldNuggetPerShare",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3549,
                          "src": "5376:26:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5344:58:10"
                      },
                      {
                        "assignments": [
                          3931
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3931,
                            "mutability": "mutable",
                            "name": "lpSupply",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4002,
                            "src": "5412:16:10",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3930,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5412:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3941,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3939,
                              "name": "GOLDMINER_V2",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3579,
                              "src": "5481:12:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3936,
                                  "name": "_pid",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3904,
                                  "src": "5465:4:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 3933,
                                      "name": "GOLDMINER_V2",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3579,
                                      "src": "5443:12:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 3932,
                                    "name": "GoldMinerV2",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2091,
                                    "src": "5431:11:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_GoldMinerV2_$2091_$",
                                      "typeString": "type(contract GoldMinerV2)"
                                    }
                                  },
                                  "id": 3934,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5431:25:10",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_GoldMinerV2_$2091",
                                    "typeString": "contract GoldMinerV2"
                                  }
                                },
                                "id": 3935,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "lpToken",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 906,
                                "src": "5431:33:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IERC20_$337_$",
                                  "typeString": "function (uint256) view external returns (contract IERC20)"
                                }
                              },
                              "id": 3937,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5431:39:10",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 3938,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 285,
                            "src": "5431:49:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 3940,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5431:63:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5412:82:10"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 3950,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3946,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3942,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "5508:5:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 3943,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "number",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "5508:12:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3944,
                                "name": "pool",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3912,
                                "src": "5523:4:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PoolInfo_$3554_memory_ptr",
                                  "typeString": "struct ComplexRewarder.PoolInfo memory"
                                }
                              },
                              "id": 3945,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "lastRewardBlock",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3551,
                              "src": "5523:20:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "src": "5508:35:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3949,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 3947,
                              "name": "lpSupply",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3931,
                              "src": "5547:8:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 3948,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5559:1:10",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "5547:13:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "5508:52:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3986,
                        "nodeType": "IfStatement",
                        "src": "5504:360:10",
                        "trueBody": {
                          "id": 3985,
                          "nodeType": "Block",
                          "src": "5562:302:10",
                          "statements": [
                            {
                              "assignments": [
                                3952
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 3952,
                                  "mutability": "mutable",
                                  "name": "blocks",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 3985,
                                  "src": "5576:14:10",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 3951,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5576:7:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 3959,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3956,
                                      "name": "pool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3912,
                                      "src": "5610:4:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PoolInfo_$3554_memory_ptr",
                                        "typeString": "struct ComplexRewarder.PoolInfo memory"
                                      }
                                    },
                                    "id": 3957,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "lastRewardBlock",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3551,
                                    "src": "5610:20:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3953,
                                      "name": "block",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -4,
                                      "src": "5593:5:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_block",
                                        "typeString": "block"
                                      }
                                    },
                                    "id": 3954,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "number",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "5593:12:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3955,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sub",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 599,
                                  "src": "5593:16:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 3958,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5593:38:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5576:55:10"
                            },
                            {
                              "assignments": [
                                3961
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 3961,
                                  "mutability": "mutable",
                                  "name": "goldnuggetReward",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 3985,
                                  "src": "5645:24:10",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 3960,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5645:7:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 3972,
                              "initialValue": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3971,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 3967,
                                        "name": "pool",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3912,
                                        "src": "5702:4:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_PoolInfo_$3554_memory_ptr",
                                          "typeString": "struct ComplexRewarder.PoolInfo memory"
                                        }
                                      },
                                      "id": 3968,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "allocPoint",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3553,
                                      "src": "5702:15:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 3964,
                                          "name": "tokenPerBlock",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3574,
                                          "src": "5683:13:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 3962,
                                          "name": "blocks",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3952,
                                          "src": "5672:6:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 3963,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 627,
                                        "src": "5672:10:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 3965,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5672:25:10",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 3966,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 627,
                                    "src": "5672:29:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 3969,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5672:46:10",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 3970,
                                  "name": "totalAllocPoint",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3572,
                                  "src": "5721:15:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5672:64:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5645:91:10"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3983,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 3973,
                                  "name": "accGoldNuggetPerShare",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3926,
                                  "src": "5750:21:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 3981,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 3978,
                                            "name": "ACC_TOKEN_PRECISION",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3577,
                                            "src": "5821:19:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 3976,
                                            "name": "goldnuggetReward",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3961,
                                            "src": "5800:16:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 3977,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "mul",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 627,
                                          "src": "5800:20:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 3979,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5800:41:10",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "/",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 3980,
                                        "name": "lpSupply",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3931,
                                        "src": "5844:8:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "5800:52:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3974,
                                      "name": "accGoldNuggetPerShare",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3926,
                                      "src": "5774:21:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 3975,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 577,
                                    "src": "5774:25:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 3982,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5774:79:10",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5750:103:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3984,
                              "nodeType": "ExpressionStatement",
                              "src": "5750:103:10"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4000,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3987,
                            "name": "pending",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3909,
                            "src": "5873:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3997,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3918,
                                  "src": "5950:4:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserInfo_$3547_storage_ptr",
                                    "typeString": "struct ComplexRewarder.UserInfo storage pointer"
                                  }
                                },
                                "id": 3998,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "rewardDebt",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3546,
                                "src": "5950:15:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 3994,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 3991,
                                          "name": "accGoldNuggetPerShare",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3926,
                                          "src": "5900:21:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 3988,
                                            "name": "user",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3918,
                                            "src": "5884:4:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_UserInfo_$3547_storage_ptr",
                                              "typeString": "struct ComplexRewarder.UserInfo storage pointer"
                                            }
                                          },
                                          "id": 3989,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "amount",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 3544,
                                          "src": "5884:11:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 3990,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 627,
                                        "src": "5884:15:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 3992,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5884:38:10",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "/",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 3993,
                                      "name": "ACC_TOKEN_PRECISION",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3577,
                                      "src": "5925:19:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "5884:60:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 3995,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "5883:62:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3996,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 599,
                              "src": "5883:66:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 3999,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5883:83:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5873:93:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4001,
                        "nodeType": "ExpressionStatement",
                        "src": "5873:93:10"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3902,
                    "nodeType": "StructuredDocumentation",
                    "src": "4941:197:10",
                    "text": "@notice View function to see pending Token\n @param _pid The index of the pool. See `poolInfo`.\n @param _user Address of user.\n @return pending GOLN reward for a given user."
                  },
                  "functionSelector": "48e43af4",
                  "id": 4003,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "pendingToken",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3907,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3904,
                        "mutability": "mutable",
                        "name": "_pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4003,
                        "src": "5165:12:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3903,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5165:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3906,
                        "mutability": "mutable",
                        "name": "_user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4003,
                        "src": "5179:13:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3905,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5179:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5164:29:10"
                  },
                  "returnParameters": {
                    "id": 3910,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3909,
                        "mutability": "mutable",
                        "name": "pending",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4003,
                        "src": "5215:15:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3908,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5215:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5214:17:10"
                  },
                  "scope": 4146,
                  "src": "5143:830:10",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 4033,
                    "nodeType": "Block",
                    "src": "6210:129:10",
                    "statements": [
                      {
                        "assignments": [
                          4011
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4011,
                            "mutability": "mutable",
                            "name": "len",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4033,
                            "src": "6220:11:10",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4010,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6220:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4014,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4012,
                            "name": "pids",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4007,
                            "src": "6234:4:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          "id": 4013,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "6234:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6220:25:10"
                      },
                      {
                        "body": {
                          "id": 4031,
                          "nodeType": "Block",
                          "src": "6289:44:10",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 4026,
                                      "name": "pids",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4007,
                                      "src": "6314:4:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                        "typeString": "uint256[] calldata"
                                      }
                                    },
                                    "id": 4028,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 4027,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4016,
                                      "src": "6319:1:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "6314:7:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 4025,
                                  "name": "updatePool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4145,
                                  "src": "6303:10:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_struct$_PoolInfo_$3554_memory_ptr_$",
                                    "typeString": "function (uint256) returns (struct ComplexRewarder.PoolInfo memory)"
                                  }
                                },
                                "id": 4029,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6303:19:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PoolInfo_$3554_memory_ptr",
                                  "typeString": "struct ComplexRewarder.PoolInfo memory"
                                }
                              },
                              "id": 4030,
                              "nodeType": "ExpressionStatement",
                              "src": "6303:19:10"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4021,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 4019,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4016,
                            "src": "6275:1:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 4020,
                            "name": "len",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4011,
                            "src": "6279:3:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6275:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4032,
                        "initializationExpression": {
                          "assignments": [
                            4016
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 4016,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 4032,
                              "src": "6260:9:10",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 4015,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "6260:7:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 4018,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 4017,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6272:1:10",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "6260:13:10"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 4023,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "6284:3:10",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 4022,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4016,
                              "src": "6286:1:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4024,
                          "nodeType": "ExpressionStatement",
                          "src": "6284:3:10"
                        },
                        "nodeType": "ForStatement",
                        "src": "6255:78:10"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4004,
                    "nodeType": "StructuredDocumentation",
                    "src": "5979:167:10",
                    "text": "@notice Update reward variables for all pools. Be careful of gas spending!\n @param pids Pool IDs of all to be updated. Make sure to update all active pools."
                  },
                  "functionSelector": "57a5b58c",
                  "id": 4034,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "massUpdatePools",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4008,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4007,
                        "mutability": "mutable",
                        "name": "pids",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4034,
                        "src": "6176:23:10",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4005,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "6176:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4006,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "6176:9:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6175:25:10"
                  },
                  "returnParameters": {
                    "id": 4009,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6210:0:10"
                  },
                  "scope": 4146,
                  "src": "6151:188:10",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 4144,
                    "nodeType": "Block",
                    "src": "6589:817:10",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4046,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4042,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4040,
                            "src": "6599:4:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$3554_memory_ptr",
                              "typeString": "struct ComplexRewarder.PoolInfo memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4043,
                              "name": "poolInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3559,
                              "src": "6606:8:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_PoolInfo_$3554_storage_$",
                                "typeString": "mapping(uint256 => struct ComplexRewarder.PoolInfo storage ref)"
                              }
                            },
                            "id": 4045,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 4044,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4037,
                              "src": "6615:3:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6606:13:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$3554_storage",
                              "typeString": "struct ComplexRewarder.PoolInfo storage ref"
                            }
                          },
                          "src": "6599:20:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$3554_memory_ptr",
                            "typeString": "struct ComplexRewarder.PoolInfo memory"
                          }
                        },
                        "id": 4047,
                        "nodeType": "ExpressionStatement",
                        "src": "6599:20:10"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              },
                              "id": 4052,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4049,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4040,
                                  "src": "6637:4:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PoolInfo_$3554_memory_ptr",
                                    "typeString": "struct ComplexRewarder.PoolInfo memory"
                                  }
                                },
                                "id": 4050,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "lastRewardBlock",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3551,
                                "src": "6637:20:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 4051,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6661:1:10",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "6637:25:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "506f6f6c20646f6573206e6f74206578697374",
                              "id": 4053,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6664:21:10",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5431fb1d188dcb2accc598cd1f0bfc0c6d8ac1fdd8f589953b20179c9a903b37",
                                "typeString": "literal_string \"Pool does not exist\""
                              },
                              "value": "Pool does not exist"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5431fb1d188dcb2accc598cd1f0bfc0c6d8ac1fdd8f589953b20179c9a903b37",
                                "typeString": "literal_string \"Pool does not exist\""
                              }
                            ],
                            "id": 4048,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6629:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4054,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6629:57:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4055,
                        "nodeType": "ExpressionStatement",
                        "src": "6629:57:10"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4060,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4056,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "6700:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 4057,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "number",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6700:12:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4058,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4040,
                              "src": "6715:4:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$3554_memory_ptr",
                                "typeString": "struct ComplexRewarder.PoolInfo memory"
                              }
                            },
                            "id": 4059,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "lastRewardBlock",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3551,
                            "src": "6715:20:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "src": "6700:35:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 4143,
                        "nodeType": "IfStatement",
                        "src": "6696:704:10",
                        "trueBody": {
                          "id": 4142,
                          "nodeType": "Block",
                          "src": "6737:663:10",
                          "statements": [
                            {
                              "assignments": [
                                4062
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 4062,
                                  "mutability": "mutable",
                                  "name": "lpSupply",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 4142,
                                  "src": "6751:16:10",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 4061,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6751:7:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 4072,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 4070,
                                    "name": "GOLDMINER_V2",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3579,
                                    "src": "6819:12:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 4067,
                                        "name": "pid",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4037,
                                        "src": "6804:3:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 4064,
                                            "name": "GOLDMINER_V2",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3579,
                                            "src": "6782:12:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 4063,
                                          "name": "GoldMinerV2",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2091,
                                          "src": "6770:11:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_GoldMinerV2_$2091_$",
                                            "typeString": "type(contract GoldMinerV2)"
                                          }
                                        },
                                        "id": 4065,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6770:25:10",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_GoldMinerV2_$2091",
                                          "typeString": "contract GoldMinerV2"
                                        }
                                      },
                                      "id": 4066,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "lpToken",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 906,
                                      "src": "6770:33:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IERC20_$337_$",
                                        "typeString": "function (uint256) view external returns (contract IERC20)"
                                      }
                                    },
                                    "id": 4068,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6770:38:10",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$337",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 4069,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "balanceOf",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 285,
                                  "src": "6770:48:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address) view external returns (uint256)"
                                  }
                                },
                                "id": 4071,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6770:62:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "6751:81:10"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4075,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 4073,
                                  "name": "lpSupply",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4062,
                                  "src": "6851:8:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 4074,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6862:1:10",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "6851:12:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 4117,
                              "nodeType": "IfStatement",
                              "src": "6847:356:10",
                              "trueBody": {
                                "id": 4116,
                                "nodeType": "Block",
                                "src": "6865:338:10",
                                "statements": [
                                  {
                                    "assignments": [
                                      4077
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 4077,
                                        "mutability": "mutable",
                                        "name": "blocks",
                                        "nodeType": "VariableDeclaration",
                                        "overrides": null,
                                        "scope": 4116,
                                        "src": "6883:14:10",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 4076,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "6883:7:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 4084,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 4081,
                                            "name": "pool",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4040,
                                            "src": "6917:4:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_PoolInfo_$3554_memory_ptr",
                                              "typeString": "struct ComplexRewarder.PoolInfo memory"
                                            }
                                          },
                                          "id": 4082,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "lastRewardBlock",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 3551,
                                          "src": "6917:20:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint64",
                                            "typeString": "uint64"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint64",
                                            "typeString": "uint64"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 4078,
                                            "name": "block",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -4,
                                            "src": "6900:5:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_block",
                                              "typeString": "block"
                                            }
                                          },
                                          "id": 4079,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "number",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": null,
                                          "src": "6900:12:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 4080,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sub",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 599,
                                        "src": "6900:16:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 4083,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6900:38:10",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "6883:55:10"
                                  },
                                  {
                                    "assignments": [
                                      4086
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 4086,
                                        "mutability": "mutable",
                                        "name": "goldnuggetReward",
                                        "nodeType": "VariableDeclaration",
                                        "overrides": null,
                                        "scope": 4116,
                                        "src": "6956:24:10",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 4085,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "6956:7:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 4097,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 4096,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 4092,
                                              "name": "pool",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4040,
                                              "src": "7013:4:10",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_PoolInfo_$3554_memory_ptr",
                                                "typeString": "struct ComplexRewarder.PoolInfo memory"
                                              }
                                            },
                                            "id": 4093,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "allocPoint",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3553,
                                            "src": "7013:15:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint64",
                                              "typeString": "uint64"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint64",
                                              "typeString": "uint64"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 4089,
                                                "name": "tokenPerBlock",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3574,
                                                "src": "6994:13:10",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 4087,
                                                "name": "blocks",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4077,
                                                "src": "6983:6:10",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 4088,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "mul",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 627,
                                              "src": "6983:10:10",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                              }
                                            },
                                            "id": 4090,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "6983:25:10",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 4091,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "mul",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 627,
                                          "src": "6983:29:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 4094,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6983:46:10",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "/",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 4095,
                                        "name": "totalAllocPoint",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3572,
                                        "src": "7032:15:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "6983:64:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "6956:91:10"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 4114,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 4098,
                                          "name": "pool",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4040,
                                          "src": "7065:4:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_PoolInfo_$3554_memory_ptr",
                                            "typeString": "struct ComplexRewarder.PoolInfo memory"
                                          }
                                        },
                                        "id": 4100,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberName": "accGoldNuggetPerShare",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3549,
                                        "src": "7065:26:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "arguments": [],
                                            "expression": {
                                              "argumentTypes": [],
                                              "expression": {
                                                "argumentTypes": null,
                                                "components": [
                                                  {
                                                    "argumentTypes": null,
                                                    "commonType": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    },
                                                    "id": 4109,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                      "argumentTypes": null,
                                                      "arguments": [
                                                        {
                                                          "argumentTypes": null,
                                                          "id": 4106,
                                                          "name": "ACC_TOKEN_PRECISION",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 3577,
                                                          "src": "7147:19:10",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        }
                                                      ],
                                                      "expression": {
                                                        "argumentTypes": [
                                                          {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        ],
                                                        "expression": {
                                                          "argumentTypes": null,
                                                          "id": 4104,
                                                          "name": "goldnuggetReward",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 4086,
                                                          "src": "7126:16:10",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        },
                                                        "id": 4105,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "mul",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 627,
                                                        "src": "7126:20:10",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                        }
                                                      },
                                                      "id": 4107,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "kind": "functionCall",
                                                      "lValueRequested": false,
                                                      "names": [],
                                                      "nodeType": "FunctionCall",
                                                      "src": "7126:41:10",
                                                      "tryCall": false,
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "/",
                                                    "rightExpression": {
                                                      "argumentTypes": null,
                                                      "id": 4108,
                                                      "name": "lpSupply",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 4062,
                                                      "src": "7170:8:10",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "7126:52:10",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  }
                                                ],
                                                "id": 4110,
                                                "isConstant": false,
                                                "isInlineArray": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "TupleExpression",
                                                "src": "7125:54:10",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 4111,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "to128",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 653,
                                              "src": "7125:60:10",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint128_$bound_to$_t_uint256_$",
                                                "typeString": "function (uint256) pure returns (uint128)"
                                              }
                                            },
                                            "id": 4112,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "7125:62:10",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint128",
                                              "typeString": "uint128"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint128",
                                              "typeString": "uint128"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 4101,
                                              "name": "pool",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4040,
                                              "src": "7094:4:10",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_PoolInfo_$3554_memory_ptr",
                                                "typeString": "struct ComplexRewarder.PoolInfo memory"
                                              }
                                            },
                                            "id": 4102,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "accGoldNuggetPerShare",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3549,
                                            "src": "7094:26:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint128",
                                              "typeString": "uint128"
                                            }
                                          },
                                          "id": 4103,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "add",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 728,
                                          "src": "7094:30:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint128_$_t_uint128_$returns$_t_uint128_$bound_to$_t_uint128_$",
                                            "typeString": "function (uint128,uint128) pure returns (uint128)"
                                          }
                                        },
                                        "id": 4113,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7094:94:10",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      },
                                      "src": "7065:123:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    },
                                    "id": 4115,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7065:123:10"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 4125,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4118,
                                    "name": "pool",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4040,
                                    "src": "7216:4:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PoolInfo_$3554_memory_ptr",
                                      "typeString": "struct ComplexRewarder.PoolInfo memory"
                                    }
                                  },
                                  "id": 4120,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "lastRewardBlock",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3551,
                                  "src": "7216:20:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 4121,
                                        "name": "block",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -4,
                                        "src": "7239:5:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_block",
                                          "typeString": "block"
                                        }
                                      },
                                      "id": 4122,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "number",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "7239:12:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 4123,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "to64",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 679,
                                    "src": "7239:17:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256) pure returns (uint64)"
                                    }
                                  },
                                  "id": 4124,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7239:19:10",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                "src": "7216:42:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              "id": 4126,
                              "nodeType": "ExpressionStatement",
                              "src": "7216:42:10"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 4131,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 4127,
                                    "name": "poolInfo",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3559,
                                    "src": "7272:8:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_PoolInfo_$3554_storage_$",
                                      "typeString": "mapping(uint256 => struct ComplexRewarder.PoolInfo storage ref)"
                                    }
                                  },
                                  "id": 4129,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 4128,
                                    "name": "pid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4037,
                                    "src": "7281:3:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "7272:13:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PoolInfo_$3554_storage",
                                    "typeString": "struct ComplexRewarder.PoolInfo storage ref"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 4130,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4040,
                                  "src": "7288:4:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PoolInfo_$3554_memory_ptr",
                                    "typeString": "struct ComplexRewarder.PoolInfo memory"
                                  }
                                },
                                "src": "7272:20:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PoolInfo_$3554_storage",
                                  "typeString": "struct ComplexRewarder.PoolInfo storage ref"
                                }
                              },
                              "id": 4132,
                              "nodeType": "ExpressionStatement",
                              "src": "7272:20:10"
                            },
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 4134,
                                    "name": "pid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4037,
                                    "src": "7325:3:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 4135,
                                      "name": "pool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4040,
                                      "src": "7330:4:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PoolInfo_$3554_memory_ptr",
                                        "typeString": "struct ComplexRewarder.PoolInfo memory"
                                      }
                                    },
                                    "id": 4136,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "lastRewardBlock",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3551,
                                    "src": "7330:20:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 4137,
                                    "name": "lpSupply",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4062,
                                    "src": "7352:8:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 4138,
                                      "name": "pool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4040,
                                      "src": "7362:4:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PoolInfo_$3554_memory_ptr",
                                        "typeString": "struct ComplexRewarder.PoolInfo memory"
                                      }
                                    },
                                    "id": 4139,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "accGoldNuggetPerShare",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3549,
                                    "src": "7362:26:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  ],
                                  "id": 4133,
                                  "name": "LogUpdatePool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3611,
                                  "src": "7311:13:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint64_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256,uint64,uint256,uint256)"
                                  }
                                },
                                "id": 4140,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7311:78:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4141,
                              "nodeType": "EmitStatement",
                              "src": "7306:83:10"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4035,
                    "nodeType": "StructuredDocumentation",
                    "src": "6345:168:10",
                    "text": "@notice Update reward variables of the given pool.\n @param pid The index of the pool. See `poolInfo`.\n @return pool Returns the pool that was updated."
                  },
                  "functionSelector": "51eb05a6",
                  "id": 4145,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "updatePool",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4038,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4037,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4145,
                        "src": "6538:11:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4036,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6538:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6537:13:10"
                  },
                  "returnParameters": {
                    "id": 4041,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4040,
                        "mutability": "mutable",
                        "name": "pool",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4145,
                        "src": "6567:20:10",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PoolInfo_$3554_memory_ptr",
                          "typeString": "struct ComplexRewarder.PoolInfo"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 4039,
                          "name": "PoolInfo",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 3554,
                          "src": "6567:8:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$3554_storage_ptr",
                            "typeString": "struct ComplexRewarder.PoolInfo"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6566:22:10"
                  },
                  "scope": 4146,
                  "src": "6518:888:10",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 4147,
              "src": "398:7011:10"
            }
          ],
          "src": "33:7377:10"
        },
        "id": 10
      },
      "contracts/mocks/ComplexRewarderTime.sol": {
        "ast": {
          "absolutePath": "contracts/mocks/ComplexRewarderTime.sol",
          "exportedSymbols": {
            "ComplexRewarderTime": [
              4787
            ]
          },
          "id": 4788,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4148,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:23:11"
            },
            {
              "id": 4149,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "57:33:11"
            },
            {
              "absolutePath": "contracts/interfaces/IRewarder.sol",
              "file": "../interfaces/IRewarder.sol",
              "id": 4150,
              "nodeType": "ImportDirective",
              "scope": 4788,
              "sourceUnit": 3321,
              "src": "91:37:11",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol",
              "file": "@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol",
              "id": 4151,
              "nodeType": "ImportDirective",
              "scope": 4788,
              "sourceUnit": 554,
              "src": "129:75:11",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol",
              "file": "@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol",
              "id": 4152,
              "nodeType": "ImportDirective",
              "scope": 4788,
              "sourceUnit": 842,
              "src": "205:74:11",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@boringcrypto/boring-solidity/contracts/BoringOwnable.sol",
              "file": "@boringcrypto/boring-solidity/contracts/BoringOwnable.sol",
              "id": 4153,
              "nodeType": "ImportDirective",
              "scope": 4788,
              "sourceUnit": 272,
              "src": "280:67:11",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/GoldMinerV2.sol",
              "file": "../GoldMinerV2.sol",
              "id": 4154,
              "nodeType": "ImportDirective",
              "scope": 4788,
              "sourceUnit": 2092,
              "src": "348:28:11",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 4156,
                    "name": "IRewarder",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3320,
                    "src": "430:9:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IRewarder_$3320",
                      "typeString": "contract IRewarder"
                    }
                  },
                  "id": 4157,
                  "nodeType": "InheritanceSpecifier",
                  "src": "430:9:11"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 4158,
                    "name": "BoringOwnable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 271,
                    "src": "442:13:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BoringOwnable_$271",
                      "typeString": "contract BoringOwnable"
                    }
                  },
                  "id": 4159,
                  "nodeType": "InheritanceSpecifier",
                  "src": "442:13:11"
                }
              ],
              "contractDependencies": [
                152,
                271,
                3320
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 4155,
                "nodeType": "StructuredDocumentation",
                "src": "378:20:11",
                "text": "@author @0xKeno"
              },
              "fullyImplemented": true,
              "id": 4787,
              "linearizedBaseContracts": [
                4787,
                271,
                152,
                3320
              ],
              "name": "ComplexRewarderTime",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 4162,
                  "libraryName": {
                    "contractScope": null,
                    "id": 4160,
                    "name": "BoringMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 706,
                    "src": "467:10:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BoringMath_$706",
                      "typeString": "library BoringMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "461:29:11",
                  "typeName": {
                    "id": 4161,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "482:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "id": 4165,
                  "libraryName": {
                    "contractScope": null,
                    "id": 4163,
                    "name": "BoringMath128",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 751,
                    "src": "501:13:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BoringMath128_$751",
                      "typeString": "library BoringMath128"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "495:32:11",
                  "typeName": {
                    "id": 4164,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "519:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  }
                },
                {
                  "id": 4168,
                  "libraryName": {
                    "contractScope": null,
                    "id": 4166,
                    "name": "BoringERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 553,
                    "src": "538:11:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BoringERC20_$553",
                      "typeString": "library BoringERC20"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "532:29:11",
                  "typeName": {
                    "contractScope": null,
                    "id": 4167,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 337,
                    "src": "554:6:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$337",
                      "typeString": "contract IERC20"
                    }
                  }
                },
                {
                  "constant": false,
                  "id": 4170,
                  "mutability": "immutable",
                  "name": "rewardToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4787,
                  "src": "567:36:11",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$337",
                    "typeString": "contract IERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4169,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 337,
                    "src": "567:6:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$337",
                      "typeString": "contract IERC20"
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "canonicalName": "ComplexRewarderTime.UserInfo",
                  "id": 4175,
                  "members": [
                    {
                      "constant": false,
                      "id": 4172,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4175,
                      "src": "794:14:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4171,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "794:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4174,
                      "mutability": "mutable",
                      "name": "rewardDebt",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4175,
                      "src": "818:18:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4173,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "818:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "UserInfo",
                  "nodeType": "StructDefinition",
                  "scope": 4787,
                  "src": "768:75:11",
                  "visibility": "public"
                },
                {
                  "canonicalName": "ComplexRewarderTime.PoolInfo",
                  "id": 4182,
                  "members": [
                    {
                      "constant": false,
                      "id": 4177,
                      "mutability": "mutable",
                      "name": "accGoldNuggetPerShare",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4182,
                      "src": "1056:29:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      },
                      "typeName": {
                        "id": 4176,
                        "name": "uint128",
                        "nodeType": "ElementaryTypeName",
                        "src": "1056:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4179,
                      "mutability": "mutable",
                      "name": "lastRewardTime",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4182,
                      "src": "1095:21:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      },
                      "typeName": {
                        "id": 4178,
                        "name": "uint64",
                        "nodeType": "ElementaryTypeName",
                        "src": "1095:6:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4181,
                      "mutability": "mutable",
                      "name": "allocPoint",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4182,
                      "src": "1126:17:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      },
                      "typeName": {
                        "id": 4180,
                        "name": "uint64",
                        "nodeType": "ElementaryTypeName",
                        "src": "1126:6:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "PoolInfo",
                  "nodeType": "StructDefinition",
                  "scope": 4787,
                  "src": "1030:120:11",
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 4183,
                    "nodeType": "StructuredDocumentation",
                    "src": "1156:30:11",
                    "text": "@notice Info of each pool."
                  },
                  "functionSelector": "1526fe27",
                  "id": 4187,
                  "mutability": "mutable",
                  "name": "poolInfo",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4787,
                  "src": "1191:45:11",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_PoolInfo_$4182_storage_$",
                    "typeString": "mapping(uint256 => struct ComplexRewarderTime.PoolInfo)"
                  },
                  "typeName": {
                    "id": 4186,
                    "keyType": {
                      "id": 4184,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1200:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1191:29:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_PoolInfo_$4182_storage_$",
                      "typeString": "mapping(uint256 => struct ComplexRewarderTime.PoolInfo)"
                    },
                    "valueType": {
                      "contractScope": null,
                      "id": 4185,
                      "name": "PoolInfo",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 4182,
                      "src": "1211:8:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_PoolInfo_$4182_storage_ptr",
                        "typeString": "struct ComplexRewarderTime.PoolInfo"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "69883b4e",
                  "id": 4190,
                  "mutability": "mutable",
                  "name": "poolIds",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4787,
                  "src": "1243:24:11",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 4188,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1243:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4189,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1243:9:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 4191,
                    "nodeType": "StructuredDocumentation",
                    "src": "1274:52:11",
                    "text": "@notice Info of each user that stakes LP tokens."
                  },
                  "functionSelector": "93f1a40b",
                  "id": 4197,
                  "mutability": "mutable",
                  "name": "userInfo",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4787,
                  "src": "1331:66:11",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$4175_storage_$_$",
                    "typeString": "mapping(uint256 => mapping(address => struct ComplexRewarderTime.UserInfo))"
                  },
                  "typeName": {
                    "id": 4196,
                    "keyType": {
                      "id": 4192,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1340:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1331:50:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$4175_storage_$_$",
                      "typeString": "mapping(uint256 => mapping(address => struct ComplexRewarderTime.UserInfo))"
                    },
                    "valueType": {
                      "id": 4195,
                      "keyType": {
                        "id": 4193,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1360:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "1351:29:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$4175_storage_$",
                        "typeString": "mapping(address => struct ComplexRewarderTime.UserInfo)"
                      },
                      "valueType": {
                        "contractScope": null,
                        "id": 4194,
                        "name": "UserInfo",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 4175,
                        "src": "1371:8:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$4175_storage_ptr",
                          "typeString": "struct ComplexRewarderTime.UserInfo"
                        }
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 4198,
                    "nodeType": "StructuredDocumentation",
                    "src": "1403:88:11",
                    "text": "@dev Total allocation points. Must be the sum of all allocation points in all pools."
                  },
                  "id": 4200,
                  "mutability": "mutable",
                  "name": "totalAllocPoint",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4787,
                  "src": "1496:23:11",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4199,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1496:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "functionSelector": "8f10369a",
                  "id": 4202,
                  "mutability": "mutable",
                  "name": "rewardPerSecond",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4787,
                  "src": "1526:30:11",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4201,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1526:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "id": 4205,
                  "mutability": "constant",
                  "name": "ACC_TOKEN_PRECISION",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4787,
                  "src": "1562:51:11",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4203,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1562:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "31653132",
                    "id": 4204,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1609:4:11",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1000000000000_by_1",
                      "typeString": "int_const 1000000000000"
                    },
                    "value": "1e12"
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 4207,
                  "mutability": "immutable",
                  "name": "GOLDMINER_V2",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4787,
                  "src": "1620:38:11",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4206,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1620:7:11",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 4217,
                  "name": "LogOnReward",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 4216,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4209,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4217,
                        "src": "1683:20:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4208,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1683:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4211,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4217,
                        "src": "1705:19:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4210,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1705:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4213,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4217,
                        "src": "1726:14:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4212,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1726:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4215,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4217,
                        "src": "1742:18:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4214,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1742:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1682:79:11"
                  },
                  "src": "1665:97:11"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 4223,
                  "name": "LogPoolAddition",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 4222,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4219,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4223,
                        "src": "1789:19:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4218,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1789:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4221,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "allocPoint",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4223,
                        "src": "1810:18:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4220,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1810:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1788:41:11"
                  },
                  "src": "1767:63:11"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 4229,
                  "name": "LogSetPool",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 4228,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4225,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4229,
                        "src": "1852:19:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4224,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1852:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4227,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "allocPoint",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4229,
                        "src": "1873:18:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4226,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1873:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1851:41:11"
                  },
                  "src": "1835:58:11"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 4239,
                  "name": "LogUpdatePool",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 4238,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4231,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4239,
                        "src": "1918:19:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4230,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1918:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4233,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "lastRewardTime",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4239,
                        "src": "1939:21:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 4232,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "1939:6:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4235,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "lpSupply",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4239,
                        "src": "1962:16:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4234,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1962:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4237,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "accGoldNuggetPerShare",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4239,
                        "src": "1980:29:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4236,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1980:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1917:93:11"
                  },
                  "src": "1898:113:11"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 4243,
                  "name": "LogRewardPerSecond",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 4242,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4241,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "rewardPerSecond",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4243,
                        "src": "2041:23:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4240,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2041:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2040:25:11"
                  },
                  "src": "2016:50:11"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 4245,
                  "name": "LogInit",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 4244,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2084:2:11"
                  },
                  "src": "2071:16:11"
                },
                {
                  "body": {
                    "id": 4266,
                    "nodeType": "Block",
                    "src": "2183:125:11",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4256,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4254,
                            "name": "rewardToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4170,
                            "src": "2193:11:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 4255,
                            "name": "_rewardToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4247,
                            "src": "2207:12:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            }
                          },
                          "src": "2193:26:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "id": 4257,
                        "nodeType": "ExpressionStatement",
                        "src": "2193:26:11"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4260,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4258,
                            "name": "rewardPerSecond",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4202,
                            "src": "2229:15:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 4259,
                            "name": "_rewardPerSecond",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4249,
                            "src": "2247:16:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2229:34:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4261,
                        "nodeType": "ExpressionStatement",
                        "src": "2229:34:11"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4264,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4262,
                            "name": "GOLDMINER_V2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4207,
                            "src": "2273:12:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 4263,
                            "name": "_GOLDMINER_V2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4251,
                            "src": "2288:13:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2273:28:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 4265,
                        "nodeType": "ExpressionStatement",
                        "src": "2273:28:11"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 4267,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4252,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4247,
                        "mutability": "mutable",
                        "name": "_rewardToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4267,
                        "src": "2106:19:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$337",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 4246,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 337,
                          "src": "2106:6:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4249,
                        "mutability": "mutable",
                        "name": "_rewardPerSecond",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4267,
                        "src": "2127:24:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4248,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2127:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4251,
                        "mutability": "mutable",
                        "name": "_GOLDMINER_V2",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4267,
                        "src": "2153:21:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4250,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2153:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2105:70:11"
                  },
                  "returnParameters": {
                    "id": 4253,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2183:0:11"
                  },
                  "scope": 4787,
                  "src": "2093:215:11",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3304
                  ],
                  "body": {
                    "id": 4354,
                    "nodeType": "Block",
                    "src": "2437:563:11",
                    "statements": [
                      {
                        "assignments": [
                          4284
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4284,
                            "mutability": "mutable",
                            "name": "pool",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4354,
                            "src": "2447:20:11",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$4182_memory_ptr",
                              "typeString": "struct ComplexRewarderTime.PoolInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 4283,
                              "name": "PoolInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4182,
                              "src": "2447:8:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$4182_storage_ptr",
                                "typeString": "struct ComplexRewarderTime.PoolInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4288,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4286,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4269,
                              "src": "2481:3:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4285,
                            "name": "updatePool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4786,
                            "src": "2470:10:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_struct$_PoolInfo_$4182_memory_ptr_$",
                              "typeString": "function (uint256) returns (struct ComplexRewarderTime.PoolInfo memory)"
                            }
                          },
                          "id": 4287,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2470:15:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$4182_memory_ptr",
                            "typeString": "struct ComplexRewarderTime.PoolInfo memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2447:38:11"
                      },
                      {
                        "assignments": [
                          4290
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4290,
                            "mutability": "mutable",
                            "name": "user",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4354,
                            "src": "2495:21:11",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$4175_storage_ptr",
                              "typeString": "struct ComplexRewarderTime.UserInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 4289,
                              "name": "UserInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4175,
                              "src": "2495:8:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$4175_storage_ptr",
                                "typeString": "struct ComplexRewarderTime.UserInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4296,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4291,
                              "name": "userInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4197,
                              "src": "2519:8:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$4175_storage_$_$",
                                "typeString": "mapping(uint256 => mapping(address => struct ComplexRewarderTime.UserInfo storage ref))"
                              }
                            },
                            "id": 4293,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 4292,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4269,
                              "src": "2528:3:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "2519:13:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$4175_storage_$",
                              "typeString": "mapping(address => struct ComplexRewarderTime.UserInfo storage ref)"
                            }
                          },
                          "id": 4295,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 4294,
                            "name": "_user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4271,
                            "src": "2533:5:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2519:20:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$4175_storage",
                            "typeString": "struct ComplexRewarderTime.UserInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2495:44:11"
                      },
                      {
                        "assignments": [
                          4298
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4298,
                            "mutability": "mutable",
                            "name": "pending",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4354,
                            "src": "2549:15:11",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4297,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2549:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4299,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2549:15:11"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4303,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4300,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4290,
                              "src": "2578:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$4175_storage_ptr",
                                "typeString": "struct ComplexRewarderTime.UserInfo storage pointer"
                              }
                            },
                            "id": 4301,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4172,
                            "src": "2578:11:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 4302,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2592:1:11",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "2578:15:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 4328,
                        "nodeType": "IfStatement",
                        "src": "2574:249:11",
                        "trueBody": {
                          "id": 4327,
                          "nodeType": "Block",
                          "src": "2595:228:11",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 4318,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 4304,
                                  "name": "pending",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4298,
                                  "src": "2609:7:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 4315,
                                        "name": "user",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4290,
                                        "src": "2728:4:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_UserInfo_$4175_storage_ptr",
                                          "typeString": "struct ComplexRewarderTime.UserInfo storage pointer"
                                        }
                                      },
                                      "id": 4316,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "rewardDebt",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4174,
                                      "src": "2728:15:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 4312,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 4308,
                                                  "name": "pool",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 4284,
                                                  "src": "2652:4:11",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_PoolInfo_$4182_memory_ptr",
                                                    "typeString": "struct ComplexRewarderTime.PoolInfo memory"
                                                  }
                                                },
                                                "id": 4309,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "accGoldNuggetPerShare",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 4177,
                                                "src": "2652:26:11",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint128",
                                                  "typeString": "uint128"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint128",
                                                  "typeString": "uint128"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 4305,
                                                  "name": "user",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 4290,
                                                  "src": "2636:4:11",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_UserInfo_$4175_storage_ptr",
                                                    "typeString": "struct ComplexRewarderTime.UserInfo storage pointer"
                                                  }
                                                },
                                                "id": 4306,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "amount",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 4172,
                                                "src": "2636:11:11",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 4307,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "mul",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 627,
                                              "src": "2636:15:11",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                              }
                                            },
                                            "id": 4310,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "2636:43:11",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "/",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "id": 4311,
                                            "name": "ACC_TOKEN_PRECISION",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4205,
                                            "src": "2682:19:11",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "2636:65:11",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 4313,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "2635:67:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 4314,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 599,
                                    "src": "2635:71:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 4317,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2635:126:11",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2609:152:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4319,
                              "nodeType": "ExpressionStatement",
                              "src": "2609:152:11"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 4323,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4273,
                                    "src": "2800:2:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 4324,
                                    "name": "pending",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4298,
                                    "src": "2804:7:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4320,
                                    "name": "rewardToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4170,
                                    "src": "2775:11:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$337",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 4322,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "safeTransfer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 503,
                                  "src": "2775:24:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$337_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$337_$",
                                    "typeString": "function (contract IERC20,address,uint256)"
                                  }
                                },
                                "id": 4325,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2775:37:11",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4326,
                              "nodeType": "ExpressionStatement",
                              "src": "2775:37:11"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4333,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4329,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4290,
                              "src": "2832:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$4175_storage_ptr",
                                "typeString": "struct ComplexRewarderTime.UserInfo storage pointer"
                              }
                            },
                            "id": 4331,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4172,
                            "src": "2832:11:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 4332,
                            "name": "lpToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4277,
                            "src": "2846:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2832:21:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4334,
                        "nodeType": "ExpressionStatement",
                        "src": "2832:21:11"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4345,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4335,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4290,
                              "src": "2863:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$4175_storage_ptr",
                                "typeString": "struct ComplexRewarderTime.UserInfo storage pointer"
                              }
                            },
                            "id": 4337,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "rewardDebt",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4174,
                            "src": "2863:15:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4344,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4340,
                                    "name": "pool",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4284,
                                    "src": "2893:4:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PoolInfo_$4182_memory_ptr",
                                      "typeString": "struct ComplexRewarderTime.PoolInfo memory"
                                    }
                                  },
                                  "id": 4341,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "accGoldNuggetPerShare",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4177,
                                  "src": "2893:26:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4338,
                                  "name": "lpToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4277,
                                  "src": "2881:7:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 4339,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 627,
                                "src": "2881:11:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 4342,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2881:39:11",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 4343,
                              "name": "ACC_TOKEN_PRECISION",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4205,
                              "src": "2923:19:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "2881:61:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2863:79:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4346,
                        "nodeType": "ExpressionStatement",
                        "src": "2863:79:11"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4348,
                              "name": "_user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4271,
                              "src": "2969:5:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4349,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4269,
                              "src": "2976:3:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4350,
                              "name": "pending",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4298,
                              "src": "2981:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4351,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4273,
                              "src": "2990:2:11",
                              "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_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 4347,
                            "name": "LogOnReward",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4217,
                            "src": "2957:11:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$returns$__$",
                              "typeString": "function (address,uint256,uint256,address)"
                            }
                          },
                          "id": 4352,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2957:36:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4353,
                        "nodeType": "EmitStatement",
                        "src": "2952:41:11"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "a3d83320",
                  "id": 4355,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 4280,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 4279,
                        "name": "onlyMCV2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4442,
                        "src": "2410:8:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2410:8:11"
                    }
                  ],
                  "name": "onGoldNuggetReward",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4281,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2419:8:11"
                  },
                  "parameters": {
                    "id": 4278,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4269,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4355,
                        "src": "2344:11:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4268,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2344:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4271,
                        "mutability": "mutable",
                        "name": "_user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4355,
                        "src": "2357:13:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4270,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2357:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4273,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4355,
                        "src": "2372:10:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4272,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2372:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4275,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4355,
                        "src": "2384:7:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4274,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2384:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4277,
                        "mutability": "mutable",
                        "name": "lpToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4355,
                        "src": "2393:15:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4276,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2393:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2343:66:11"
                  },
                  "returnParameters": {
                    "id": 4282,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2437:0:11"
                  },
                  "scope": 4787,
                  "src": "2315:685:11",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    3319
                  ],
                  "body": {
                    "id": 4412,
                    "nodeType": "Block",
                    "src": "3163:267:11",
                    "statements": [
                      {
                        "assignments": [
                          4374
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4374,
                            "mutability": "mutable",
                            "name": "_rewardTokens",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4412,
                            "src": "3173:29:11",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_memory_ptr",
                              "typeString": "contract IERC20[]"
                            },
                            "typeName": {
                              "baseType": {
                                "contractScope": null,
                                "id": 4372,
                                "name": "IERC20",
                                "nodeType": "UserDefinedTypeName",
                                "referencedDeclaration": 337,
                                "src": "3173:6:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$337",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "id": 4373,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "3173:8:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage_ptr",
                                "typeString": "contract IERC20[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4380,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 4378,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3218:1:11",
                              "subdenomination": null,
                              "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": 4377,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "3205:12:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IERC20_$337_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (contract IERC20[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "contractScope": null,
                                "id": 4375,
                                "name": "IERC20",
                                "nodeType": "UserDefinedTypeName",
                                "referencedDeclaration": 337,
                                "src": "3209:6:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$337",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "id": 4376,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "3209:8:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage_ptr",
                                "typeString": "contract IERC20[]"
                              }
                            }
                          },
                          "id": 4379,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3205:15:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_memory_ptr",
                            "typeString": "contract IERC20[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3173:47:11"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4386,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4381,
                              "name": "_rewardTokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4374,
                              "src": "3230:13:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_memory_ptr",
                                "typeString": "contract IERC20[] memory"
                              }
                            },
                            "id": 4383,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 4382,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3244:1:11",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3230:16:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 4384,
                                "name": "rewardToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4170,
                                "src": "3250:11:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$337",
                                  "typeString": "contract IERC20"
                                }
                              }
                            ],
                            "id": 4385,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "3249:13:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            }
                          },
                          "src": "3230:32:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "id": 4387,
                        "nodeType": "ExpressionStatement",
                        "src": "3230:32:11"
                      },
                      {
                        "assignments": [
                          4392
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4392,
                            "mutability": "mutable",
                            "name": "_rewardAmounts",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4412,
                            "src": "3272:31:11",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 4390,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "3272:7:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4391,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "3272:9:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4398,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 4396,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3320:1:11",
                              "subdenomination": null,
                              "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": 4395,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "3306:13:11",
                            "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": 4393,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "3310:7:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4394,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "3310:9:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 4397,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3306:16:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3272:50:11"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4406,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4399,
                              "name": "_rewardAmounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4392,
                              "src": "3332:14:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 4401,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 4400,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3347:1:11",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3332:17:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 4403,
                                "name": "pid",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4357,
                                "src": "3365:3:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 4404,
                                "name": "user",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4359,
                                "src": "3370:4:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 4402,
                              "name": "pendingToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4652,
                              "src": "3352:12:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (uint256,address) view returns (uint256)"
                              }
                            },
                            "id": 4405,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3352:23:11",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3332:43:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4407,
                        "nodeType": "ExpressionStatement",
                        "src": "3332:43:11"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 4408,
                              "name": "_rewardTokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4374,
                              "src": "3393:13:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_memory_ptr",
                                "typeString": "contract IERC20[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4409,
                              "name": "_rewardAmounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4392,
                              "src": "3408:14:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "id": 4410,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "3392:31:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_array$_t_contract$_IERC20_$337_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                            "typeString": "tuple(contract IERC20[] memory,uint256[] memory)"
                          }
                        },
                        "functionReturnParameters": 4370,
                        "id": 4411,
                        "nodeType": "Return",
                        "src": "3385:38:11"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "d63b3c49",
                  "id": 4413,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "pendingTokens",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4363,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3069:8:11"
                  },
                  "parameters": {
                    "id": 4362,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4357,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4413,
                        "src": "3033:11:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4356,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3033:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4359,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4413,
                        "src": "3046:12:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4358,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3046:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4361,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4413,
                        "src": "3060:7:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4360,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3060:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3032:36:11"
                  },
                  "returnParameters": {
                    "id": 4370,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4366,
                        "mutability": "mutable",
                        "name": "rewardTokens",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4413,
                        "src": "3101:28:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_memory_ptr",
                          "typeString": "contract IERC20[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 4364,
                            "name": "IERC20",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 337,
                            "src": "3101:6:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 4365,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "3101:8:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage_ptr",
                            "typeString": "contract IERC20[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4369,
                        "mutability": "mutable",
                        "name": "rewardAmounts",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4413,
                        "src": "3131:30:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4367,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3131:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4368,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "3131:9:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3100:62:11"
                  },
                  "scope": 4787,
                  "src": "3010:420:11",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 4429,
                    "nodeType": "Block",
                    "src": "3693:102:11",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4423,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4421,
                            "name": "rewardPerSecond",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4202,
                            "src": "3703:15:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 4422,
                            "name": "_rewardPerSecond",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4416,
                            "src": "3721:16:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3703:34:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4424,
                        "nodeType": "ExpressionStatement",
                        "src": "3703:34:11"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4426,
                              "name": "_rewardPerSecond",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4416,
                              "src": "3771:16:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4425,
                            "name": "LogRewardPerSecond",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4243,
                            "src": "3752:18:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 4427,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3752:36:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4428,
                        "nodeType": "EmitStatement",
                        "src": "3747:41:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4414,
                    "nodeType": "StructuredDocumentation",
                    "src": "3436:181:11",
                    "text": "@notice Sets the goldnugget per second to be distributed. Can only be called by the owner.\n @param _rewardPerSecond The amount of GoldNugget to be distributed per second."
                  },
                  "functionSelector": "66da5815",
                  "id": 4430,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 4419,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 4418,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 270,
                        "src": "3683:9:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "3683:9:11"
                    }
                  ],
                  "name": "setRewardPerSecond",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4417,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4416,
                        "mutability": "mutable",
                        "name": "_rewardPerSecond",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4430,
                        "src": "3650:24:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4415,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3650:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3649:26:11"
                  },
                  "returnParameters": {
                    "id": 4420,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3693:0:11"
                  },
                  "scope": 4787,
                  "src": "3622:173:11",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 4441,
                    "nodeType": "Block",
                    "src": "3819:134:11",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 4436,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4433,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "3850:3:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 4434,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3850:10:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 4435,
                                "name": "GOLDMINER_V2",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4207,
                                "src": "3864:12:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "3850:26:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4f6e6c79204d4356322063616e2063616c6c20746869732066756e6374696f6e2e",
                              "id": 4437,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3890:35:11",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_3119d70f54e65f7fc05dc3fff78f1ae1d0c82eaf50b477c40260718556fca1cd",
                                "typeString": "literal_string \"Only MCV2 can call this function.\""
                              },
                              "value": "Only MCV2 can call this function."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_3119d70f54e65f7fc05dc3fff78f1ae1d0c82eaf50b477c40260718556fca1cd",
                                "typeString": "literal_string \"Only MCV2 can call this function.\""
                              }
                            ],
                            "id": 4432,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3829:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4438,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3829:106:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4439,
                        "nodeType": "ExpressionStatement",
                        "src": "3829:106:11"
                      },
                      {
                        "id": 4440,
                        "nodeType": "PlaceholderStatement",
                        "src": "3945:1:11"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 4442,
                  "name": "onlyMCV2",
                  "nodeType": "ModifierDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4431,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3819:0:11"
                  },
                  "src": "3801:152:11",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4453,
                    "nodeType": "Block",
                    "src": "4067:39:11",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4451,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4448,
                            "name": "pools",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4446,
                            "src": "4077:5:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4449,
                              "name": "poolIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4190,
                              "src": "4085:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                "typeString": "uint256[] storage ref"
                              }
                            },
                            "id": 4450,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4085:14:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4077:22:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4452,
                        "nodeType": "ExpressionStatement",
                        "src": "4077:22:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4443,
                    "nodeType": "StructuredDocumentation",
                    "src": "3959:45:11",
                    "text": "@notice Returns the number of MCV2 pools."
                  },
                  "functionSelector": "081e3eda",
                  "id": 4454,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "poolLength",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4444,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4028:2:11"
                  },
                  "returnParameters": {
                    "id": 4447,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4446,
                        "mutability": "mutable",
                        "name": "pools",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4454,
                        "src": "4052:13:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4445,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4052:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4051:15:11"
                  },
                  "scope": 4787,
                  "src": "4009:97:11",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 4511,
                    "nodeType": "Block",
                    "src": "4419:448:11",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              },
                              "id": 4470,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 4465,
                                    "name": "poolInfo",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4187,
                                    "src": "4437:8:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_PoolInfo_$4182_storage_$",
                                      "typeString": "mapping(uint256 => struct ComplexRewarderTime.PoolInfo storage ref)"
                                    }
                                  },
                                  "id": 4467,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 4466,
                                    "name": "_pid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4459,
                                    "src": "4446:4:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4437:14:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PoolInfo_$4182_storage",
                                    "typeString": "struct ComplexRewarderTime.PoolInfo storage ref"
                                  }
                                },
                                "id": 4468,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "lastRewardTime",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4179,
                                "src": "4437:29:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 4469,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4470:1:11",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "4437:34:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "506f6f6c20616c726561647920657869737473",
                              "id": 4471,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4473:21:11",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_12db6f275306e49a55f39c487439bf20013b2e7f9ac363f83c1b47cbc0b35b95",
                                "typeString": "literal_string \"Pool already exists\""
                              },
                              "value": "Pool already exists"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_12db6f275306e49a55f39c487439bf20013b2e7f9ac363f83c1b47cbc0b35b95",
                                "typeString": "literal_string \"Pool already exists\""
                              }
                            ],
                            "id": 4464,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4429:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4472,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4429:66:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4473,
                        "nodeType": "ExpressionStatement",
                        "src": "4429:66:11"
                      },
                      {
                        "assignments": [
                          4475
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4475,
                            "mutability": "mutable",
                            "name": "lastRewardTime",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4511,
                            "src": "4505:22:11",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4474,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4505:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4478,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4476,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -4,
                            "src": "4530:5:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 4477,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "timestamp",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4530:15:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4505:40:11"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4484,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4479,
                            "name": "totalAllocPoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4200,
                            "src": "4555:15:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 4482,
                                "name": "allocPoint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4457,
                                "src": "4593:10:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 4480,
                                "name": "totalAllocPoint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4200,
                                "src": "4573:15:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4481,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 577,
                              "src": "4573:19:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 4483,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4573:31:11",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4555:49:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4485,
                        "nodeType": "ExpressionStatement",
                        "src": "4555:49:11"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4498,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4486,
                              "name": "poolInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4187,
                              "src": "4615:8:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_PoolInfo_$4182_storage_$",
                                "typeString": "mapping(uint256 => struct ComplexRewarderTime.PoolInfo storage ref)"
                              }
                            },
                            "id": 4488,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 4487,
                              "name": "_pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4459,
                              "src": "4624:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4615:14:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$4182_storage",
                              "typeString": "struct ComplexRewarderTime.PoolInfo storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4490,
                                    "name": "allocPoint",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4457,
                                    "src": "4667:10:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4491,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "to64",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 679,
                                  "src": "4667:15:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256) pure returns (uint64)"
                                  }
                                },
                                "id": 4492,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4667:17:11",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4493,
                                    "name": "lastRewardTime",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4475,
                                    "src": "4714:14:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4494,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "to64",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 679,
                                  "src": "4714:19:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256) pure returns (uint64)"
                                  }
                                },
                                "id": 4495,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4714:21:11",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 4496,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4772:1:11",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                },
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 4489,
                              "name": "PoolInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4182,
                              "src": "4632:8:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_struct$_PoolInfo_$4182_storage_ptr_$",
                                "typeString": "type(struct ComplexRewarderTime.PoolInfo storage pointer)"
                              }
                            },
                            "id": 4497,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "structConstructorCall",
                            "lValueRequested": false,
                            "names": [
                              "allocPoint",
                              "lastRewardTime",
                              "accGoldNuggetPerShare"
                            ],
                            "nodeType": "FunctionCall",
                            "src": "4632:152:11",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$4182_memory_ptr",
                              "typeString": "struct ComplexRewarderTime.PoolInfo memory"
                            }
                          },
                          "src": "4615:169:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$4182_storage",
                            "typeString": "struct ComplexRewarderTime.PoolInfo storage ref"
                          }
                        },
                        "id": 4499,
                        "nodeType": "ExpressionStatement",
                        "src": "4615:169:11"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4503,
                              "name": "_pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4459,
                              "src": "4807:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 4500,
                              "name": "poolIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4190,
                              "src": "4794:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                "typeString": "uint256[] storage ref"
                              }
                            },
                            "id": 4502,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4794:12:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 4504,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4794:18:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4505,
                        "nodeType": "ExpressionStatement",
                        "src": "4794:18:11"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4507,
                              "name": "_pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4459,
                              "src": "4843:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4508,
                              "name": "allocPoint",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4457,
                              "src": "4849:10:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4506,
                            "name": "LogPoolAddition",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4223,
                            "src": "4827:15:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256)"
                            }
                          },
                          "id": 4509,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4827:33:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4510,
                        "nodeType": "EmitStatement",
                        "src": "4822:38:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4455,
                    "nodeType": "StructuredDocumentation",
                    "src": "4112:238:11",
                    "text": "@notice Add a new LP to the pool. Can only be called by the owner.\n DO NOT add the same LP token more than once. Rewards will be messed up if you do.\n @param allocPoint AP of the new pool.\n @param _pid Pid on MCV2"
                  },
                  "functionSelector": "771602f7",
                  "id": 4512,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 4462,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 4461,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 270,
                        "src": "4409:9:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4409:9:11"
                    }
                  ],
                  "name": "add",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4460,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4457,
                        "mutability": "mutable",
                        "name": "allocPoint",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4512,
                        "src": "4368:18:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4456,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4368:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4459,
                        "mutability": "mutable",
                        "name": "_pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4512,
                        "src": "4388:12:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4458,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4388:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4367:34:11"
                  },
                  "returnParameters": {
                    "id": 4463,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4419:0:11"
                  },
                  "scope": 4787,
                  "src": "4355:512:11",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 4549,
                    "nodeType": "Block",
                    "src": "5165:198:11",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4533,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4522,
                            "name": "totalAllocPoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4200,
                            "src": "5175:15:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 4531,
                                "name": "_allocPoint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4517,
                                "src": "5244:11:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 4525,
                                        "name": "poolInfo",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4187,
                                        "src": "5213:8:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_PoolInfo_$4182_storage_$",
                                          "typeString": "mapping(uint256 => struct ComplexRewarderTime.PoolInfo storage ref)"
                                        }
                                      },
                                      "id": 4527,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 4526,
                                        "name": "_pid",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4515,
                                        "src": "5222:4:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "5213:14:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PoolInfo_$4182_storage",
                                        "typeString": "struct ComplexRewarderTime.PoolInfo storage ref"
                                      }
                                    },
                                    "id": 4528,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "allocPoint",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4181,
                                    "src": "5213:25:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4523,
                                    "name": "totalAllocPoint",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4200,
                                    "src": "5193:15:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4524,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sub",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 599,
                                  "src": "5193:19:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 4529,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5193:46:11",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4530,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 577,
                              "src": "5193:50:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 4532,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5193:63:11",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5175:81:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4534,
                        "nodeType": "ExpressionStatement",
                        "src": "5175:81:11"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4542,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4535,
                                "name": "poolInfo",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4187,
                                "src": "5266:8:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_PoolInfo_$4182_storage_$",
                                  "typeString": "mapping(uint256 => struct ComplexRewarderTime.PoolInfo storage ref)"
                                }
                              },
                              "id": 4537,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4536,
                                "name": "_pid",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4515,
                                "src": "5275:4:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5266:14:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$4182_storage",
                                "typeString": "struct ComplexRewarderTime.PoolInfo storage ref"
                              }
                            },
                            "id": 4538,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "allocPoint",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4181,
                            "src": "5266:25:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "id": 4539,
                                "name": "_allocPoint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4517,
                                "src": "5294:11:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4540,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "to64",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 679,
                              "src": "5294:16:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256) pure returns (uint64)"
                              }
                            },
                            "id": 4541,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5294:18:11",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "src": "5266:46:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "id": 4543,
                        "nodeType": "ExpressionStatement",
                        "src": "5266:46:11"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4545,
                              "name": "_pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4515,
                              "src": "5338:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4546,
                              "name": "_allocPoint",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4517,
                              "src": "5344:11:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4544,
                            "name": "LogSetPool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4229,
                            "src": "5327:10:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256)"
                            }
                          },
                          "id": 4547,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5327:29:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4548,
                        "nodeType": "EmitStatement",
                        "src": "5322:34:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4513,
                    "nodeType": "StructuredDocumentation",
                    "src": "4873:222:11",
                    "text": "@notice Update the given pool's GOLN allocation point and `IRewarder` contract. Can only be called by the owner.\n @param _pid The index of the pool. See `poolInfo`.\n @param _allocPoint New AP of the pool."
                  },
                  "functionSelector": "1ab06ee5",
                  "id": 4550,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 4520,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 4519,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 270,
                        "src": "5155:9:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5155:9:11"
                    }
                  ],
                  "name": "set",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4518,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4515,
                        "mutability": "mutable",
                        "name": "_pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4550,
                        "src": "5113:12:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4514,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5113:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4517,
                        "mutability": "mutable",
                        "name": "_allocPoint",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4550,
                        "src": "5127:19:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4516,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5127:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5112:35:11"
                  },
                  "returnParameters": {
                    "id": 4521,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5165:0:11"
                  },
                  "scope": 4787,
                  "src": "5100:263:11",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 4651,
                    "nodeType": "Block",
                    "src": "5660:743:11",
                    "statements": [
                      {
                        "assignments": [
                          4561
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4561,
                            "mutability": "mutable",
                            "name": "pool",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4651,
                            "src": "5670:20:11",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$4182_memory_ptr",
                              "typeString": "struct ComplexRewarderTime.PoolInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 4560,
                              "name": "PoolInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4182,
                              "src": "5670:8:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$4182_storage_ptr",
                                "typeString": "struct ComplexRewarderTime.PoolInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4565,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 4562,
                            "name": "poolInfo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4187,
                            "src": "5693:8:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_PoolInfo_$4182_storage_$",
                              "typeString": "mapping(uint256 => struct ComplexRewarderTime.PoolInfo storage ref)"
                            }
                          },
                          "id": 4564,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 4563,
                            "name": "_pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4553,
                            "src": "5702:4:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5693:14:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$4182_storage",
                            "typeString": "struct ComplexRewarderTime.PoolInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5670:37:11"
                      },
                      {
                        "assignments": [
                          4567
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4567,
                            "mutability": "mutable",
                            "name": "user",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4651,
                            "src": "5717:21:11",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$4175_storage_ptr",
                              "typeString": "struct ComplexRewarderTime.UserInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 4566,
                              "name": "UserInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4175,
                              "src": "5717:8:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$4175_storage_ptr",
                                "typeString": "struct ComplexRewarderTime.UserInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4573,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4568,
                              "name": "userInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4197,
                              "src": "5741:8:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$4175_storage_$_$",
                                "typeString": "mapping(uint256 => mapping(address => struct ComplexRewarderTime.UserInfo storage ref))"
                              }
                            },
                            "id": 4570,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 4569,
                              "name": "_pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4553,
                              "src": "5750:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5741:14:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$4175_storage_$",
                              "typeString": "mapping(address => struct ComplexRewarderTime.UserInfo storage ref)"
                            }
                          },
                          "id": 4572,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 4571,
                            "name": "_user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4555,
                            "src": "5756:5:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5741:21:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$4175_storage",
                            "typeString": "struct ComplexRewarderTime.UserInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5717:45:11"
                      },
                      {
                        "assignments": [
                          4575
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4575,
                            "mutability": "mutable",
                            "name": "accGoldNuggetPerShare",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4651,
                            "src": "5772:29:11",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4574,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5772:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4578,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4576,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4561,
                            "src": "5804:4:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$4182_memory_ptr",
                              "typeString": "struct ComplexRewarderTime.PoolInfo memory"
                            }
                          },
                          "id": 4577,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "accGoldNuggetPerShare",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4177,
                          "src": "5804:26:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5772:58:11"
                      },
                      {
                        "assignments": [
                          4580
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4580,
                            "mutability": "mutable",
                            "name": "lpSupply",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4651,
                            "src": "5840:16:11",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4579,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5840:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4590,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4588,
                              "name": "GOLDMINER_V2",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4207,
                              "src": "5909:12:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 4585,
                                  "name": "_pid",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4553,
                                  "src": "5893:4:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 4582,
                                      "name": "GOLDMINER_V2",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4207,
                                      "src": "5871:12:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 4581,
                                    "name": "GoldMinerV2",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2091,
                                    "src": "5859:11:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_GoldMinerV2_$2091_$",
                                      "typeString": "type(contract GoldMinerV2)"
                                    }
                                  },
                                  "id": 4583,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5859:25:11",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_GoldMinerV2_$2091",
                                    "typeString": "contract GoldMinerV2"
                                  }
                                },
                                "id": 4584,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "lpToken",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 906,
                                "src": "5859:33:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IERC20_$337_$",
                                  "typeString": "function (uint256) view external returns (contract IERC20)"
                                }
                              },
                              "id": 4586,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5859:39:11",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 4587,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 285,
                            "src": "5859:49:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 4589,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5859:63:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5840:82:11"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 4599,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4595,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4591,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "5936:5:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 4592,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "5936:15:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4593,
                                "name": "pool",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4561,
                                "src": "5954:4:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PoolInfo_$4182_memory_ptr",
                                  "typeString": "struct ComplexRewarderTime.PoolInfo memory"
                                }
                              },
                              "id": 4594,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "lastRewardTime",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4179,
                              "src": "5954:19:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "src": "5936:37:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4598,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 4596,
                              "name": "lpSupply",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4580,
                              "src": "5977:8:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 4597,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5989:1:11",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "5977:13:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "5936:54:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 4635,
                        "nodeType": "IfStatement",
                        "src": "5932:362:11",
                        "trueBody": {
                          "id": 4634,
                          "nodeType": "Block",
                          "src": "5992:302:11",
                          "statements": [
                            {
                              "assignments": [
                                4601
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 4601,
                                  "mutability": "mutable",
                                  "name": "time",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 4634,
                                  "src": "6006:12:11",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 4600,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6006:7:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 4608,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 4605,
                                      "name": "pool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4561,
                                      "src": "6041:4:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PoolInfo_$4182_memory_ptr",
                                        "typeString": "struct ComplexRewarderTime.PoolInfo memory"
                                      }
                                    },
                                    "id": 4606,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "lastRewardTime",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4179,
                                    "src": "6041:19:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 4602,
                                      "name": "block",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -4,
                                      "src": "6021:5:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_block",
                                        "typeString": "block"
                                      }
                                    },
                                    "id": 4603,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "timestamp",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "6021:15:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4604,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sub",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 599,
                                  "src": "6021:19:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 4607,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6021:40:11",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "6006:55:11"
                            },
                            {
                              "assignments": [
                                4610
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 4610,
                                  "mutability": "mutable",
                                  "name": "goldnuggetReward",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 4634,
                                  "src": "6075:24:11",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 4609,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6075:7:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 4621,
                              "initialValue": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4620,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 4616,
                                        "name": "pool",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4561,
                                        "src": "6132:4:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_PoolInfo_$4182_memory_ptr",
                                          "typeString": "struct ComplexRewarderTime.PoolInfo memory"
                                        }
                                      },
                                      "id": 4617,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "allocPoint",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4181,
                                      "src": "6132:15:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 4613,
                                          "name": "rewardPerSecond",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4202,
                                          "src": "6111:15:11",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 4611,
                                          "name": "time",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4601,
                                          "src": "6102:4:11",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 4612,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 627,
                                        "src": "6102:8:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 4614,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6102:25:11",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 4615,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 627,
                                    "src": "6102:29:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 4618,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6102:46:11",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 4619,
                                  "name": "totalAllocPoint",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4200,
                                  "src": "6151:15:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6102:64:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "6075:91:11"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 4632,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 4622,
                                  "name": "accGoldNuggetPerShare",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4575,
                                  "src": "6180:21:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 4630,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 4627,
                                            "name": "ACC_TOKEN_PRECISION",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4205,
                                            "src": "6251:19:11",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 4625,
                                            "name": "goldnuggetReward",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4610,
                                            "src": "6230:16:11",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 4626,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "mul",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 627,
                                          "src": "6230:20:11",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 4628,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6230:41:11",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "/",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 4629,
                                        "name": "lpSupply",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4580,
                                        "src": "6274:8:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "6230:52:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 4623,
                                      "name": "accGoldNuggetPerShare",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4575,
                                      "src": "6204:21:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 4624,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 577,
                                    "src": "6204:25:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 4631,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6204:79:11",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6180:103:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4633,
                              "nodeType": "ExpressionStatement",
                              "src": "6180:103:11"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4649,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4636,
                            "name": "pending",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4558,
                            "src": "6303:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4646,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4567,
                                  "src": "6380:4:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserInfo_$4175_storage_ptr",
                                    "typeString": "struct ComplexRewarderTime.UserInfo storage pointer"
                                  }
                                },
                                "id": 4647,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "rewardDebt",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4174,
                                "src": "6380:15:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 4643,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 4640,
                                          "name": "accGoldNuggetPerShare",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4575,
                                          "src": "6330:21:11",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 4637,
                                            "name": "user",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4567,
                                            "src": "6314:4:11",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_UserInfo_$4175_storage_ptr",
                                              "typeString": "struct ComplexRewarderTime.UserInfo storage pointer"
                                            }
                                          },
                                          "id": 4638,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "amount",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 4172,
                                          "src": "6314:11:11",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 4639,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 627,
                                        "src": "6314:15:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 4641,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6314:38:11",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "/",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 4642,
                                      "name": "ACC_TOKEN_PRECISION",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4205,
                                      "src": "6355:19:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "6314:60:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 4644,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "6313:62:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4645,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 599,
                              "src": "6313:66:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 4648,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6313:83:11",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6303:93:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4650,
                        "nodeType": "ExpressionStatement",
                        "src": "6303:93:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4551,
                    "nodeType": "StructuredDocumentation",
                    "src": "5369:197:11",
                    "text": "@notice View function to see pending Token\n @param _pid The index of the pool. See `poolInfo`.\n @param _user Address of user.\n @return pending GOLN reward for a given user."
                  },
                  "functionSelector": "48e43af4",
                  "id": 4652,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "pendingToken",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4556,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4553,
                        "mutability": "mutable",
                        "name": "_pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4652,
                        "src": "5593:12:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4552,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5593:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4555,
                        "mutability": "mutable",
                        "name": "_user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4652,
                        "src": "5607:13:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4554,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5607:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5592:29:11"
                  },
                  "returnParameters": {
                    "id": 4559,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4558,
                        "mutability": "mutable",
                        "name": "pending",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4652,
                        "src": "5643:15:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4557,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5643:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5642:17:11"
                  },
                  "scope": 4787,
                  "src": "5571:832:11",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 4682,
                    "nodeType": "Block",
                    "src": "6640:129:11",
                    "statements": [
                      {
                        "assignments": [
                          4660
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4660,
                            "mutability": "mutable",
                            "name": "len",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4682,
                            "src": "6650:11:11",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4659,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6650:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4663,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4661,
                            "name": "pids",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4656,
                            "src": "6664:4:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          "id": 4662,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "6664:11:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6650:25:11"
                      },
                      {
                        "body": {
                          "id": 4680,
                          "nodeType": "Block",
                          "src": "6719:44:11",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 4675,
                                      "name": "pids",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4656,
                                      "src": "6744:4:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                        "typeString": "uint256[] calldata"
                                      }
                                    },
                                    "id": 4677,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 4676,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4665,
                                      "src": "6749:1:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "6744:7:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 4674,
                                  "name": "updatePool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4786,
                                  "src": "6733:10:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_struct$_PoolInfo_$4182_memory_ptr_$",
                                    "typeString": "function (uint256) returns (struct ComplexRewarderTime.PoolInfo memory)"
                                  }
                                },
                                "id": 4678,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6733:19:11",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PoolInfo_$4182_memory_ptr",
                                  "typeString": "struct ComplexRewarderTime.PoolInfo memory"
                                }
                              },
                              "id": 4679,
                              "nodeType": "ExpressionStatement",
                              "src": "6733:19:11"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4670,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 4668,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4665,
                            "src": "6705:1:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 4669,
                            "name": "len",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4660,
                            "src": "6709:3:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6705:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4681,
                        "initializationExpression": {
                          "assignments": [
                            4665
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 4665,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 4681,
                              "src": "6690:9:11",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 4664,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "6690:7:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 4667,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 4666,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6702:1:11",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "6690:13:11"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 4672,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "6714:3:11",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 4671,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4665,
                              "src": "6716:1:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4673,
                          "nodeType": "ExpressionStatement",
                          "src": "6714:3:11"
                        },
                        "nodeType": "ForStatement",
                        "src": "6685:78:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4653,
                    "nodeType": "StructuredDocumentation",
                    "src": "6409:167:11",
                    "text": "@notice Update reward variables for all pools. Be careful of gas spending!\n @param pids Pool IDs of all to be updated. Make sure to update all active pools."
                  },
                  "functionSelector": "57a5b58c",
                  "id": 4683,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "massUpdatePools",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4657,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4656,
                        "mutability": "mutable",
                        "name": "pids",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4683,
                        "src": "6606:23:11",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4654,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "6606:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4655,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "6606:9:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6605:25:11"
                  },
                  "returnParameters": {
                    "id": 4658,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6640:0:11"
                  },
                  "scope": 4787,
                  "src": "6581:188:11",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 4785,
                    "nodeType": "Block",
                    "src": "7019:753:11",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4695,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4691,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4689,
                            "src": "7029:4:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$4182_memory_ptr",
                              "typeString": "struct ComplexRewarderTime.PoolInfo memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4692,
                              "name": "poolInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4187,
                              "src": "7036:8:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_PoolInfo_$4182_storage_$",
                                "typeString": "mapping(uint256 => struct ComplexRewarderTime.PoolInfo storage ref)"
                              }
                            },
                            "id": 4694,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 4693,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4686,
                              "src": "7045:3:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7036:13:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$4182_storage",
                              "typeString": "struct ComplexRewarderTime.PoolInfo storage ref"
                            }
                          },
                          "src": "7029:20:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$4182_memory_ptr",
                            "typeString": "struct ComplexRewarderTime.PoolInfo memory"
                          }
                        },
                        "id": 4696,
                        "nodeType": "ExpressionStatement",
                        "src": "7029:20:11"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4701,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4697,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "7063:5:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 4698,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "7063:15:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4699,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4689,
                              "src": "7081:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$4182_memory_ptr",
                                "typeString": "struct ComplexRewarderTime.PoolInfo memory"
                              }
                            },
                            "id": 4700,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "lastRewardTime",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4179,
                            "src": "7081:19:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "src": "7063:37:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 4784,
                        "nodeType": "IfStatement",
                        "src": "7059:707:11",
                        "trueBody": {
                          "id": 4783,
                          "nodeType": "Block",
                          "src": "7102:664:11",
                          "statements": [
                            {
                              "assignments": [
                                4703
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 4703,
                                  "mutability": "mutable",
                                  "name": "lpSupply",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 4783,
                                  "src": "7116:16:11",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 4702,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7116:7:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 4713,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 4711,
                                    "name": "GOLDMINER_V2",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4207,
                                    "src": "7184:12:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 4708,
                                        "name": "pid",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4686,
                                        "src": "7169:3:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 4705,
                                            "name": "GOLDMINER_V2",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4207,
                                            "src": "7147:12:11",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 4704,
                                          "name": "GoldMinerV2",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2091,
                                          "src": "7135:11:11",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_GoldMinerV2_$2091_$",
                                            "typeString": "type(contract GoldMinerV2)"
                                          }
                                        },
                                        "id": 4706,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7135:25:11",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_GoldMinerV2_$2091",
                                          "typeString": "contract GoldMinerV2"
                                        }
                                      },
                                      "id": 4707,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "lpToken",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 906,
                                      "src": "7135:33:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IERC20_$337_$",
                                        "typeString": "function (uint256) view external returns (contract IERC20)"
                                      }
                                    },
                                    "id": 4709,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7135:38:11",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$337",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 4710,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "balanceOf",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 285,
                                  "src": "7135:48:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address) view external returns (uint256)"
                                  }
                                },
                                "id": 4712,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7135:62:11",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "7116:81:11"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4716,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 4714,
                                  "name": "lpSupply",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4703,
                                  "src": "7216:8:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 4715,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7227:1:11",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "7216:12:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 4758,
                              "nodeType": "IfStatement",
                              "src": "7212:356:11",
                              "trueBody": {
                                "id": 4757,
                                "nodeType": "Block",
                                "src": "7230:338:11",
                                "statements": [
                                  {
                                    "assignments": [
                                      4718
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 4718,
                                        "mutability": "mutable",
                                        "name": "time",
                                        "nodeType": "VariableDeclaration",
                                        "overrides": null,
                                        "scope": 4757,
                                        "src": "7248:12:11",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 4717,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "7248:7:11",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 4725,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 4722,
                                            "name": "pool",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4689,
                                            "src": "7283:4:11",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_PoolInfo_$4182_memory_ptr",
                                              "typeString": "struct ComplexRewarderTime.PoolInfo memory"
                                            }
                                          },
                                          "id": 4723,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "lastRewardTime",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 4179,
                                          "src": "7283:19:11",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint64",
                                            "typeString": "uint64"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint64",
                                            "typeString": "uint64"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 4719,
                                            "name": "block",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -4,
                                            "src": "7263:5:11",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_block",
                                              "typeString": "block"
                                            }
                                          },
                                          "id": 4720,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "timestamp",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": null,
                                          "src": "7263:15:11",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 4721,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sub",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 599,
                                        "src": "7263:19:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 4724,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7263:40:11",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "7248:55:11"
                                  },
                                  {
                                    "assignments": [
                                      4727
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 4727,
                                        "mutability": "mutable",
                                        "name": "goldnuggetReward",
                                        "nodeType": "VariableDeclaration",
                                        "overrides": null,
                                        "scope": 4757,
                                        "src": "7321:24:11",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 4726,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "7321:7:11",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 4738,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 4737,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 4733,
                                              "name": "pool",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4689,
                                              "src": "7378:4:11",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_PoolInfo_$4182_memory_ptr",
                                                "typeString": "struct ComplexRewarderTime.PoolInfo memory"
                                              }
                                            },
                                            "id": 4734,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "allocPoint",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 4181,
                                            "src": "7378:15:11",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint64",
                                              "typeString": "uint64"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint64",
                                              "typeString": "uint64"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 4730,
                                                "name": "rewardPerSecond",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4202,
                                                "src": "7357:15:11",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 4728,
                                                "name": "time",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4718,
                                                "src": "7348:4:11",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 4729,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "mul",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 627,
                                              "src": "7348:8:11",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                              }
                                            },
                                            "id": 4731,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "7348:25:11",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 4732,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "mul",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 627,
                                          "src": "7348:29:11",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 4735,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7348:46:11",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "/",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 4736,
                                        "name": "totalAllocPoint",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4200,
                                        "src": "7397:15:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "7348:64:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "7321:91:11"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 4755,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 4739,
                                          "name": "pool",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4689,
                                          "src": "7430:4:11",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_PoolInfo_$4182_memory_ptr",
                                            "typeString": "struct ComplexRewarderTime.PoolInfo memory"
                                          }
                                        },
                                        "id": 4741,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberName": "accGoldNuggetPerShare",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4177,
                                        "src": "7430:26:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "arguments": [],
                                            "expression": {
                                              "argumentTypes": [],
                                              "expression": {
                                                "argumentTypes": null,
                                                "components": [
                                                  {
                                                    "argumentTypes": null,
                                                    "commonType": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    },
                                                    "id": 4750,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                      "argumentTypes": null,
                                                      "arguments": [
                                                        {
                                                          "argumentTypes": null,
                                                          "id": 4747,
                                                          "name": "ACC_TOKEN_PRECISION",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 4205,
                                                          "src": "7512:19:11",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        }
                                                      ],
                                                      "expression": {
                                                        "argumentTypes": [
                                                          {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        ],
                                                        "expression": {
                                                          "argumentTypes": null,
                                                          "id": 4745,
                                                          "name": "goldnuggetReward",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 4727,
                                                          "src": "7491:16:11",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        },
                                                        "id": 4746,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "mul",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 627,
                                                        "src": "7491:20:11",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                        }
                                                      },
                                                      "id": 4748,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "kind": "functionCall",
                                                      "lValueRequested": false,
                                                      "names": [],
                                                      "nodeType": "FunctionCall",
                                                      "src": "7491:41:11",
                                                      "tryCall": false,
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "/",
                                                    "rightExpression": {
                                                      "argumentTypes": null,
                                                      "id": 4749,
                                                      "name": "lpSupply",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 4703,
                                                      "src": "7535:8:11",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "7491:52:11",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  }
                                                ],
                                                "id": 4751,
                                                "isConstant": false,
                                                "isInlineArray": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "TupleExpression",
                                                "src": "7490:54:11",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 4752,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "to128",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 653,
                                              "src": "7490:60:11",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint128_$bound_to$_t_uint256_$",
                                                "typeString": "function (uint256) pure returns (uint128)"
                                              }
                                            },
                                            "id": 4753,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "7490:62:11",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint128",
                                              "typeString": "uint128"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint128",
                                              "typeString": "uint128"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 4742,
                                              "name": "pool",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4689,
                                              "src": "7459:4:11",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_PoolInfo_$4182_memory_ptr",
                                                "typeString": "struct ComplexRewarderTime.PoolInfo memory"
                                              }
                                            },
                                            "id": 4743,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "accGoldNuggetPerShare",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 4177,
                                            "src": "7459:26:11",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint128",
                                              "typeString": "uint128"
                                            }
                                          },
                                          "id": 4744,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "add",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 728,
                                          "src": "7459:30:11",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint128_$_t_uint128_$returns$_t_uint128_$bound_to$_t_uint128_$",
                                            "typeString": "function (uint128,uint128) pure returns (uint128)"
                                          }
                                        },
                                        "id": 4754,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7459:94:11",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      },
                                      "src": "7430:123:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    },
                                    "id": 4756,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7430:123:11"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 4766,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4759,
                                    "name": "pool",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4689,
                                    "src": "7581:4:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PoolInfo_$4182_memory_ptr",
                                      "typeString": "struct ComplexRewarderTime.PoolInfo memory"
                                    }
                                  },
                                  "id": 4761,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "lastRewardTime",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4179,
                                  "src": "7581:19:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 4762,
                                        "name": "block",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -4,
                                        "src": "7603:5:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_block",
                                          "typeString": "block"
                                        }
                                      },
                                      "id": 4763,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "timestamp",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "7603:15:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 4764,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "to64",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 679,
                                    "src": "7603:20:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256) pure returns (uint64)"
                                    }
                                  },
                                  "id": 4765,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7603:22:11",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                "src": "7581:44:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              "id": 4767,
                              "nodeType": "ExpressionStatement",
                              "src": "7581:44:11"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 4772,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 4768,
                                    "name": "poolInfo",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4187,
                                    "src": "7639:8:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_PoolInfo_$4182_storage_$",
                                      "typeString": "mapping(uint256 => struct ComplexRewarderTime.PoolInfo storage ref)"
                                    }
                                  },
                                  "id": 4770,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 4769,
                                    "name": "pid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4686,
                                    "src": "7648:3:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "7639:13:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PoolInfo_$4182_storage",
                                    "typeString": "struct ComplexRewarderTime.PoolInfo storage ref"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 4771,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4689,
                                  "src": "7655:4:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PoolInfo_$4182_memory_ptr",
                                    "typeString": "struct ComplexRewarderTime.PoolInfo memory"
                                  }
                                },
                                "src": "7639:20:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PoolInfo_$4182_storage",
                                  "typeString": "struct ComplexRewarderTime.PoolInfo storage ref"
                                }
                              },
                              "id": 4773,
                              "nodeType": "ExpressionStatement",
                              "src": "7639:20:11"
                            },
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 4775,
                                    "name": "pid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4686,
                                    "src": "7692:3:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 4776,
                                      "name": "pool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4689,
                                      "src": "7697:4:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PoolInfo_$4182_memory_ptr",
                                        "typeString": "struct ComplexRewarderTime.PoolInfo memory"
                                      }
                                    },
                                    "id": 4777,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "lastRewardTime",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4179,
                                    "src": "7697:19:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 4778,
                                    "name": "lpSupply",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4703,
                                    "src": "7718:8:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 4779,
                                      "name": "pool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4689,
                                      "src": "7728:4:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PoolInfo_$4182_memory_ptr",
                                        "typeString": "struct ComplexRewarderTime.PoolInfo memory"
                                      }
                                    },
                                    "id": 4780,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "accGoldNuggetPerShare",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4177,
                                    "src": "7728:26:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  ],
                                  "id": 4774,
                                  "name": "LogUpdatePool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4239,
                                  "src": "7678:13:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint64_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256,uint64,uint256,uint256)"
                                  }
                                },
                                "id": 4781,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7678:77:11",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4782,
                              "nodeType": "EmitStatement",
                              "src": "7673:82:11"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4684,
                    "nodeType": "StructuredDocumentation",
                    "src": "6775:168:11",
                    "text": "@notice Update reward variables of the given pool.\n @param pid The index of the pool. See `poolInfo`.\n @return pool Returns the pool that was updated."
                  },
                  "functionSelector": "51eb05a6",
                  "id": 4786,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "updatePool",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4687,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4686,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4786,
                        "src": "6968:11:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4685,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6968:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6967:13:11"
                  },
                  "returnParameters": {
                    "id": 4690,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4689,
                        "mutability": "mutable",
                        "name": "pool",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4786,
                        "src": "6997:20:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PoolInfo_$4182_memory_ptr",
                          "typeString": "struct ComplexRewarderTime.PoolInfo"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 4688,
                          "name": "PoolInfo",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4182,
                          "src": "6997:8:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$4182_storage_ptr",
                            "typeString": "struct ComplexRewarderTime.PoolInfo"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6996:22:11"
                  },
                  "scope": 4787,
                  "src": "6948:824:11",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 4788,
              "src": "398:7377:11"
            }
          ],
          "src": "33:7743:11"
        },
        "id": 11
      },
      "contracts/mocks/RewarderBrokenMock.sol": {
        "ast": {
          "absolutePath": "contracts/mocks/RewarderBrokenMock.sol",
          "exportedSymbols": {
            "RewarderBrokenMock": [
              4831
            ]
          },
          "id": 4832,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4789,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:23:12"
            },
            {
              "absolutePath": "contracts/interfaces/IRewarder.sol",
              "file": "../interfaces/IRewarder.sol",
              "id": 4790,
              "nodeType": "ImportDirective",
              "scope": 4832,
              "sourceUnit": 3321,
              "src": "57:37:12",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 4791,
                    "name": "IRewarder",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3320,
                    "src": "128:9:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IRewarder_$3320",
                      "typeString": "contract IRewarder"
                    }
                  },
                  "id": 4792,
                  "nodeType": "InheritanceSpecifier",
                  "src": "128:9:12"
                }
              ],
              "contractDependencies": [
                3320
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 4831,
              "linearizedBaseContracts": [
                4831,
                3320
              ],
              "name": "RewarderBrokenMock",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "baseFunctions": [
                    3304
                  ],
                  "body": {
                    "id": 4809,
                    "nodeType": "Block",
                    "src": "237:25:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 4806,
                            "name": "revert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -19,
                              -19
                            ],
                            "referencedDeclaration": -19,
                            "src": "247:6:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_revert_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 4807,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "247:8:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4808,
                        "nodeType": "ExpressionStatement",
                        "src": "247:8:12"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "a3d83320",
                  "id": 4810,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onGoldNuggetReward",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4804,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "219:8:12"
                  },
                  "parameters": {
                    "id": 4803,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4794,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4810,
                        "src": "174:7:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4793,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "174:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4796,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4810,
                        "src": "183:7:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4795,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "183:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4798,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4810,
                        "src": "192:7:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4797,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "192:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4800,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4810,
                        "src": "201:7:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4799,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "201:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4802,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4810,
                        "src": "210:7:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4801,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "210:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "173:45:12"
                  },
                  "returnParameters": {
                    "id": 4805,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "237:0:12"
                  },
                  "scope": 4831,
                  "src": "145:117:12",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    3319
                  ],
                  "body": {
                    "id": 4829,
                    "nodeType": "Block",
                    "src": "437:25:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 4826,
                            "name": "revert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -19,
                              -19
                            ],
                            "referencedDeclaration": -19,
                            "src": "447:6:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_revert_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 4827,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "447:8:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4828,
                        "nodeType": "ExpressionStatement",
                        "src": "447:8:12"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "d63b3c49",
                  "id": 4830,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "pendingTokens",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4818,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "344:8:12"
                  },
                  "parameters": {
                    "id": 4817,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4812,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4830,
                        "src": "291:11:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4811,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "291:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4814,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4830,
                        "src": "304:12:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4813,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "304:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4816,
                        "mutability": "mutable",
                        "name": "goldnuggetAmount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4830,
                        "src": "318:24:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4815,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "318:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "290:53:12"
                  },
                  "returnParameters": {
                    "id": 4825,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4821,
                        "mutability": "mutable",
                        "name": "rewardTokens",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4830,
                        "src": "376:28:12",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_memory_ptr",
                          "typeString": "contract IERC20[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 4819,
                            "name": "IERC20",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 337,
                            "src": "376:6:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 4820,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "376:8:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage_ptr",
                            "typeString": "contract IERC20[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4824,
                        "mutability": "mutable",
                        "name": "rewardAmounts",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4830,
                        "src": "406:30:12",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4822,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "406:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4823,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "406:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "375:62:12"
                  },
                  "scope": 4831,
                  "src": "268:194:12",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 4832,
              "src": "97:370:12"
            }
          ],
          "src": "33:435:12"
        },
        "id": 12
      },
      "contracts/mocks/RewarderMock.sol": {
        "ast": {
          "absolutePath": "contracts/mocks/RewarderMock.sol",
          "exportedSymbols": {
            "RewarderMock": [
              5004
            ]
          },
          "id": 5005,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4833,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:23:13"
            },
            {
              "absolutePath": "contracts/interfaces/IRewarder.sol",
              "file": "../interfaces/IRewarder.sol",
              "id": 4834,
              "nodeType": "ImportDirective",
              "scope": 5005,
              "sourceUnit": 3321,
              "src": "57:37:13",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol",
              "file": "@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol",
              "id": 4835,
              "nodeType": "ImportDirective",
              "scope": 5005,
              "sourceUnit": 554,
              "src": "95:75:13",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol",
              "file": "@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol",
              "id": 4836,
              "nodeType": "ImportDirective",
              "scope": 5005,
              "sourceUnit": 842,
              "src": "171:74:13",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 4837,
                    "name": "IRewarder",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3320,
                    "src": "273:9:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IRewarder_$3320",
                      "typeString": "contract IRewarder"
                    }
                  },
                  "id": 4838,
                  "nodeType": "InheritanceSpecifier",
                  "src": "273:9:13"
                }
              ],
              "contractDependencies": [
                3320
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 5004,
              "linearizedBaseContracts": [
                5004,
                3320
              ],
              "name": "RewarderMock",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 4841,
                  "libraryName": {
                    "contractScope": null,
                    "id": 4839,
                    "name": "BoringMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 706,
                    "src": "295:10:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BoringMath_$706",
                      "typeString": "library BoringMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "289:29:13",
                  "typeName": {
                    "id": 4840,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "310:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "id": 4844,
                  "libraryName": {
                    "contractScope": null,
                    "id": 4842,
                    "name": "BoringERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 553,
                    "src": "329:11:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BoringERC20_$553",
                      "typeString": "library BoringERC20"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "323:29:13",
                  "typeName": {
                    "contractScope": null,
                    "id": 4843,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 337,
                    "src": "345:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$337",
                      "typeString": "contract IERC20"
                    }
                  }
                },
                {
                  "constant": false,
                  "id": 4846,
                  "mutability": "immutable",
                  "name": "rewardMultiplier",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5004,
                  "src": "357:42:13",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4845,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "357:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 4848,
                  "mutability": "immutable",
                  "name": "rewardToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5004,
                  "src": "405:36:13",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$337",
                    "typeString": "contract IERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4847,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 337,
                    "src": "405:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$337",
                      "typeString": "contract IERC20"
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "constant": true,
                  "id": 4851,
                  "mutability": "constant",
                  "name": "REWARD_TOKEN_DIVISOR",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5004,
                  "src": "447:52:13",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4849,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "447:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "31653138",
                    "id": 4850,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "495:4:13",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                      "typeString": "int_const 1000000000000000000"
                    },
                    "value": "1e18"
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 4853,
                  "mutability": "immutable",
                  "name": "GOLDMINER_V2",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5004,
                  "src": "505:38:13",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4852,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "505:7:13",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 4874,
                    "nodeType": "Block",
                    "src": "641:127:13",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4864,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4862,
                            "name": "rewardMultiplier",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4846,
                            "src": "651:16:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 4863,
                            "name": "_rewardMultiplier",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4855,
                            "src": "670:17:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "651:36:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4865,
                        "nodeType": "ExpressionStatement",
                        "src": "651:36:13"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4868,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4866,
                            "name": "rewardToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4848,
                            "src": "697:11:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 4867,
                            "name": "_rewardToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4857,
                            "src": "711:12:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            }
                          },
                          "src": "697:26:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "id": 4869,
                        "nodeType": "ExpressionStatement",
                        "src": "697:26:13"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4872,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4870,
                            "name": "GOLDMINER_V2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4853,
                            "src": "733:12:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 4871,
                            "name": "_GOLDMINER_V2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4859,
                            "src": "748:13:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "733:28:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 4873,
                        "nodeType": "ExpressionStatement",
                        "src": "733:28:13"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 4875,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4860,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4855,
                        "mutability": "mutable",
                        "name": "_rewardMultiplier",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4875,
                        "src": "563:25:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4854,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "563:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4857,
                        "mutability": "mutable",
                        "name": "_rewardToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4875,
                        "src": "590:19:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$337",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 4856,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 337,
                          "src": "590:6:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4859,
                        "mutability": "mutable",
                        "name": "_GOLDMINER_V2",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4875,
                        "src": "611:21:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4858,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "611:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "562:71:13"
                  },
                  "returnParameters": {
                    "id": 4861,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "641:0:13"
                  },
                  "scope": 5004,
                  "src": "550:218:13",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3304
                  ],
                  "body": {
                    "id": 4930,
                    "nodeType": "Block",
                    "src": "900:346:13",
                    "statements": [
                      {
                        "assignments": [
                          4892
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4892,
                            "mutability": "mutable",
                            "name": "pendingReward",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4930,
                            "src": "910:21:13",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4891,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "910:7:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4899,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4898,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 4895,
                                "name": "rewardMultiplier",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4846,
                                "src": "955:16:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 4893,
                                "name": "goldnuggetAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4883,
                                "src": "934:16:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4894,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 627,
                              "src": "934:20:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 4896,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "934:38:13",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 4897,
                            "name": "REWARD_TOKEN_DIVISOR",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4851,
                            "src": "975:20:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "934:61:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "910:85:13"
                      },
                      {
                        "assignments": [
                          4901
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4901,
                            "mutability": "mutable",
                            "name": "rewardBal",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4930,
                            "src": "1005:17:13",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4900,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1005:7:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4909,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 4906,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "1055:4:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_RewarderMock_$5004",
                                    "typeString": "contract RewarderMock"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_RewarderMock_$5004",
                                    "typeString": "contract RewarderMock"
                                  }
                                ],
                                "id": 4905,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1047:7:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 4904,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1047:7:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 4907,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1047:13:13",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 4902,
                              "name": "rewardToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4848,
                              "src": "1025:11:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$337",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 4903,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 285,
                            "src": "1025:21:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 4908,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1025:36:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1005:56:13"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4912,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 4910,
                            "name": "pendingReward",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4892,
                            "src": "1075:13:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 4911,
                            "name": "rewardBal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4901,
                            "src": "1091:9:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1075:25:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 4928,
                          "nodeType": "Block",
                          "src": "1172:68:13",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 4924,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4881,
                                    "src": "1211:2:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 4925,
                                    "name": "pendingReward",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4892,
                                    "src": "1215:13:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4921,
                                    "name": "rewardToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4848,
                                    "src": "1186:11:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$337",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 4923,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "safeTransfer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 503,
                                  "src": "1186:24:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$337_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$337_$",
                                    "typeString": "function (contract IERC20,address,uint256)"
                                  }
                                },
                                "id": 4926,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1186:43:13",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4927,
                              "nodeType": "ExpressionStatement",
                              "src": "1186:43:13"
                            }
                          ]
                        },
                        "id": 4929,
                        "nodeType": "IfStatement",
                        "src": "1071:169:13",
                        "trueBody": {
                          "id": 4920,
                          "nodeType": "Block",
                          "src": "1102:64:13",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 4916,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4881,
                                    "src": "1141:2:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 4917,
                                    "name": "rewardBal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4901,
                                    "src": "1145:9:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4913,
                                    "name": "rewardToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4848,
                                    "src": "1116:11:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$337",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 4915,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "safeTransfer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 503,
                                  "src": "1116:24:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$337_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$337_$",
                                    "typeString": "function (contract IERC20,address,uint256)"
                                  }
                                },
                                "id": 4918,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1116:39:13",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4919,
                              "nodeType": "ExpressionStatement",
                              "src": "1116:39:13"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "a3d83320",
                  "id": 4931,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 4888,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 4887,
                        "name": "onlyMCV2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5003,
                        "src": "873:8:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "873:8:13"
                    }
                  ],
                  "name": "onGoldNuggetReward",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4889,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "882:8:13"
                  },
                  "parameters": {
                    "id": 4886,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4877,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4931,
                        "src": "803:7:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4876,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "803:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4879,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4931,
                        "src": "812:12:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4878,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "812:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4881,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4931,
                        "src": "826:10:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4880,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "826:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4883,
                        "mutability": "mutable",
                        "name": "goldnuggetAmount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4931,
                        "src": "838:24:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4882,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "838:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4885,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4931,
                        "src": "864:7:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4884,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "864:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "802:70:13"
                  },
                  "returnParameters": {
                    "id": 4890,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "900:0:13"
                  },
                  "scope": 5004,
                  "src": "774:472:13",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    3319
                  ],
                  "body": {
                    "id": 4990,
                    "nodeType": "Block",
                    "src": "1426:305:13",
                    "statements": [
                      {
                        "assignments": [
                          4950
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4950,
                            "mutability": "mutable",
                            "name": "_rewardTokens",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4990,
                            "src": "1436:29:13",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_memory_ptr",
                              "typeString": "contract IERC20[]"
                            },
                            "typeName": {
                              "baseType": {
                                "contractScope": null,
                                "id": 4948,
                                "name": "IERC20",
                                "nodeType": "UserDefinedTypeName",
                                "referencedDeclaration": 337,
                                "src": "1436:6:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$337",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "id": 4949,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "1436:8:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage_ptr",
                                "typeString": "contract IERC20[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4956,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 4954,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1481:1:13",
                              "subdenomination": null,
                              "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": 4953,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "1468:12:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IERC20_$337_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (contract IERC20[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "contractScope": null,
                                "id": 4951,
                                "name": "IERC20",
                                "nodeType": "UserDefinedTypeName",
                                "referencedDeclaration": 337,
                                "src": "1472:6:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$337",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "id": 4952,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "1472:8:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage_ptr",
                                "typeString": "contract IERC20[]"
                              }
                            }
                          },
                          "id": 4955,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1468:15:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_memory_ptr",
                            "typeString": "contract IERC20[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1436:47:13"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4962,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4957,
                              "name": "_rewardTokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4950,
                              "src": "1493:13:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_memory_ptr",
                                "typeString": "contract IERC20[] memory"
                              }
                            },
                            "id": 4959,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 4958,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1507:1:13",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1493:16:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 4960,
                                "name": "rewardToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4848,
                                "src": "1513:11:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$337",
                                  "typeString": "contract IERC20"
                                }
                              }
                            ],
                            "id": 4961,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "1512:13:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            }
                          },
                          "src": "1493:32:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$337",
                            "typeString": "contract IERC20"
                          }
                        },
                        "id": 4963,
                        "nodeType": "ExpressionStatement",
                        "src": "1493:32:13"
                      },
                      {
                        "assignments": [
                          4968
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4968,
                            "mutability": "mutable",
                            "name": "_rewardAmounts",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4990,
                            "src": "1535:31:13",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 4966,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1535:7:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4967,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "1535:9:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4974,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 4972,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1583:1:13",
                              "subdenomination": null,
                              "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": 4971,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "1569:13:13",
                            "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": 4969,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1573:7:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4970,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "1573:9:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 4973,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1569:16:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1535:50:13"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4984,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4975,
                              "name": "_rewardAmounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4968,
                              "src": "1595:14:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 4977,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 4976,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1610:1:13",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1595:17:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4983,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 4980,
                                  "name": "rewardMultiplier",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4846,
                                  "src": "1636:16:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4978,
                                  "name": "goldnuggetAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4937,
                                  "src": "1615:16:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 4979,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 627,
                                "src": "1615:20:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 4981,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1615:38:13",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 4982,
                              "name": "REWARD_TOKEN_DIVISOR",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4851,
                              "src": "1656:20:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "1615:61:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1595:81:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4985,
                        "nodeType": "ExpressionStatement",
                        "src": "1595:81:13"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 4986,
                              "name": "_rewardTokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4950,
                              "src": "1694:13:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_memory_ptr",
                                "typeString": "contract IERC20[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4987,
                              "name": "_rewardAmounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4968,
                              "src": "1709:14:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "id": 4988,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "1693:31:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_array$_t_contract$_IERC20_$337_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                            "typeString": "tuple(contract IERC20[] memory,uint256[] memory)"
                          }
                        },
                        "functionReturnParameters": 4946,
                        "id": 4989,
                        "nodeType": "Return",
                        "src": "1686:38:13"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "d63b3c49",
                  "id": 4991,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "pendingTokens",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4939,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1332:8:13"
                  },
                  "parameters": {
                    "id": 4938,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4933,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4991,
                        "src": "1279:11:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4932,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1279:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4935,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4991,
                        "src": "1292:12:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4934,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1292:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4937,
                        "mutability": "mutable",
                        "name": "goldnuggetAmount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4991,
                        "src": "1306:24:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4936,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1306:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1278:53:13"
                  },
                  "returnParameters": {
                    "id": 4946,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4942,
                        "mutability": "mutable",
                        "name": "rewardTokens",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4991,
                        "src": "1364:28:13",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_memory_ptr",
                          "typeString": "contract IERC20[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 4940,
                            "name": "IERC20",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 337,
                            "src": "1364:6:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$337",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 4941,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "1364:8:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_contract$_IERC20_$337_$dyn_storage_ptr",
                            "typeString": "contract IERC20[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4945,
                        "mutability": "mutable",
                        "name": "rewardAmounts",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4991,
                        "src": "1394:30:13",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4943,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1394:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4944,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "1394:9:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1363:62:13"
                  },
                  "scope": 5004,
                  "src": "1256:475:13",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 5002,
                    "nodeType": "Block",
                    "src": "1755:134:13",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 4997,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4994,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "1786:3:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 4995,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1786:10:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 4996,
                                "name": "GOLDMINER_V2",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4853,
                                "src": "1800:12:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "1786:26:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4f6e6c79204d4356322063616e2063616c6c20746869732066756e6374696f6e2e",
                              "id": 4998,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1826:35:13",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_3119d70f54e65f7fc05dc3fff78f1ae1d0c82eaf50b477c40260718556fca1cd",
                                "typeString": "literal_string \"Only MCV2 can call this function.\""
                              },
                              "value": "Only MCV2 can call this function."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_3119d70f54e65f7fc05dc3fff78f1ae1d0c82eaf50b477c40260718556fca1cd",
                                "typeString": "literal_string \"Only MCV2 can call this function.\""
                              }
                            ],
                            "id": 4993,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1765:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4999,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1765:106:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5000,
                        "nodeType": "ExpressionStatement",
                        "src": "1765:106:13"
                      },
                      {
                        "id": 5001,
                        "nodeType": "PlaceholderStatement",
                        "src": "1881:1:13"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 5003,
                  "name": "onlyMCV2",
                  "nodeType": "ModifierDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4992,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1755:0:13"
                  },
                  "src": "1737:152:13",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 5005,
              "src": "248:1646:13"
            }
          ],
          "src": "33:1862:13"
        },
        "id": 13
      }
    }
  }
}
