FTM Price: $0.42 (-2.20%)
Gas: 15 Gwei

Contract

0x5ceC66F552B1D3406f65Eb1A4a4914f448F98E9c
 

Overview

FTM Balance

Fantom LogoFantom LogoFantom Logo0 FTM

FTM Value

$0.00

Token Holdings

Sponsored

Transaction Hash
Method
Block
From
To
Value
Convert707686742023-11-17 20:06:1495 days 2 hrs ago1700251574IN
SpiritSwap: Spirit Maker
0 FTM0.0074139820.77143375
Convert707686532023-11-17 20:05:4895 days 2 hrs ago1700251548IN
SpiritSwap: Spirit Maker
0 FTM0.0042832620.92028421
Convert707686372023-11-17 20:05:3295 days 2 hrs ago1700251532IN
SpiritSwap: Spirit Maker
0 FTM0.005233121.08014651
Convert707686232023-11-17 20:05:1195 days 2 hrs ago1700251511IN
SpiritSwap: Spirit Maker
0 FTM0.0067654920.83313463
Convert707685872023-11-17 20:04:3495 days 2 hrs ago1700251474IN
SpiritSwap: Spirit Maker
0 FTM0.0053384720.86997958
Convert707685722023-11-17 20:04:2195 days 2 hrs ago1700251461IN
SpiritSwap: Spirit Maker
0 FTM0.0053422820.87751309
Convert707685612023-11-17 20:04:0695 days 2 hrs ago1700251446IN
SpiritSwap: Spirit Maker
0 FTM0.0054349521.05969415
Convert707684922023-11-17 20:02:4395 days 2 hrs ago1700251363IN
SpiritSwap: Spirit Maker
0 FTM0.0053469421.17830254
Convert707684712023-11-17 20:02:0395 days 2 hrs ago1700251323IN
SpiritSwap: Spirit Maker
0 FTM0.0054306821.17937816
Convert Multiple623891042023-05-15 19:11:06281 days 3 hrs ago1684177866IN
SpiritSwap: Spirit Maker
0 FTM0.28553118607.90766043
Convert Multiple623890922023-05-15 19:10:55281 days 3 hrs ago1684177855IN
SpiritSwap: Spirit Maker
0 FTM0.7254047615.93359552
Convert Multiple623890802023-05-15 19:10:44281 days 3 hrs ago1684177844IN
SpiritSwap: Spirit Maker
0 FTM0.73808466618.5587139
Convert Multiple623890482023-05-15 19:10:18281 days 3 hrs ago1684177818IN
SpiritSwap: Spirit Maker
0 FTM0.65678033643.2917945
Convert Multiple623890372023-05-15 19:10:06281 days 3 hrs ago1684177806IN
SpiritSwap: Spirit Maker
0 FTM0.88090126643.2917945
Convert Multiple623890032023-05-15 19:09:37281 days 3 hrs ago1684177777IN
SpiritSwap: Spirit Maker
0 FTM0.48379412371.84870418
Convert Multiple623889892023-05-15 19:09:20281 days 3 hrs ago1684177760IN
SpiritSwap: Spirit Maker
0 FTM0.4871913368.3857821
Convert Multiple623889882023-05-15 19:09:17281 days 3 hrs ago1684177757IN
SpiritSwap: Spirit Maker
0 FTM0.47902423377.99876855
Convert Multiple623889602023-05-15 19:08:22281 days 3 hrs ago1684177702IN
SpiritSwap: Spirit Maker
0 FTM0.13493928112.25044164
Convert Multiple559454502023-02-16 21:51:04369 days 55 mins ago1676584264IN
SpiritSwap: Spirit Maker
0 FTM0.22857296486.45276999
Convert Multiple559454422023-02-16 21:50:54369 days 56 mins ago1676584254IN
SpiritSwap: Spirit Maker
0 FTM0.3734669319.49111404
Convert Multiple559454332023-02-16 21:50:44369 days 56 mins ago1676584244IN
SpiritSwap: Spirit Maker
0 FTM0.37850751319.49111404
Convert Multiple559454302023-02-16 21:50:41369 days 56 mins ago1676584241IN
SpiritSwap: Spirit Maker
0 FTM0.76487686749.03404152
Convert Multiple559454222023-02-16 21:50:34369 days 56 mins ago1676584234IN
SpiritSwap: Spirit Maker
0 FTM0.39691091287.86776069
Convert Multiple559454112023-02-16 21:50:22369 days 56 mins ago1676584222IN
SpiritSwap: Spirit Maker
0 FTM0.37521202287.86776069
Convert Multiple559453932023-02-16 21:49:46369 days 57 mins ago1676584186IN
SpiritSwap: Spirit Maker
0 FTM0.36862423278.69368566
View all transactions

Latest 1 internal transaction

Parent Txn Hash Block From To Value
155456332021-08-26 5:33:56908 days 17 hrs ago1629956036  Contract Creation0 FTM
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SpiritMaker

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 1 of 8: BuyBackSpirit.sol
// SPDX-License-Identifier: MIT

// P1 - P3: OK
pragma solidity 0.6.12;
import "./SafeMath.sol";
import "./SafeERC20.sol";

import "./IUniswapV2ERC20.sol";
import "./IUniswapV2Pair.sol";
import "./IUniswapV2Factory.sol";

import "./Ownable.sol";

// SpiritMaker is MasterChef's left hand and kinda a wizard. He can cook up Spirit from pretty much anything!
// This contract handles "serving up" rewards for inSpirit holders by trading tokens collected from fees for Spirit.

// T1 - T4: OK
contract SpiritMaker is Ownable {
    using SafeMath for uint256;
    using SafeERC20 for IERC20;

    // V1 - V5: OK
    IUniswapV2Factory public immutable factory;
    // 0xEF45d134b73241eDa7703fa787148D9C9F4950b0
    // V1 - V5: OK
    address public immutable dest;
    // 0xD5A2a2d1d35724396bBB547554AD73b52C0f4993   -- Fee Distributor contract for inSPIRIT holders
    // V1 - V5: OK
    address private immutable spirit;
    // 0x5cc61a78f164885776aa610fb0fe1257df78e59b
    // V1 - V5: OK
    address private immutable wftm;
    // 0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83

    // V1 - V5: OK
    mapping(address => address) internal _bridges;

    // E1: OK
    event LogBridgeSet(address indexed token, address indexed bridge);
    // E1: OK
    event LogConvert(
        address indexed server,
        address indexed token0,
        address indexed token1,
        uint256 amount0,
        uint256 amount1,
        uint256 amountSPIRIT
    );

    constructor(
        address _factory,
        address _dest,
        address _spirit,
        address _wftm
    ) public {
        factory = IUniswapV2Factory(_factory);
        dest = _dest;
        spirit = _spirit;
        wftm = _wftm;
    }

    // F1 - F10: OK
    // C1 - C24: OK
    function bridgeFor(address token) public view returns (address bridge) {
        bridge = _bridges[token];
        if (bridge == address(0)) {
            bridge = wftm;
        }
    }

    // F1 - F10: OK
    // C1 - C24: OK
    function setBridge(address token, address bridge) external onlyOwner {
        // Checks
        require(
            token != spirit && token != wftm && token != bridge,
            "SpiritMaker: Invalid bridge"
        );

        // Effects
        _bridges[token] = bridge;
        emit LogBridgeSet(token, bridge);
    }

    // M1 - M5: OK
    // C1 - C24: OK
    // C6: It's not a fool proof solution, but it prevents flash loans, so here it's ok to use tx.origin
    modifier onlyEOA() {
        // Try to make flash-loan exploit harder to do by only allowing externally owned addresses.
        require(msg.sender == tx.origin, "SpiritMaker: must use EOA");
        _;
    }

    // F1 - F10: OK
    // F3: _convert is separate to save gas by only checking the 'onlyEOA' modifier once in case of convertMultiple
    // F6: There is an exploit to add lots of SPIRIT to the dest, run convert, then remove the SPIRIT again.
    //     As the size of the SpiritDest has grown, this requires large amounts of funds and isn't super profitable anymore
    //     The onlyEOA modifier prevents this being done with a flash loan.
    // C1 - C24: OK
    function convert(address token0, address token1) external onlyEOA {
        _convert(token0, token1);
    }

    // F1 - F10: OK, see convert
    // C1 - C24: OK
    // C3: Loop is under control of the caller
    function convertMultiple(
        address[] calldata token0,
        address[] calldata token1
    ) external onlyEOA {
        // TODO: This can be optimized a fair bit, but this is safer and simpler for now
        uint256 len = token0.length;
        for (uint256 i = 0; i < len; i++) {
            _convert(token0[i], token1[i]);
        }
    }

    // F1 - F10: OK
    // C1- C24: OK
    function _convert(address token0, address token1) internal {
        // Interactions
        // S1 - S4: OK
        IUniswapV2Pair pair = IUniswapV2Pair(factory.getPair(token0, token1));
        require(address(pair) != address(0), "SpiritMaker: Invalid pair");
        // balanceOf: S1 - S4: OK
        // transfer: X1 - X5: OK
        IERC20(address(pair)).safeTransfer(
            address(pair),
            pair.balanceOf(address(this))
        );
        // X1 - X5: OK
        (uint256 amount0, uint256 amount1) = pair.burn(address(this));
        if (token0 != pair.token0()) {
            (amount0, amount1) = (amount1, amount0);
        }
        emit LogConvert(
            msg.sender,
            token0,
            token1,
            amount0,
            amount1,
            _convertStep(token0, token1, amount0, amount1)
        );
    }

    // F1 - F10: OK
    // C1 - C24: OK
    // All safeTransfer, _swap, _toSPIRIT, _convertStep: X1 - X5: OK
    function _convertStep(
        address token0,
        address token1,
        uint256 amount0,
        uint256 amount1
    ) internal returns (uint256 spiritOut) {
        // Interactions
        if (token0 == token1) {
            uint256 amount = amount0.add(amount1);
            if (token0 == spirit) {
                IERC20(spirit).safeTransfer(dest, amount);
                spiritOut = amount;
            } else if (token0 == wftm) {
                spiritOut = _toSPIRIT(wftm, amount);
            } else {
                address bridge = bridgeFor(token0);
                amount = _swap(token0, bridge, amount, address(this));
                spiritOut = _convertStep(bridge, bridge, amount, 0);
            }
        } else if (token0 == spirit) {
            // eg. SPIRIT - ETH
            IERC20(spirit).safeTransfer(dest, amount0);
            spiritOut = _toSPIRIT(token1, amount1).add(amount0);
        } else if (token1 == spirit) {
            // eg. USDT - SPIRIT
            IERC20(spirit).safeTransfer(dest, amount1);
            spiritOut = _toSPIRIT(token0, amount0).add(amount1);
        } else if (token0 == wftm) {
            // eg. ETH - USDC
            spiritOut = _toSPIRIT(
                wftm,
                _swap(token1, wftm, amount1, address(this)).add(amount0)
            );
        } else if (token1 == wftm) {
            // eg. USDT - ETH
            spiritOut = _toSPIRIT(
                wftm,
                _swap(token0, wftm, amount0, address(this)).add(amount1)
            );
        } else {
            // eg. MIC - USDT
            address bridge0 = bridgeFor(token0);
            address bridge1 = bridgeFor(token1);
            if (bridge0 == token1) {
                // eg. MIC - USDT - and bridgeFor(MIC) = USDT
                spiritOut = _convertStep(
                    bridge0,
                    token1,
                    _swap(token0, bridge0, amount0, address(this)),
                    amount1
                );
            } else if (bridge1 == token0) {
                // eg. WBTC - DSD - and bridgeFor(DSD) = WBTC
                spiritOut = _convertStep(
                    token0,
                    bridge1,
                    amount0,
                    _swap(token1, bridge1, amount1, address(this))
                );
            } else {
                spiritOut = _convertStep(
                    bridge0,
                    bridge1, // eg. USDT - DSD - and bridgeFor(DSD) = WBTC
                    _swap(token0, bridge0, amount0, address(this)),
                    _swap(token1, bridge1, amount1, address(this))
                );
            }
        }
    }

    // F1 - F10: OK
    // C1 - C24: OK
    // All safeTransfer, swap: X1 - X5: OK
    function _swap(
        address fromToken,
        address toToken,
        uint256 amountIn,
        address to
    ) internal returns (uint256 amountOut) {
        // Checks
        // X1 - X5: OK
        IUniswapV2Pair pair = IUniswapV2Pair(
            factory.getPair(fromToken, toToken)
        );
        require(address(pair) != address(0), "SpiritMaker: Cannot convert");

        // Interactions
        // X1 - X5: OK
        (uint256 reserve0, uint256 reserve1, ) = pair.getReserves();
        uint256 amountInWithFee = amountIn.mul(997);
        if (fromToken == pair.token0()) {
            amountOut =
                amountInWithFee.mul(reserve1) /
                reserve0.mul(1000).add(amountInWithFee);
            IERC20(fromToken).safeTransfer(address(pair), amountIn);
            pair.swap(0, amountOut, to, new bytes(0));
            // TODO: Add maximum slippage?
        } else {
            amountOut =
                amountInWithFee.mul(reserve0) /
                reserve1.mul(1000).add(amountInWithFee);
            IERC20(fromToken).safeTransfer(address(pair), amountIn);
            pair.swap(amountOut, 0, to, new bytes(0));
            // TODO: Add maximum slippage?
        }
    }

    // F1 - F10: OK
    // C1 - C24: OK
    function _toSPIRIT(address token, uint256 amountIn)
        internal
        returns (uint256 amountOut)
    {
        // X1 - X5: OK
        amountOut = _swap(token, spirit, amountIn, dest);
    }
}

File 2 of 8: IERC20.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );

    // EIP 2612
    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;
}

File 3 of 8: IUniswapV2ERC20.sol
// SPDX-License-Identifier: GPL-3.0

pragma solidity >=0.5.0;

interface IUniswapV2ERC20 {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
}

File 4 of 8: IUniswapV2Factory.sol
// SPDX-License-Identifier: GPL-3.0

pragma solidity >=0.5.0;

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function migrator() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
    function setMigrator(address) external;
}

File 5 of 8: IUniswapV2Pair.sol
// SPDX-License-Identifier: GPL-3.0

pragma solidity >=0.5.0;

interface IUniswapV2Pair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

    function name() external pure returns (string memory);

    function symbol() external pure returns (string memory);

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

    function balanceOf(address owner) external view returns (uint256);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestampLast
        );

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function burn(address to)
        external
        returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

File 6 of 8: Ownable.sol
// SPDX-License-Identifier: MIT
// Audit on 5-Jan-2021 by Keno and BoringCrypto

// P1 - P3: OK
pragma solidity 0.6.12;

// Source: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol + Claimable.sol
// Edited by BoringCrypto

// T1 - T4: OK
contract OwnableData {
    // V1 - V5: OK
    address public owner;
    // V1 - V5: OK
    address public pendingOwner;
}

// T1 - T4: OK
contract Ownable is OwnableData {
    // E1: OK
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() internal {
        owner = msg.sender;
        emit OwnershipTransferred(address(0), msg.sender);
    }

    // F1 - F9: OK
    // C1 - C21: OK
    function transferOwnership(
        address newOwner,
        bool direct,
        bool renounce
    ) public onlyOwner {
        if (direct) {
            // Checks
            require(
                newOwner != address(0) || renounce,
                "Ownable: zero address"
            );

            // Effects
            emit OwnershipTransferred(owner, newOwner);
            owner = newOwner;
        } else {
            // Effects
            pendingOwner = newOwner;
        }
    }

    // F1 - F9: OK
    // C1 - C21: OK
    function claimOwnership() public {
        address _pendingOwner = pendingOwner;

        // Checks
        require(
            msg.sender == _pendingOwner,
            "Ownable: caller != pending owner"
        );

        // Effects
        emit OwnershipTransferred(owner, _pendingOwner);
        owner = _pendingOwner;
        pendingOwner = address(0);
    }

    // M1 - M5: OK
    // C1 - C21: OK
    modifier onlyOwner() {
        require(msg.sender == owner, "Ownable: caller is not the owner");
        _;
    }
}

File 7 of 8: SafeERC20.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;

import "./IERC20.sol";

library SafeERC20 {
    function safeSymbol(IERC20 token) internal view returns (string memory) {
        (bool success, bytes memory data) = address(token).staticcall(
            abi.encodeWithSelector(0x95d89b41)
        );
        return success && data.length > 0 ? abi.decode(data, (string)) : "???";
    }

    function safeName(IERC20 token) internal view returns (string memory) {
        (bool success, bytes memory data) = address(token).staticcall(
            abi.encodeWithSelector(0x06fdde03)
        );
        return success && data.length > 0 ? abi.decode(data, (string)) : "???";
    }

    function safeDecimals(IERC20 token) public view returns (uint8) {
        (bool success, bytes memory data) = address(token).staticcall(
            abi.encodeWithSelector(0x313ce567)
        );
        return success && data.length == 32 ? abi.decode(data, (uint8)) : 18;
    }

    function safeTransfer(
        IERC20 token,
        address to,
        uint256 amount
    ) internal {
        (bool success, bytes memory data) = address(token).call(
            abi.encodeWithSelector(0xa9059cbb, to, amount)
        );
        require(
            success && (data.length == 0 || abi.decode(data, (bool))),
            "SafeERC20: Transfer failed"
        );
    }

    function safeTransferFrom(
        IERC20 token,
        address from,
        uint256 amount
    ) internal {
        (bool success, bytes memory data) = address(token).call(
            abi.encodeWithSelector(0x23b872dd, from, address(this), amount)
        );
        require(
            success && (data.length == 0 || abi.decode(data, (bool))),
            "SafeERC20: TransferFrom failed"
        );
    }
}

File 8 of 8: SafeMath.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;

// a library for performing overflow-safe math, updated with awesomeness from of DappHub (https://github.com/dapphub/ds-math)
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256 c) {
        require((c = a + b) >= b, "SafeMath: Add Overflow");
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256 c) {
        require((c = a - b) <= a, "SafeMath: Underflow");
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
        require(b == 0 || (c = a * b) / b == a, "SafeMath: Mul Overflow");
    }

    function to128(uint256 a) internal pure returns (uint128 c) {
        require(a <= uint128(-1), "SafeMath: uint128 Overflow");
        c = uint128(a);
    }
}

library SafeMath128 {
    function add(uint128 a, uint128 b) internal pure returns (uint128 c) {
        require((c = a + b) >= b, "SafeMath: Add Overflow");
    }

    function sub(uint128 a, uint128 b) internal pure returns (uint128 c) {
        require((c = a - b) <= a, "SafeMath: Underflow");
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_dest","type":"address"},{"internalType":"address","name":"_spirit","type":"address"},{"internalType":"address","name":"_wftm","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"bridge","type":"address"}],"name":"LogBridgeSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"server","type":"address"},{"indexed":true,"internalType":"address","name":"token0","type":"address"},{"indexed":true,"internalType":"address","name":"token1","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountSPIRIT","type":"uint256"}],"name":"LogConvert","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":"address","name":"token","type":"address"}],"name":"bridgeFor","outputs":[{"internalType":"address","name":"bridge","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"}],"name":"convert","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"token0","type":"address[]"},{"internalType":"address[]","name":"token1","type":"address[]"}],"name":"convertMultiple","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dest","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"contract IUniswapV2Factory","name":"","type":"address"}],"stateMutability":"view","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":"token","type":"address"},{"internalType":"address","name":"bridge","type":"address"}],"name":"setBridge","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"}]

61010060405234801561001157600080fd5b506040516125453803806125458339818101604052608081101561003457600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508273ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508173ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660e08173ffffffffffffffffffffffffffffffffffffffff1660601b815250505050505060805160601c60a05160601c60c05160601c60e05160601c6122b861028d60003980610aa15280610d11528061158d52806115e452806118095280611860528061188952806118cb5280611922528061194b525080610a4a52806114c6528061153f528061164552806116be528061172752806117a05280611b09525080610941528061151d528061169c528061177e5280611b2b525080610de95280610e355280611b5c52506122b86000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80639d22ae8c116100665780639d22ae8c1461023f578063a761a939146102a3578063bd1b820c14610311578063c45a015514610375578063e30c3978146103a95761009e565b8063078dfbe7146100a3578063303e6aa4146100ff5780634e71e0c8146101cd57806384b366dc146101d75780638da5cb5b1461020b575b600080fd5b6100fd600480360360608110156100b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291908035151590602001909291905050506103dd565b005b6101cb6004803603604081101561011557600080fd5b810190808035906020019064010000000081111561013257600080fd5b82018360208201111561014457600080fd5b8035906020019184602083028401116401000000008311171561016657600080fd5b90919293919293908035906020019064010000000081111561018757600080fd5b82018360208201111561019957600080fd5b803590602001918460208302840111640100000000831117156101bb57600080fd5b9091929391929390505050610655565b005b6101d5610778565b005b6101df61093f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610213610963565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102a16004803603604081101561025557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610987565b005b6102e5600480360360208110156102b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c76565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103736004803603604081101561032757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d38565b005b61037d610de7565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103b1610e0b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461049e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b811561060e57600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415806104dd5750805b61054f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4f776e61626c653a207a65726f2061646472657373000000000000000000000081525060200191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610650565b82600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b505050565b3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f5370697269744d616b65723a206d7573742075736520454f410000000000000081525060200191505060405180910390fd5b600084849050905060005b818110156107705761076386868381811061071857fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1685858481811061074157fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16610e31565b8080600101915050610701565b505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610840576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e657281525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a48576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015610af057507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015610b2857508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b610b9a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f5370697269744d616b65723a20496e76616c696420627269646765000000000081525060200191505060405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f2e103aa707acc565f9a1547341914802b2bfe977fd79c595209f248ae4b0061360405160405180910390a35050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d33577f000000000000000000000000000000000000000000000000000000000000000090505b919050565b3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610dd9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f5370697269744d616b65723a206d7573742075736520454f410000000000000081525060200191505060405180910390fd5b610de38282610e31565b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e6a4390584846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015610ed857600080fd5b505afa158015610eec573d6000803e3d6000fd5b505050506040513d6020811015610f0257600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610fb8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f5370697269744d616b65723a20496e76616c696420706169720000000000000081525060200191505060405180910390fd5b611084818273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561102357600080fd5b505afa158015611037573d6000803e3d6000fd5b505050506040513d602081101561104d57600080fd5b81019080805190602001909291905050508373ffffffffffffffffffffffffffffffffffffffff166112949092919063ffffffff16565b6000808273ffffffffffffffffffffffffffffffffffffffff166389afcb44306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1681526020019150506040805180830381600087803b1580156110ef57600080fd5b505af1158015611103573d6000803e3d6000fd5b505050506040513d604081101561111957600080fd5b810190808051906020019092919080519060200190929190505050915091508273ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561117e57600080fd5b505afa158015611192573d6000803e3d6000fd5b505050506040513d60208110156111a857600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146111f657808280925081935050505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fd06b1d7ed79b664d17472c6f6997b929f1abe463ccccb4e5b6a0038f2f730c15858561126a8b8b8a8a611477565b60405180848152602001838152602001828152602001935050505060405180910390a45050505050565b600060608473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401808373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b602083106113575780518252602082019150602081019050602083039250611334565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146113b9576040519150601f19603f3d011682016040523d82523d6000602084013e6113be565b606091505b50915091508180156113fe57506000815114806113fd57508080602001905160208110156113eb57600080fd5b81019080805190602001909291905050505b5b611470576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f5361666545524332303a205472616e73666572206661696c656400000000000081525060200191505060405180910390fd5b5050505050565b60008373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156116435760006114c28385611a7e90919063ffffffff16565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141561158b576115837f0000000000000000000000000000000000000000000000000000000000000000827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166112949092919063ffffffff16565b80915061163d565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415611610576116097f000000000000000000000000000000000000000000000000000000000000000082611b01565b915061163c565b600061161b87610c76565b905061162987828430611b57565b91506116388182846000611477565b9250505b5b50611a76565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415611725576117027f0000000000000000000000000000000000000000000000000000000000000000847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166112949092919063ffffffff16565b61171e836117108685611b01565b611a7e90919063ffffffff16565b9050611a75565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611807576117e47f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166112949092919063ffffffff16565b611800826117f28786611b01565b611a7e90919063ffffffff16565b9050611a74565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156118c9576118c27f00000000000000000000000000000000000000000000000000000000000000006118bd856118af887f00000000000000000000000000000000000000000000000000000000000000008830611b57565b611a7e90919063ffffffff16565b611b01565b9050611a73565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561198b576119847f000000000000000000000000000000000000000000000000000000000000000061197f84611971897f00000000000000000000000000000000000000000000000000000000000000008930611b57565b611a7e90919063ffffffff16565b611b01565b9050611a72565b600061199686610c76565b905060006119a386610c76565b90508573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156119f7576119f082876119ea8a868a30611b57565b87611477565b9250611a6f565b8673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a4957611a42878287611a3d8a868a30611b57565b611477565b9250611a6e565b611a6b8282611a5a8a868a30611b57565b611a668a868a30611b57565b611477565b92505b5b50505b5b5b5b5b949350505050565b6000818284019150811015611afb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f536166654d6174683a20416464204f766572666c6f770000000000000000000081525060200191505060405180910390fd5b92915050565b6000611b4f837f0000000000000000000000000000000000000000000000000000000000000000847f0000000000000000000000000000000000000000000000000000000000000000611b57565b905092915050565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e6a4390587876040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015611bff57600080fd5b505afa158015611c13573d6000803e3d6000fd5b505050506040513d6020811015611c2957600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611cdf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f5370697269744d616b65723a2043616e6e6f7420636f6e76657274000000000081525060200191505060405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015611d2857600080fd5b505afa158015611d3c573d6000803e3d6000fd5b505050506040513d6060811015611d5257600080fd5b81019080805190602001909291908051906020019092919080519060200190929190505050506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691506000611db36103e5886121ed90919063ffffffff16565b90508373ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015611dfb57600080fd5b505afa158015611e0f573d6000803e3d6000fd5b505050506040513d6020811015611e2557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16141561202757611e9081611e826103e8866121ed90919063ffffffff16565b611a7e90919063ffffffff16565b611ea383836121ed90919063ffffffff16565b81611eaa57fe5b049450611ed884888b73ffffffffffffffffffffffffffffffffffffffff166112949092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff1663022c0d9f60008789600067ffffffffffffffff81118015611f1057600080fd5b506040519080825280601f01601f191660200182016040528015611f435781602001600182028036833780820191505090505b506040518563ffffffff1660e01b8152600401808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611fbb578082015181840152602081019050611fa0565b50505050905090810190601f168015611fe85780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561200a57600080fd5b505af115801561201e573d6000803e3d6000fd5b505050506121e1565b61204e816120406103e8856121ed90919063ffffffff16565b611a7e90919063ffffffff16565b61206184836121ed90919063ffffffff16565b8161206857fe5b04945061209684888b73ffffffffffffffffffffffffffffffffffffffff166112949092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff1663022c0d9f86600089600067ffffffffffffffff811180156120ce57600080fd5b506040519080825280601f01601f1916602001820160405280156121015781602001600182028036833780820191505090505b506040518563ffffffff1660e01b8152600401808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561217957808201518184015260208101905061215e565b50505050905090810190601f1680156121a65780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156121c857600080fd5b505af11580156121dc573d6000803e3d6000fd5b505050505b50505050949350505050565b60008082148061220a575082828385029250828161220757fe5b04145b61227c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f536166654d6174683a204d756c204f766572666c6f770000000000000000000081525060200191505060405180910390fd5b9291505056fea2646970667358221220d8e8c842c9d8e2f353b9141879df19a157f1142c1515f55aeb570cff7230d24964736f6c634300060c0033000000000000000000000000ef45d134b73241eda7703fa787148d9c9f4950b000000000000000000000000018cef75c2b032d7060e9cf96f29adf74a9a17ce60000000000000000000000005cc61a78f164885776aa610fb0fe1257df78e59b00000000000000000000000021be370d5312f44cb42ce377bc9b8a0cef1a4c83

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061009e5760003560e01c80639d22ae8c116100665780639d22ae8c1461023f578063a761a939146102a3578063bd1b820c14610311578063c45a015514610375578063e30c3978146103a95761009e565b8063078dfbe7146100a3578063303e6aa4146100ff5780634e71e0c8146101cd57806384b366dc146101d75780638da5cb5b1461020b575b600080fd5b6100fd600480360360608110156100b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291908035151590602001909291905050506103dd565b005b6101cb6004803603604081101561011557600080fd5b810190808035906020019064010000000081111561013257600080fd5b82018360208201111561014457600080fd5b8035906020019184602083028401116401000000008311171561016657600080fd5b90919293919293908035906020019064010000000081111561018757600080fd5b82018360208201111561019957600080fd5b803590602001918460208302840111640100000000831117156101bb57600080fd5b9091929391929390505050610655565b005b6101d5610778565b005b6101df61093f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610213610963565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102a16004803603604081101561025557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610987565b005b6102e5600480360360208110156102b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c76565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103736004803603604081101561032757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d38565b005b61037d610de7565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103b1610e0b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461049e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b811561060e57600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415806104dd5750805b61054f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4f776e61626c653a207a65726f2061646472657373000000000000000000000081525060200191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610650565b82600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b505050565b3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f5370697269744d616b65723a206d7573742075736520454f410000000000000081525060200191505060405180910390fd5b600084849050905060005b818110156107705761076386868381811061071857fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1685858481811061074157fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16610e31565b8080600101915050610701565b505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610840576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e657281525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b7f00000000000000000000000018cef75c2b032d7060e9cf96f29adf74a9a17ce681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a48576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b7f0000000000000000000000005cc61a78f164885776aa610fb0fe1257df78e59b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015610af057507f00000000000000000000000021be370d5312f44cb42ce377bc9b8a0cef1a4c8373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015610b2857508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b610b9a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f5370697269744d616b65723a20496e76616c696420627269646765000000000081525060200191505060405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f2e103aa707acc565f9a1547341914802b2bfe977fd79c595209f248ae4b0061360405160405180910390a35050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d33577f00000000000000000000000021be370d5312f44cb42ce377bc9b8a0cef1a4c8390505b919050565b3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610dd9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f5370697269744d616b65723a206d7573742075736520454f410000000000000081525060200191505060405180910390fd5b610de38282610e31565b5050565b7f000000000000000000000000ef45d134b73241eda7703fa787148d9c9f4950b081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60007f000000000000000000000000ef45d134b73241eda7703fa787148d9c9f4950b073ffffffffffffffffffffffffffffffffffffffff1663e6a4390584846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015610ed857600080fd5b505afa158015610eec573d6000803e3d6000fd5b505050506040513d6020811015610f0257600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610fb8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f5370697269744d616b65723a20496e76616c696420706169720000000000000081525060200191505060405180910390fd5b611084818273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561102357600080fd5b505afa158015611037573d6000803e3d6000fd5b505050506040513d602081101561104d57600080fd5b81019080805190602001909291905050508373ffffffffffffffffffffffffffffffffffffffff166112949092919063ffffffff16565b6000808273ffffffffffffffffffffffffffffffffffffffff166389afcb44306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1681526020019150506040805180830381600087803b1580156110ef57600080fd5b505af1158015611103573d6000803e3d6000fd5b505050506040513d604081101561111957600080fd5b810190808051906020019092919080519060200190929190505050915091508273ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561117e57600080fd5b505afa158015611192573d6000803e3d6000fd5b505050506040513d60208110156111a857600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146111f657808280925081935050505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fd06b1d7ed79b664d17472c6f6997b929f1abe463ccccb4e5b6a0038f2f730c15858561126a8b8b8a8a611477565b60405180848152602001838152602001828152602001935050505060405180910390a45050505050565b600060608473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401808373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b602083106113575780518252602082019150602081019050602083039250611334565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146113b9576040519150601f19603f3d011682016040523d82523d6000602084013e6113be565b606091505b50915091508180156113fe57506000815114806113fd57508080602001905160208110156113eb57600080fd5b81019080805190602001909291905050505b5b611470576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f5361666545524332303a205472616e73666572206661696c656400000000000081525060200191505060405180910390fd5b5050505050565b60008373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156116435760006114c28385611a7e90919063ffffffff16565b90507f0000000000000000000000005cc61a78f164885776aa610fb0fe1257df78e59b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141561158b576115837f00000000000000000000000018cef75c2b032d7060e9cf96f29adf74a9a17ce6827f0000000000000000000000005cc61a78f164885776aa610fb0fe1257df78e59b73ffffffffffffffffffffffffffffffffffffffff166112949092919063ffffffff16565b80915061163d565b7f00000000000000000000000021be370d5312f44cb42ce377bc9b8a0cef1a4c8373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415611610576116097f00000000000000000000000021be370d5312f44cb42ce377bc9b8a0cef1a4c8382611b01565b915061163c565b600061161b87610c76565b905061162987828430611b57565b91506116388182846000611477565b9250505b5b50611a76565b7f0000000000000000000000005cc61a78f164885776aa610fb0fe1257df78e59b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415611725576117027f00000000000000000000000018cef75c2b032d7060e9cf96f29adf74a9a17ce6847f0000000000000000000000005cc61a78f164885776aa610fb0fe1257df78e59b73ffffffffffffffffffffffffffffffffffffffff166112949092919063ffffffff16565b61171e836117108685611b01565b611a7e90919063ffffffff16565b9050611a75565b7f0000000000000000000000005cc61a78f164885776aa610fb0fe1257df78e59b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611807576117e47f00000000000000000000000018cef75c2b032d7060e9cf96f29adf74a9a17ce6837f0000000000000000000000005cc61a78f164885776aa610fb0fe1257df78e59b73ffffffffffffffffffffffffffffffffffffffff166112949092919063ffffffff16565b611800826117f28786611b01565b611a7e90919063ffffffff16565b9050611a74565b7f00000000000000000000000021be370d5312f44cb42ce377bc9b8a0cef1a4c8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156118c9576118c27f00000000000000000000000021be370d5312f44cb42ce377bc9b8a0cef1a4c836118bd856118af887f00000000000000000000000021be370d5312f44cb42ce377bc9b8a0cef1a4c838830611b57565b611a7e90919063ffffffff16565b611b01565b9050611a73565b7f00000000000000000000000021be370d5312f44cb42ce377bc9b8a0cef1a4c8373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561198b576119847f00000000000000000000000021be370d5312f44cb42ce377bc9b8a0cef1a4c8361197f84611971897f00000000000000000000000021be370d5312f44cb42ce377bc9b8a0cef1a4c838930611b57565b611a7e90919063ffffffff16565b611b01565b9050611a72565b600061199686610c76565b905060006119a386610c76565b90508573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156119f7576119f082876119ea8a868a30611b57565b87611477565b9250611a6f565b8673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a4957611a42878287611a3d8a868a30611b57565b611477565b9250611a6e565b611a6b8282611a5a8a868a30611b57565b611a668a868a30611b57565b611477565b92505b5b50505b5b5b5b5b949350505050565b6000818284019150811015611afb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f536166654d6174683a20416464204f766572666c6f770000000000000000000081525060200191505060405180910390fd5b92915050565b6000611b4f837f0000000000000000000000005cc61a78f164885776aa610fb0fe1257df78e59b847f00000000000000000000000018cef75c2b032d7060e9cf96f29adf74a9a17ce6611b57565b905092915050565b6000807f000000000000000000000000ef45d134b73241eda7703fa787148d9c9f4950b073ffffffffffffffffffffffffffffffffffffffff1663e6a4390587876040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015611bff57600080fd5b505afa158015611c13573d6000803e3d6000fd5b505050506040513d6020811015611c2957600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611cdf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f5370697269744d616b65723a2043616e6e6f7420636f6e76657274000000000081525060200191505060405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015611d2857600080fd5b505afa158015611d3c573d6000803e3d6000fd5b505050506040513d6060811015611d5257600080fd5b81019080805190602001909291908051906020019092919080519060200190929190505050506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691506000611db36103e5886121ed90919063ffffffff16565b90508373ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015611dfb57600080fd5b505afa158015611e0f573d6000803e3d6000fd5b505050506040513d6020811015611e2557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16141561202757611e9081611e826103e8866121ed90919063ffffffff16565b611a7e90919063ffffffff16565b611ea383836121ed90919063ffffffff16565b81611eaa57fe5b049450611ed884888b73ffffffffffffffffffffffffffffffffffffffff166112949092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff1663022c0d9f60008789600067ffffffffffffffff81118015611f1057600080fd5b506040519080825280601f01601f191660200182016040528015611f435781602001600182028036833780820191505090505b506040518563ffffffff1660e01b8152600401808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611fbb578082015181840152602081019050611fa0565b50505050905090810190601f168015611fe85780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561200a57600080fd5b505af115801561201e573d6000803e3d6000fd5b505050506121e1565b61204e816120406103e8856121ed90919063ffffffff16565b611a7e90919063ffffffff16565b61206184836121ed90919063ffffffff16565b8161206857fe5b04945061209684888b73ffffffffffffffffffffffffffffffffffffffff166112949092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff1663022c0d9f86600089600067ffffffffffffffff811180156120ce57600080fd5b506040519080825280601f01601f1916602001820160405280156121015781602001600182028036833780820191505090505b506040518563ffffffff1660e01b8152600401808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561217957808201518184015260208101905061215e565b50505050905090810190601f1680156121a65780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156121c857600080fd5b505af11580156121dc573d6000803e3d6000fd5b505050505b50505050949350505050565b60008082148061220a575082828385029250828161220757fe5b04145b61227c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f536166654d6174683a204d756c204f766572666c6f770000000000000000000081525060200191505060405180910390fd5b9291505056fea2646970667358221220d8e8c842c9d8e2f353b9141879df19a157f1142c1515f55aeb570cff7230d24964736f6c634300060c0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000ef45d134b73241eda7703fa787148d9c9f4950b000000000000000000000000018cef75c2b032d7060e9cf96f29adf74a9a17ce60000000000000000000000005cc61a78f164885776aa610fb0fe1257df78e59b00000000000000000000000021be370d5312f44cb42ce377bc9b8a0cef1a4c83

-----Decoded View---------------
Arg [0] : _factory (address): 0xEF45d134b73241eDa7703fa787148D9C9F4950b0
Arg [1] : _dest (address): 0x18CeF75C2b032D7060e9Cf96F29aDF74a9a17ce6
Arg [2] : _spirit (address): 0x5Cc61A78F164885776AA610fb0FE1257df78E59B
Arg [3] : _wftm (address): 0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000ef45d134b73241eda7703fa787148d9c9f4950b0
Arg [1] : 00000000000000000000000018cef75c2b032d7060e9cf96f29adf74a9a17ce6
Arg [2] : 0000000000000000000000005cc61a78f164885776aa610fb0fe1257df78e59b
Arg [3] : 00000000000000000000000021be370d5312f44cb42ce377bc9b8a0cef1a4c83


Deployed Bytecode Sourcemap

507:8676:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;782:515:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3449:358:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1346:377:5;;;:::i;:::-;;754:29:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;344:20:5;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;2048:335:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1808:190;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3229:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;634:42;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;391:27:5;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;782:515;1826:5;;;;;;;;;;1812:19;;:10;:19;;;1804:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;921:6:::1;917:373;;;1013:1;993:22;;:8;:22;;;;:34;;;;1019:8;993:34;967:117;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;1158:8;1130:37;;1151:5;::::0;::::1;;;;;;;;1130:37;;;;;;;;;;;;1190:8;1182:5;::::0;:16:::1;;;;;;;;;;;;;;;;;;917:373;;;1270:8;1255:12;;:23;;;;;;;;;;;;;;;;;;917:373;782:515:::0;;;:::o;3449:358:0:-;2691:9;2677:23;;:10;:23;;;2669:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3671:11:::1;3685:6;;:13;;3671:27;;3714:9;3709:91;3733:3;3729:1;:7;3709:91;;;3758:30;3767:6;;3774:1;3767:9;;;;;;;;;;;;;;;3778:6;;3785:1;3778:9;;;;;;;;;;;;;;;3758:8;:30::i;:::-;3738:3;;;;;;;3709:91;;;;2741:1;3449:358:::0;;;;:::o;1346:377:5:-;1390:21;1414:12;;;;;;;;;;;1390:36;;1494:13;1480:27;;:10;:27;;;1458:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1633:13;1605:42;;1626:5;;;;;;;;;;1605:42;;;;;;;;;;;;1666:13;1658:5;;:21;;;;;;;;;;;;;;;;;;1713:1;1690:12;;:25;;;;;;;;;;;;;;;;;;1346:377;:::o;754:29:0:-;;;:::o;344:20:5:-;;;;;;;;;;;;:::o;2048:335:0:-;1826:5:5;;;;;;;;;;1812:19;;:10;:19;;;1804:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2178:6:0::1;2169:15;;:5;:15;;;;:32;;;;;2197:4;2188:13;;:5;:13;;;;2169:32;:51;;;;;2214:6;2205:15;;:5;:15;;;;2169:51;2147:128;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;2326:6;2308:8;:15;2317:5;2308:15;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;2368:6;2348:27;;2361:5;2348:27;;;;;;;;;;;;2048:335:::0;;:::o;1808:190::-;1863:14;1899:8;:15;1908:5;1899:15;;;;;;;;;;;;;;;;;;;;;;;;;1890:24;;1947:1;1929:20;;:6;:20;;;1925:66;;;1975:4;1966:13;;1925:66;1808:190;;;:::o;3229:109::-;2691:9;2677:23;;:10;:23;;;2669:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3306:24:::1;3315:6;3323;3306:8;:24::i;:::-;3229:109:::0;;:::o;634:42::-;;;:::o;391:27:5:-;;;;;;;;;;;;;:::o;3856:879:0:-;3975:19;4012:7;:15;;;4028:6;4036;4012:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3975:69;;4088:1;4063:27;;4071:4;4063:27;;;;4055:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4200:117;4257:4;4277;:14;;;4300:4;4277:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4215:4;4200:34;;;;:117;;;;;:::i;:::-;4353:15;4370;4389:4;:9;;;4407:4;4389:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4352:61;;;;4438:4;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4428:23;;:6;:23;;;4424:95;;4490:7;4499;4468:39;;;;;;;;4424:95;4605:6;4534:193;;4584:6;4534:193;;4559:10;4534:193;;;4626:7;4648;4670:46;4683:6;4691;4699:7;4708;4670:12;:46::i;:::-;4534:193;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3856:879;;;;;:::o;1002:397:6:-;1121:12;1135:17;1164:5;1156:19;;1213:10;1225:2;1229:6;1190:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1156:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1120:127;;;;1280:7;:57;;;;;1307:1;1292:4;:11;:16;:44;;;;1323:4;1312:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1292:44;1280:57;1258:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:397;;;;;:::o;4855:2729:0:-;5004:17;5073:6;5063:16;;:6;:16;;;5059:2518;;;5096:14;5113:20;5125:7;5113;:11;;:20;;;;:::i;:::-;5096:37;;5162:6;5152:16;;:6;:16;;;5148:448;;;5189:41;5217:4;5223:6;5196;5189:27;;;;:41;;;;;:::i;:::-;5261:6;5249:18;;5148:448;;;5303:4;5293:14;;:6;:14;;;5289:307;;;5340:23;5350:4;5356:6;5340:9;:23::i;:::-;5328:35;;5289:307;;;5404:14;5421:17;5431:6;5421:9;:17::i;:::-;5404:34;;5466:44;5472:6;5480;5488;5504:4;5466:5;:44::i;:::-;5457:53;;5541:39;5554:6;5562;5570;5578:1;5541:12;:39::i;:::-;5529:51;;5289:307;;5148:448;5059:2518;;;;5627:6;5617:16;;:6;:16;;;5613:1964;;;5683:42;5711:4;5717:7;5690:6;5683:27;;;;:42;;;;;:::i;:::-;5752:39;5783:7;5752:26;5762:6;5770:7;5752:9;:26::i;:::-;:30;;:39;;;;:::i;:::-;5740:51;;5613:1964;;;5823:6;5813:16;;:6;:16;;;5809:1768;;;5880:42;5908:4;5914:7;5887:6;5880:27;;;;:42;;;;;:::i;:::-;5949:39;5980:7;5949:26;5959:6;5967:7;5949:9;:26::i;:::-;:30;;:39;;;;:::i;:::-;5937:51;;5809:1768;;;6020:4;6010:14;;:6;:14;;;6006:1571;;;6084:122;6112:4;6135:56;6183:7;6135:43;6141:6;6149:4;6155:7;6172:4;6135:5;:43::i;:::-;:47;;:56;;;;:::i;:::-;6084:9;:122::i;:::-;6072:134;;6006:1571;;;6238:4;6228:14;;:6;:14;;;6224:1353;;;6302:122;6330:4;6353:56;6401:7;6353:43;6359:6;6367:4;6373:7;6390:4;6353:5;:43::i;:::-;:47;;:56;;;;:::i;:::-;6302:9;:122::i;:::-;6290:134;;6224:1353;;;6488:15;6506:17;6516:6;6506:9;:17::i;:::-;6488:35;;6538:15;6556:17;6566:6;6556:9;:17::i;:::-;6538:35;;6603:6;6592:17;;:7;:17;;;6588:978;;;6705:189;6740:7;6770:6;6799:46;6805:6;6813:7;6822;6839:4;6799:5;:46::i;:::-;6868:7;6705:12;:189::i;:::-;6693:201;;6588:978;;;6931:6;6920:17;;:7;:17;;;6916:650;;;7033:189;7068:6;7097:7;7127;7157:46;7163:6;7171:7;7180;7197:4;7157:5;:46::i;:::-;7033:12;:189::i;:::-;7021:201;;6916:650;;;7275:275;7310:7;7340;7416:46;7422:6;7430:7;7439;7456:4;7416:5;:46::i;:::-;7485;7491:6;7499:7;7508;7525:4;7485:5;:46::i;:::-;7275:12;:275::i;:::-;7263:287;;6916:650;6588:978;6224:1353;;;6006:1571;5809:1768;5613:1964;5059:2518;4855:2729;;;;;;:::o;211:139:7:-;269:9;314:1;308;304;:5;300:9;;;299:16;;291:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;211:139;;;;:::o;8977:203:0:-;9065:17;9136:36;9142:5;9149:6;9157:8;9167:4;9136:5;:36::i;:::-;9124:48;;8977:203;;;;:::o;7678:1249::-;7820:17;7893:19;7944:7;:15;;;7960:9;7971:7;7944:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7893:97;;8034:1;8009:27;;8017:4;8009:27;;;;8001:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8131:16;8149;8171:4;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8130:59;;;;;;;;;8200:23;8226:17;8239:3;8226:8;:12;;:17;;;;:::i;:::-;8200:43;;8271:4;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8258:26;;:9;:26;;;8254:666;;;8379:39;8402:15;8379:18;8392:4;8379:8;:12;;:18;;;;:::i;:::-;:22;;:39;;;;:::i;:::-;8330:29;8350:8;8330:15;:19;;:29;;;;:::i;:::-;:88;;;;;;8301:117;;8433:55;8472:4;8479:8;8440:9;8433:30;;;;:55;;;;;:::i;:::-;8503:4;:9;;;8513:1;8516:9;8527:2;8541:1;8531:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8503:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8254:666;;;8699:39;8722:15;8699:18;8712:4;8699:8;:12;;:18;;;;:::i;:::-;:22;;:39;;;;:::i;:::-;8650:29;8670:8;8650:15;:19;;:29;;;;:::i;:::-;:88;;;;;;8621:117;;8753:55;8792:4;8799:8;8760:9;8753:30;;;;:55;;;;;:::i;:::-;8823:4;:9;;;8833;8844:1;8847:2;8861:1;8851:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8823:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8254:666;7678:1249;;;;;;;;;;:::o;502:153:7:-;560:9;595:1;590;:6;:30;;;;619:1;614;609;605;:5;601:9;;;600:15;;;;;;:20;590:30;582:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;502:153;;;;:::o

Swarm Source

ipfs://d8e8c842c9d8e2f353b9141879df19a157f1142c1515f55aeb570cff7230d249

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Txn Hash Block Value Eth2 PubKey Valid
View All Deposits
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.