ETH Price: $3,062.62 (+2.70%)
Gas: 1 Gwei

Contract

0x4f32BbE8dFc9efD54345Fc936f9fEF1048746fCF
 

Overview

ETH Balance

0.000000000000106187 ETH

Eth Value

Less Than $0.01 (@ $3,062.62/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Disable Trade109159342020-09-23 1:56:041382 days ago1600826164IN
0x4f32BbE8...048746fCF
0 ETH0.029404371,001
Withdraw109159262020-09-23 1:54:221382 days ago1600826062IN
0x4f32BbE8...048746fCF
0 ETH0.0033737299
Withdraw109159232020-09-23 1:53:371382 days ago1600826017IN
0x4f32BbE8...048746fCF
0 ETH0.0031967199
Withdraw109158962020-09-23 1:47:171382 days ago1600825637IN
0x4f32BbE8...048746fCF
0 ETH0.0031967199
Withdraw109098032020-09-22 3:10:431383 days ago1600744243IN
0x4f32BbE8...048746fCF
0 ETH0.00395304116
Withdraw109082962020-09-21 21:29:481384 days ago1600723788IN
0x4f32BbE8...048746fCF
0 ETH0.00391897115
Withdraw109069442020-09-21 16:42:041384 days ago1600706524IN
0x4f32BbE8...048746fCF
0 ETH0.01056418310
Withdraw109069212020-09-21 16:37:531384 days ago1600706273IN
0x4f32BbE8...048746fCF
0 ETH0.01056418310
Withdraw109069002020-09-21 16:33:431384 days ago1600706023IN
0x4f32BbE8...048746fCF
0 ETH0.01049602308
Withdraw109056392020-09-21 12:03:371384 days ago1600689817IN
0x4f32BbE8...048746fCF
0 ETH0.0102234300
Withdraw109056132020-09-21 11:59:121384 days ago1600689552IN
0x4f32BbE8...048746fCF
0 ETH0.0102234300
Withdraw109055832020-09-21 11:52:401384 days ago1600689160IN
0x4f32BbE8...048746fCF
0 ETH0.0102234300
Withdraw109055452020-09-21 11:44:081384 days ago1600688648IN
0x4f32BbE8...048746fCF
0 ETH0.0102234300
Withdraw109054352020-09-21 11:18:391384 days ago1600687119IN
0x4f32BbE8...048746fCF
0 ETH0.00937145275
Withdraw109054202020-09-21 11:15:411384 days ago1600686941IN
0x4f32BbE8...048746fCF
0 ETH0.00937145275
Withdraw109050462020-09-21 9:52:591384 days ago1600681979IN
0x4f32BbE8...048746fCF
0 ETH0.0068156200
Withdraw109050122020-09-21 9:46:301384 days ago1600681590IN
0x4f32BbE8...048746fCF
0 ETH0.00626814184
Withdraw109048592020-09-21 9:11:511384 days ago1600679511IN
0x4f32BbE8...048746fCF
0 ETH0.00555471163
Withdraw109047922020-09-21 8:56:441384 days ago1600678604IN
0x4f32BbE8...048746fCF
0 ETH0.00538432158
Withdraw109047342020-09-21 8:44:271384 days ago1600677867IN
0x4f32BbE8...048746fCF
0 ETH0.00504354148
Withdraw109039122020-09-21 5:40:301384 days ago1600666830IN
0x4f32BbE8...048746fCF
0 ETH0.00419159123
Withdraw109037252020-09-21 4:57:371384 days ago1600664257IN
0x4f32BbE8...048746fCF
0 ETH0.0040212118
Withdraw109026702020-09-21 1:01:401384 days ago1600650100IN
0x4f32BbE8...048746fCF
0 ETH0.00374858110
Withdraw109022552020-09-20 23:29:311385 days ago1600644571IN
0x4f32BbE8...048746fCF
0 ETH0.00357819105
Withdraw109015332020-09-20 20:48:111385 days ago1600634891IN
0x4f32BbE8...048746fCF
0 ETH0.0033055697
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To Value
109159262020-09-23 1:54:221382 days ago1600826062
0x4f32BbE8...048746fCF
53.63720909 ETH
109156322020-09-23 0:47:361382 days ago1600822056
0x4f32BbE8...048746fCF
0.57990787 ETH
109152632020-09-22 23:33:381383 days ago1600817618
0x4f32BbE8...048746fCF
0.09135074 ETH
109150952020-09-22 22:58:501383 days ago1600815530
0x4f32BbE8...048746fCF
0.90731419 ETH
109150712020-09-22 22:53:421383 days ago1600815222
0x4f32BbE8...048746fCF
2.50790054 ETH
109148052020-09-22 21:52:401383 days ago1600811560
0x4f32BbE8...048746fCF
46.12987402 ETH
109146722020-09-22 21:21:181383 days ago1600809678
0x4f32BbE8...048746fCF
104.30650944 ETH
109145352020-09-22 20:52:351383 days ago1600807955
0x4f32BbE8...048746fCF
5.20064794 ETH
109145252020-09-22 20:50:391383 days ago1600807839
0x4f32BbE8...048746fCF
2.76722663 ETH
109144852020-09-22 20:41:531383 days ago1600807313
0x4f32BbE8...048746fCF
42.00761589 ETH
109142432020-09-22 19:41:241383 days ago1600803684
0x4f32BbE8...048746fCF
0.2486685 ETH
109142102020-09-22 19:33:331383 days ago1600803213
0x4f32BbE8...048746fCF
6.08020111 ETH
109141432020-09-22 19:21:231383 days ago1600802483
0x4f32BbE8...048746fCF
0.09082224 ETH
109140772020-09-22 19:08:411383 days ago1600801721
0x4f32BbE8...048746fCF
115.71172042 ETH
109139892020-09-22 18:51:581383 days ago1600800718
0x4f32BbE8...048746fCF
4.04890027 ETH
109138432020-09-22 18:19:451383 days ago1600798785
0x4f32BbE8...048746fCF
4.57318345 ETH
109138292020-09-22 18:17:161383 days ago1600798636
0x4f32BbE8...048746fCF
9.83390257 ETH
109137522020-09-22 17:59:321383 days ago1600797572
0x4f32BbE8...048746fCF
0.13681544 ETH
109137172020-09-22 17:50:361383 days ago1600797036
0x4f32BbE8...048746fCF
4.10165254 ETH
109137012020-09-22 17:47:431383 days ago1600796863
0x4f32BbE8...048746fCF
91.97325 ETH
109136622020-09-22 17:38:521383 days ago1600796332
0x4f32BbE8...048746fCF
3.66921624 ETH
109136322020-09-22 17:29:551383 days ago1600795795
0x4f32BbE8...048746fCF
7.29827968 ETH
109134982020-09-22 17:00:131383 days ago1600794013
0x4f32BbE8...048746fCF
130.607 ETH
109134512020-09-22 16:48:131383 days ago1600793293
0x4f32BbE8...048746fCF
0.29215536 ETH
109134162020-09-22 16:39:481383 days ago1600792788
0x4f32BbE8...048746fCF
9.72760636 ETH
View All Internal Transactions
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x607d7751...4fC0F855d
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
KyberReserve

Compiler Version
v0.4.18+commit.9cf6e910

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 1 of 8: KyberReserve.sol
pragma solidity 0.4.18;


import "../ERC20Interface.sol";
import "../Utils.sol";
import "../Withdrawable.sol";
import "../ConversionRatesInterface.sol";
import "../SanityRatesInterface.sol";
import "../KyberReserveInterface.sol";


/// @title Kyber Reserve contract
contract KyberReserve is KyberReserveInterface, Withdrawable, Utils {

    address public kyberNetwork;
    bool public tradeEnabled;
    ConversionRatesInterface public conversionRatesContract;
    SanityRatesInterface public sanityRatesContract;
    mapping(bytes32=>bool) public approvedWithdrawAddresses; // sha3(token,address)=>bool
    mapping(address=>address) public tokenWallet;

    function KyberReserve(address _kyberNetwork, ConversionRatesInterface _ratesContract, address _admin) public {
        require(_admin != address(0));
        require(_ratesContract != address(0));
        require(_kyberNetwork != address(0));
        kyberNetwork = _kyberNetwork;
        conversionRatesContract = _ratesContract;
        admin = _admin;
        tradeEnabled = true;
    }

    event DepositToken(ERC20 token, uint amount);

    function() public payable {
        DepositToken(ETH_TOKEN_ADDRESS, msg.value);
    }

    event TradeExecute(
        address indexed origin,
        address src,
        uint srcAmount,
        address destToken,
        uint destAmount,
        address destAddress
    );

    function trade(
        ERC20 srcToken,
        uint srcAmount,
        ERC20 destToken,
        address destAddress,
        uint conversionRate,
        bool validate
    )
        public
        payable
        returns(bool)
    {
        require(tradeEnabled);
        require(msg.sender == kyberNetwork);

        require(doTrade(srcToken, srcAmount, destToken, destAddress, conversionRate, validate));

        return true;
    }

    event TradeEnabled(bool enable);

    function enableTrade() public onlyAdmin returns(bool) {
        tradeEnabled = true;
        TradeEnabled(true);

        return true;
    }

    function disableTrade() public onlyAlerter returns(bool) {
        tradeEnabled = false;
        TradeEnabled(false);

        return true;
    }

    event WithdrawAddressApproved(ERC20 token, address addr, bool approve);

    function approveWithdrawAddress(ERC20 token, address addr, bool approve) public onlyAdmin {
        approvedWithdrawAddresses[keccak256(token, addr)] = approve;
        WithdrawAddressApproved(token, addr, approve);

        setDecimals(token);
        if ((tokenWallet[token] == address(0x0)) && (token != ETH_TOKEN_ADDRESS)) {
            tokenWallet[token] = this; // by default
            require(token.approve(this, 2 ** 255));
        }
    }

    event NewTokenWallet(ERC20 token, address wallet);

    function setTokenWallet(ERC20 token, address wallet) public onlyAdmin {
        require(wallet != address(0x0));
        tokenWallet[token] = wallet;
        NewTokenWallet(token, wallet);
    }

    event WithdrawFunds(ERC20 token, uint amount, address destination);

    function withdraw(ERC20 token, uint amount, address destination) public onlyOperator returns(bool) {
        require(approvedWithdrawAddresses[keccak256(token, destination)]);

        if (token == ETH_TOKEN_ADDRESS) {
            destination.transfer(amount);
        } else {
            require(token.transferFrom(tokenWallet[token], destination, amount));
        }

        WithdrawFunds(token, amount, destination);

        return true;
    }

    event SetContractAddresses(address network, address rate, address sanity);

    function setContracts(
        address _kyberNetwork,
        ConversionRatesInterface _conversionRates,
        SanityRatesInterface _sanityRates
    )
        public
        onlyAdmin
    {
        require(_kyberNetwork != address(0));
        require(_conversionRates != address(0));

        kyberNetwork = _kyberNetwork;
        conversionRatesContract = _conversionRates;
        sanityRatesContract = _sanityRates;

        SetContractAddresses(kyberNetwork, conversionRatesContract, sanityRatesContract);
    }

    ////////////////////////////////////////////////////////////////////////////
    /// status functions ///////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////
    function getBalance(ERC20 token) public view returns(uint) {
        if (token == ETH_TOKEN_ADDRESS)
            return this.balance;
        else {
            address wallet = tokenWallet[token];
            uint balanceOfWallet = token.balanceOf(wallet);
            uint allowanceOfWallet = token.allowance(wallet, this);

            return (balanceOfWallet < allowanceOfWallet) ? balanceOfWallet : allowanceOfWallet;
        }
    }

    function getDestQty(ERC20 src, ERC20 dest, uint srcQty, uint rate) public view returns(uint) {
        uint dstDecimals = getDecimals(dest);
        uint srcDecimals = getDecimals(src);

        return calcDstQty(srcQty, srcDecimals, dstDecimals, rate);
    }

    function getSrcQty(ERC20 src, ERC20 dest, uint dstQty, uint rate) public view returns(uint) {
        uint dstDecimals = getDecimals(dest);
        uint srcDecimals = getDecimals(src);

        return calcSrcQty(dstQty, srcDecimals, dstDecimals, rate);
    }

    function getConversionRate(ERC20 src, ERC20 dest, uint srcQty, uint blockNumber) public view returns(uint) {
        ERC20 token;
        bool  isBuy;

        if (!tradeEnabled) return 0;

        if (ETH_TOKEN_ADDRESS == src) {
            isBuy = true;
            token = dest;
        } else if (ETH_TOKEN_ADDRESS == dest) {
            isBuy = false;
            token = src;
        } else {
            return 0; // pair is not listed
        }

        uint rate = conversionRatesContract.getRate(token, blockNumber, isBuy, srcQty);
        uint destQty = getDestQty(src, dest, srcQty, rate);

        if (getBalance(dest) < destQty) return 0;

        if (sanityRatesContract != address(0)) {
            uint sanityRate = sanityRatesContract.getSanityRate(src, dest);
            if (rate > sanityRate) return 0;
        }

        return rate;
    }

    /// @dev do a trade
    /// @param srcToken Src token
    /// @param srcAmount Amount of src token
    /// @param destToken Destination token
    /// @param destAddress Destination address to send tokens to
    /// @param validate If true, additional validations are applicable
    /// @return true iff trade is successful
    function doTrade(
        ERC20 srcToken,
        uint srcAmount,
        ERC20 destToken,
        address destAddress,
        uint conversionRate,
        bool validate
    )
        internal
        returns(bool)
    {
        // can skip validation if done at kyber network level
        if (validate) {
            require(conversionRate > 0);
            if (srcToken == ETH_TOKEN_ADDRESS)
                require(msg.value == srcAmount);
            else
                require(msg.value == 0);
        }

        uint destAmount = getDestQty(srcToken, destToken, srcAmount, conversionRate);
        // sanity check
        require(destAmount > 0);

        // add to imbalance
        ERC20 token;
        int tradeAmount;
        if (srcToken == ETH_TOKEN_ADDRESS) {
            tradeAmount = int(destAmount);
            token = destToken;
        } else {
            tradeAmount = -1 * int(srcAmount);
            token = srcToken;
        }

        conversionRatesContract.recordImbalance(
            token,
            tradeAmount,
            0,
            block.number
        );

        // collect src tokens
        if (srcToken != ETH_TOKEN_ADDRESS) {
            require(srcToken.transferFrom(msg.sender, tokenWallet[srcToken], srcAmount));
        }

        // send dest tokens
        if (destToken == ETH_TOKEN_ADDRESS) {
            destAddress.transfer(destAmount);
        } else {
            require(destToken.transferFrom(tokenWallet[destToken], destAddress, destAmount));
        }

        TradeExecute(msg.sender, srcToken, srcAmount, destToken, destAmount, destAddress);

        return true;
    }
}

File 2 of 8: ConversionRatesInterface.sol
pragma solidity 0.4.18;


import "./ERC20Interface.sol";


interface ConversionRatesInterface {

    function recordImbalance(
        ERC20 token,
        int buyAmount,
        uint rateUpdateBlock,
        uint currentBlock
    )
        public;

    function getRate(ERC20 token, uint currentBlockNumber, bool buy, uint qty) public view returns(uint);
}

File 3 of 8: ERC20Interface.sol
pragma solidity 0.4.18;


// https://github.com/ethereum/EIPs/issues/20
interface ERC20 {
    function totalSupply() public view returns (uint supply);
    function balanceOf(address _owner) public view returns (uint balance);
    function transfer(address _to, uint _value) public returns (bool success);
    function transferFrom(address _from, address _to, uint _value) public returns (bool success);
    function approve(address _spender, uint _value) public returns (bool success);
    function allowance(address _owner, address _spender) public view returns (uint remaining);
    function decimals() public view returns(uint digits);
    event Approval(address indexed _owner, address indexed _spender, uint _value);
}

File 4 of 8: KyberReserveInterface.sol
pragma solidity 0.4.18;


import "./ERC20Interface.sol";

/// @title Kyber Reserve contract
interface KyberReserveInterface {

    function trade(
        ERC20 srcToken,
        uint srcAmount,
        ERC20 destToken,
        address destAddress,
        uint conversionRate,
        bool validate
    )
        public
        payable
        returns(bool);

    function getConversionRate(ERC20 src, ERC20 dest, uint srcQty, uint blockNumber) public view returns(uint);
}

File 5 of 8: PermissionGroups.sol
pragma solidity 0.4.18;


contract PermissionGroups {

    address public admin;
    address public pendingAdmin;
    mapping(address=>bool) internal operators;
    mapping(address=>bool) internal alerters;
    address[] internal operatorsGroup;
    address[] internal alertersGroup;
    uint constant internal MAX_GROUP_SIZE = 50;

    function PermissionGroups() public {
        admin = msg.sender;
    }

    modifier onlyAdmin() {
        require(msg.sender == admin);
        _;
    }

    modifier onlyOperator() {
        require(operators[msg.sender]);
        _;
    }

    modifier onlyAlerter() {
        require(alerters[msg.sender]);
        _;
    }

    function getOperators () external view returns(address[]) {
        return operatorsGroup;
    }

    function getAlerters () external view returns(address[]) {
        return alertersGroup;
    }

    event TransferAdminPending(address pendingAdmin);

    /**
     * @dev Allows the current admin to set the pendingAdmin address.
     * @param newAdmin The address to transfer ownership to.
     */
    function transferAdmin(address newAdmin) public onlyAdmin {
        require(newAdmin != address(0));
        TransferAdminPending(pendingAdmin);
        pendingAdmin = newAdmin;
    }

    /**
     * @dev Allows the current admin to set the admin in one tx. Useful initial deployment.
     * @param newAdmin The address to transfer ownership to.
     */
    function transferAdminQuickly(address newAdmin) public onlyAdmin {
        require(newAdmin != address(0));
        TransferAdminPending(newAdmin);
        AdminClaimed(newAdmin, admin);
        admin = newAdmin;
    }

    event AdminClaimed( address newAdmin, address previousAdmin);

    /**
     * @dev Allows the pendingAdmin address to finalize the change admin process.
     */
    function claimAdmin() public {
        require(pendingAdmin == msg.sender);
        AdminClaimed(pendingAdmin, admin);
        admin = pendingAdmin;
        pendingAdmin = address(0);
    }

    event AlerterAdded (address newAlerter, bool isAdd);

    function addAlerter(address newAlerter) public onlyAdmin {
        require(!alerters[newAlerter]); // prevent duplicates.
        require(alertersGroup.length < MAX_GROUP_SIZE);

        AlerterAdded(newAlerter, true);
        alerters[newAlerter] = true;
        alertersGroup.push(newAlerter);
    }

    function removeAlerter (address alerter) public onlyAdmin {
        require(alerters[alerter]);
        alerters[alerter] = false;

        for (uint i = 0; i < alertersGroup.length; ++i) {
            if (alertersGroup[i] == alerter) {
                alertersGroup[i] = alertersGroup[alertersGroup.length - 1];
                alertersGroup.length--;
                AlerterAdded(alerter, false);
                break;
            }
        }
    }

    event OperatorAdded(address newOperator, bool isAdd);

    function addOperator(address newOperator) public onlyAdmin {
        require(!operators[newOperator]); // prevent duplicates.
        require(operatorsGroup.length < MAX_GROUP_SIZE);

        OperatorAdded(newOperator, true);
        operators[newOperator] = true;
        operatorsGroup.push(newOperator);
    }

    function removeOperator (address operator) public onlyAdmin {
        require(operators[operator]);
        operators[operator] = false;

        for (uint i = 0; i < operatorsGroup.length; ++i) {
            if (operatorsGroup[i] == operator) {
                operatorsGroup[i] = operatorsGroup[operatorsGroup.length - 1];
                operatorsGroup.length -= 1;
                OperatorAdded(operator, false);
                break;
            }
        }
    }
}

File 6 of 8: SanityRatesInterface.sol
pragma solidity 0.4.18;


import "./ERC20Interface.sol";

interface SanityRatesInterface {
    function getSanityRate(ERC20 src, ERC20 dest) public view returns(uint);
}

File 7 of 8: Utils.sol
pragma solidity 0.4.18;


import "./ERC20Interface.sol";


/// @title Kyber constants contract
contract Utils {

    ERC20 constant internal ETH_TOKEN_ADDRESS = ERC20(0x00eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee);
    uint  constant internal PRECISION = (10**18);
    uint  constant internal MAX_QTY   = (10**28); // 10B tokens
    uint  constant internal MAX_RATE  = (PRECISION * 10**6); // up to 1M tokens per ETH
    uint  constant internal MAX_DECIMALS = 18;
    uint  constant internal ETH_DECIMALS = 18;
    mapping(address=>uint) internal decimals;

    function setDecimals(ERC20 token) internal {
        if (token == ETH_TOKEN_ADDRESS) decimals[token] = ETH_DECIMALS;
        else decimals[token] = token.decimals();
    }

    function getDecimals(ERC20 token) internal view returns(uint) {
        if (token == ETH_TOKEN_ADDRESS) return ETH_DECIMALS; // save storage access
        uint tokenDecimals = decimals[token];
        // technically, there might be token with decimals 0
        // moreover, very possible that old tokens have decimals 0
        // these tokens will just have higher gas fees.
        if(tokenDecimals == 0) return token.decimals();

        return tokenDecimals;
    }

    function calcDstQty(uint srcQty, uint srcDecimals, uint dstDecimals, uint rate) internal pure returns(uint) {
        require(srcQty <= MAX_QTY);
        require(rate <= MAX_RATE);

        if (dstDecimals >= srcDecimals) {
            require((dstDecimals - srcDecimals) <= MAX_DECIMALS);
            return (srcQty * rate * (10**(dstDecimals - srcDecimals))) / PRECISION;
        } else {
            require((srcDecimals - dstDecimals) <= MAX_DECIMALS);
            return (srcQty * rate) / (PRECISION * (10**(srcDecimals - dstDecimals)));
        }
    }

    function calcSrcQty(uint dstQty, uint srcDecimals, uint dstDecimals, uint rate) internal pure returns(uint) {
        require(dstQty <= MAX_QTY);
        require(rate <= MAX_RATE);
        
        //source quantity is rounded up. to avoid dest quantity being too low.
        uint numerator;
        uint denominator;
        if (srcDecimals >= dstDecimals) {
            require((srcDecimals - dstDecimals) <= MAX_DECIMALS);
            numerator = (PRECISION * dstQty * (10**(srcDecimals - dstDecimals)));
            denominator = rate;
        } else {
            require((dstDecimals - srcDecimals) <= MAX_DECIMALS);
            numerator = (PRECISION * dstQty);
            denominator = (rate * (10**(dstDecimals - srcDecimals)));
        }
        return (numerator + denominator - 1) / denominator; //avoid rounding down errors
    }
}

File 8 of 8: Withdrawable.sol
pragma solidity 0.4.18;


import "./ERC20Interface.sol";
import "./PermissionGroups.sol";


/**
 * @title Contracts that should be able to recover tokens or ethers
 * @author Ilan Doron
 * @dev This allows to recover any tokens or Ethers received in a contract.
 * This will prevent any accidental loss of tokens.
 */
contract Withdrawable is PermissionGroups {

    event TokenWithdraw(ERC20 token, uint amount, address sendTo);

    /**
     * @dev Withdraw all ERC20 compatible tokens
     * @param token ERC20 The address of the token contract
     */
    function withdrawToken(ERC20 token, uint amount, address sendTo) external onlyAdmin {
        require(token.transfer(sendTo, amount));
        TokenWithdraw(token, amount, sendTo);
    }

    event EtherWithdraw(uint amount, address sendTo);

    /**
     * @dev Withdraw Ethers
     */
    function withdrawEther(uint amount, address sendTo) external onlyAdmin {
        sendTo.transfer(amount);
        EtherWithdraw(amount, sendTo);
    }
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[],"name":"enableTrade","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"alerter","type":"address"}],"name":"removeAlerter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"wallet","type":"address"}],"name":"setTokenWallet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"pendingAdmin","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getOperators","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"amount","type":"uint256"},{"name":"sendTo","type":"address"}],"name":"withdrawToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newAlerter","type":"address"}],"name":"addAlerter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"sanityRatesContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"addr","type":"address"},{"name":"approve","type":"bool"}],"name":"approveWithdrawAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"amount","type":"uint256"},{"name":"destination","type":"address"}],"name":"withdraw","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"disableTrade","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"srcToken","type":"address"},{"name":"srcAmount","type":"uint256"},{"name":"destToken","type":"address"},{"name":"destAddress","type":"address"},{"name":"conversionRate","type":"uint256"},{"name":"validate","type":"bool"}],"name":"trade","outputs":[{"name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"newAdmin","type":"address"}],"name":"transferAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"claimAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newAdmin","type":"address"}],"name":"transferAdminQuickly","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getAlerters","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"src","type":"address"},{"name":"dest","type":"address"},{"name":"srcQty","type":"uint256"},{"name":"blockNumber","type":"uint256"}],"name":"getConversionRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOperator","type":"address"}],"name":"addOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"src","type":"address"},{"name":"dest","type":"address"},{"name":"dstQty","type":"uint256"},{"name":"rate","type":"uint256"}],"name":"getSrcQty","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"tokenWallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"operator","type":"address"}],"name":"removeOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_kyberNetwork","type":"address"},{"name":"_conversionRates","type":"address"},{"name":"_sanityRates","type":"address"}],"name":"setContracts","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"kyberNetwork","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"},{"name":"sendTo","type":"address"}],"name":"withdrawEther","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"conversionRatesContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tradeEnabled","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"approvedWithdrawAddresses","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"admin","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"token","type":"address"}],"name":"getBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"src","type":"address"},{"name":"dest","type":"address"},{"name":"srcQty","type":"uint256"},{"name":"rate","type":"uint256"}],"name":"getDestQty","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_kyberNetwork","type":"address"},{"name":"_ratesContract","type":"address"},{"name":"_admin","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"DepositToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"origin","type":"address"},{"indexed":false,"name":"src","type":"address"},{"indexed":false,"name":"srcAmount","type":"uint256"},{"indexed":false,"name":"destToken","type":"address"},{"indexed":false,"name":"destAmount","type":"uint256"},{"indexed":false,"name":"destAddress","type":"address"}],"name":"TradeExecute","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"enable","type":"bool"}],"name":"TradeEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"addr","type":"address"},{"indexed":false,"name":"approve","type":"bool"}],"name":"WithdrawAddressApproved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"wallet","type":"address"}],"name":"NewTokenWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"destination","type":"address"}],"name":"WithdrawFunds","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"network","type":"address"},{"indexed":false,"name":"rate","type":"address"},{"indexed":false,"name":"sanity","type":"address"}],"name":"SetContractAddresses","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"sendTo","type":"address"}],"name":"TokenWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"sendTo","type":"address"}],"name":"EtherWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"pendingAdmin","type":"address"}],"name":"TransferAdminPending","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newAdmin","type":"address"},{"indexed":false,"name":"previousAdmin","type":"address"}],"name":"AdminClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newAlerter","type":"address"},{"indexed":false,"name":"isAdd","type":"bool"}],"name":"AlerterAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newOperator","type":"address"},{"indexed":false,"name":"isAdd","type":"bool"}],"name":"OperatorAdded","type":"event"}]

Deployed Bytecode

0x6060604052600436106101655763ffffffff60e060020a60003504166299d38681146101b957806301a12fd3146101e05780631bc7bfec14610201578063267822471461022657806327a099d8146102555780633ccdbb28146102bb578063408ee7fe146102e457806347e6924f14610303578063546dc71c1461031657806369328dec146103405780636940030f146103695780636cf698111461037c57806375829def146103a857806377f50f97146103c75780637acc8678146103da5780637c423f54146103f95780637cd442721461040c5780639870d7fe14610449578063a7fca95314610468578063a80cbac614610493578063ac8a584a146104b2578063b3066d49146104d1578063b78b842d146104fc578063ce56c4541461050f578063d5847d3314610531578063d621e81314610544578063d7b7024d14610557578063f851a4401461056d578063f8b2cb4f14610580578063fa64dffa1461059f575b7f2d0c0a8842b9944ece1495eb61121621b5e36bd6af3bba0318c695f525aef79f60008051602061204983398151915234604051600160a060020a03909216825260208201526040908101905180910390a1005b34156101c457600080fd5b6101cc6105ca565b604051901515815260200160405180910390f35b34156101eb57600080fd5b6101ff600160a060020a0360043516610658565b005b341561020c57600080fd5b6101ff600160a060020a03600435811690602435166107c8565b341561023157600080fd5b610239610874565b604051600160a060020a03909116815260200160405180910390f35b341561026057600080fd5b610268610883565b60405160208082528190810183818151815260200191508051906020019060200280838360005b838110156102a757808201518382015260200161028f565b505050509050019250505060405180910390f35b34156102c657600080fd5b6101ff600160a060020a0360043581169060243590604435166108eb565b34156102ef57600080fd5b6101ff600160a060020a03600435166109e2565b341561030e57600080fd5b610239610ade565b341561032157600080fd5b6101ff600160a060020a03600435811690602435166044351515610aed565b341561034b57600080fd5b6101cc600160a060020a036004358116906024359060443516610cd7565b341561037457600080fd5b6101cc610eb0565b6101cc600160a060020a03600435811690602435906044358116906064351660843560a4351515610f31565b34156103b357600080fd5b6101ff600160a060020a0360043516610f9e565b34156103d257600080fd5b6101ff611039565b34156103e557600080fd5b6101ff600160a060020a03600435166110d3565b341561040457600080fd5b6102686111b5565b341561041757600080fd5b610437600160a060020a036004358116906024351660443560643561121b565b60405190815260200160405180910390f35b341561045457600080fd5b6101ff600160a060020a0360043516611406565b341561047357600080fd5b610437600160a060020a03600435811690602435166044356064356114d6565b341561049e57600080fd5b610239600160a060020a0360043516611508565b34156104bd57600080fd5b6101ff600160a060020a0360043516611523565b34156104dc57600080fd5b6101ff600160a060020a036004358116906024358116906044351661168f565b341561050757600080fd5b610239611773565b341561051a57600080fd5b6101ff600435600160a060020a0360243516611782565b341561053c57600080fd5b610239611815565b341561054f57600080fd5b6101cc611824565b341561056257600080fd5b6101cc600435611845565b341561057857600080fd5b61023961185a565b341561058b57600080fd5b610437600160a060020a0360043516611869565b34156105aa57600080fd5b610437600160a060020a03600435811690602435166044356064356119bd565b6000805433600160a060020a039081169116146105e657600080fd5b6007805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001790557f7d7f00509dd73ac4449f698ae75ccc797895eff5fa9d446d3df387598a26e7356001604051901515815260200160405180910390a15060015b90565b6000805433600160a060020a0390811691161461067457600080fd5b600160a060020a03821660009081526003602052604090205460ff16151561069b57600080fd5b50600160a060020a0381166000908152600360205260408120805460ff191690555b6005548110156107c45781600160a060020a03166005828154811015156106e057fe5b600091825260209091200154600160a060020a031614156107bc5760058054600019810190811061070d57fe5b60009182526020909120015460058054600160a060020a03909216918390811061073357fe5b60009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055600580549061076f906000198301611ff4565b507f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762826000604051600160a060020a039092168252151560208201526040908101905180910390a16107c4565b6001016106bd565b5050565b60005433600160a060020a039081169116146107e357600080fd5b600160a060020a03811615156107f857600080fd5b600160a060020a038281166000908152600b6020526040908190208054600160a060020a031916928416929092179091557f81995c7b922889ac0a81e41866106d4046268ea3a9abaae9f9e080a6ce36ee7d908390839051600160a060020a039283168152911660208201526040908101905180910390a15050565b600154600160a060020a031681565b61088b612018565b60048054806020026020016040519081016040528092919081815260200182805480156108e157602002820191906000526020600020905b8154600160a060020a031681526001909101906020018083116108c3575b5050505050905090565b60005433600160a060020a0390811691161461090657600080fd5b82600160a060020a031663a9059cbb828460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561096357600080fd5b6102c65a03f1151561097457600080fd5b50505060405180519050151561098957600080fd5b7f72cb8a894ddb372ceec3d2a7648d86f17d5a15caae0e986c53109b8a9a9385e6838383604051600160a060020a03938416815260208101929092529091166040808301919091526060909101905180910390a1505050565b60005433600160a060020a039081169116146109fd57600080fd5b600160a060020a03811660009081526003602052604090205460ff1615610a2357600080fd5b60055460329010610a3357600080fd5b7f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762816001604051600160a060020a039092168252151560208201526040908101905180910390a1600160a060020a0381166000908152600360205260409020805460ff191660019081179091556005805490918101610ab28382611ff4565b5060009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055565b600954600160a060020a031681565b60005433600160a060020a03908116911614610b0857600080fd5b80600a600085856040516c01000000000000000000000000600160a060020a039384168102825291909216026014820152602801604051908190039020815260208101919091526040908101600020805460ff1916921515929092179091557fd5fd5351efae1f4bb760079da9f0ff9589e2c3e216337ca9d39cdff573b245c49084908490849051600160a060020a0393841681529190921660208201529015156040808301919091526060909101905180910390a1610bc7836119e4565b600160a060020a038381166000908152600b602052604090205416158015610c065750600160a060020a03831660008051602061204983398151915214155b15610cd257600160a060020a038381166000818152600b60205260408082208054600160a060020a03191630958616179055919263095ea7b39290917f800000000000000000000000000000000000000000000000000000000000000091516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610cac57600080fd5b6102c65a03f11515610cbd57600080fd5b505050604051805190501515610cd257600080fd5b505050565b600160a060020a03331660009081526002602052604081205460ff161515610cfe57600080fd5b600a600085846040516c01000000000000000000000000600160a060020a039384168102825291909216026014820152602801604051908190039020815260208101919091526040016000205460ff161515610d5957600080fd5b600160a060020a0384166000805160206120498339815191521415610dae57600160a060020a03821683156108fc0284604051600060405180830381858888f193505050501515610da957600080fd5b610e52565b600160a060020a038085166000818152600b60205260408082205492936323b872dd9316918691889190516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b1515610e2c57600080fd5b6102c65a03f11515610e3d57600080fd5b505050604051805190501515610e5257600080fd5b7fb67719fc33c1f17d31bf3a698690d62066b1e0bae28fcd3c56cf2c015c2863d6848484604051600160a060020a03938416815260208101929092529091166040808301919091526060909101905180910390a15060019392505050565b600160a060020a03331660009081526003602052604081205460ff161515610ed757600080fd5b6007805474ff0000000000000000000000000000000000000000191690557f7d7f00509dd73ac4449f698ae75ccc797895eff5fa9d446d3df387598a26e7356000604051901515815260200160405180910390a150600190565b60075460009074010000000000000000000000000000000000000000900460ff161515610f5d57600080fd5b60075433600160a060020a03908116911614610f7857600080fd5b610f86878787878787611aa1565b1515610f9157600080fd5b5060019695505050505050565b60005433600160a060020a03908116911614610fb957600080fd5b600160a060020a0381161515610fce57600080fd5b6001547f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc4090600160a060020a0316604051600160a060020a03909116815260200160405180910390a160018054600160a060020a031916600160a060020a0392909216919091179055565b60015433600160a060020a0390811691161461105457600080fd5b6001546000547f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed91600160a060020a039081169116604051600160a060020a039283168152911660208201526040908101905180910390a16001805460008054600160a060020a0319908116600160a060020a03841617909155169055565b60005433600160a060020a039081169116146110ee57600080fd5b600160a060020a038116151561110357600080fd5b7f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc4081604051600160a060020a03909116815260200160405180910390a16000547f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed908290600160a060020a0316604051600160a060020a039283168152911660208201526040908101905180910390a160008054600160a060020a031916600160a060020a0392909216919091179055565b6111bd612018565b60058054806020026020016040519081016040528092919081815260200182805480156108e157602002820191906000526020600020908154600160a060020a031681526001909101906020018083116108c3575050505050905090565b600080600080600080600760149054906101000a900460ff16151561124357600095506113f9565b600080516020612049833981519152600160a060020a038b16141561126e57600193508894506112a2565b600080516020612049833981519152600160a060020a038a16141561129957600093508994506112a2565b600095506113f9565b600854600160a060020a031663b8e9c22e8689878c60006040516020015260405160e060020a63ffffffff8716028152600160a060020a0390941660048501526024840192909252151560448301526064820152608401602060405180830381600087803b151561131257600080fd5b6102c65a03f1151561132357600080fd5b50505060405180519050925061133b8a8a8a866119bd565b9150816113478a611869565b101561135657600095506113f9565b600954600160a060020a0316156113f557600954600160a060020a031663a58092b78b8b60006040516020015260405160e060020a63ffffffff8516028152600160a060020a03928316600482015291166024820152604401602060405180830381600087803b15156113c857600080fd5b6102c65a03f115156113d957600080fd5b5050506040518051915050808311156113f557600095506113f9565b8295505b5050505050949350505050565b60005433600160a060020a0390811691161461142157600080fd5b600160a060020a03811660009081526002602052604090205460ff161561144757600080fd5b6004546032901061145757600080fd5b7f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b816001604051600160a060020a039092168252151560208201526040908101905180910390a1600160a060020a0381166000908152600260205260409020805460ff191660019081179091556004805490918101610ab28382611ff4565b60008060006114e486611df6565b91506114ef87611df6565b90506114fd85828487611eb4565b979650505050505050565b600b60205260009081526040902054600160a060020a031681565b6000805433600160a060020a0390811691161461153f57600080fd5b600160a060020a03821660009081526002602052604090205460ff16151561156657600080fd5b50600160a060020a0381166000908152600260205260408120805460ff191690555b6004548110156107c45781600160a060020a03166004828154811015156115ab57fe5b600091825260209091200154600160a060020a03161415611687576004805460001981019081106115d857fe5b60009182526020909120015460048054600160a060020a0390921691839081106115fe57fe5b60009182526020909120018054600160a060020a031916600160a060020a039290921691909117905560048054600019019061163a9082611ff4565b507f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b826000604051600160a060020a039092168252151560208201526040908101905180910390a16107c4565b600101611588565b60005433600160a060020a039081169116146116aa57600080fd5b600160a060020a03831615156116bf57600080fd5b600160a060020a03821615156116d457600080fd5b60078054600160a060020a03808616600160a060020a0319928316179283905560088054868316908416179081905560098054868416941693909317928390557f7a85322644a4462d8ff5482d2a841a4d231f8cfb3c9f4a50f66f8b2bd568c31c938216929082169116604051600160a060020a03938416815291831660208301529091166040808301919091526060909101905180910390a1505050565b600754600160a060020a031681565b60005433600160a060020a0390811691161461179d57600080fd5b600160a060020a03811682156108fc0283604051600060405180830381858888f1935050505015156117ce57600080fd5b7fec47e7ed86c86774d1a72c19f35c639911393fe7c1a34031fdbd260890da90de8282604051918252600160a060020a031660208201526040908101905180910390a15050565b600854600160a060020a031681565b60075474010000000000000000000000000000000000000000900460ff1681565b600a6020526000908152604090205460ff1681565b600054600160a060020a031681565b6000808080600160a060020a038516600080516020612049833981519152141561189f5730600160a060020a03163193506119b5565b600160a060020a038086166000818152600b602052604080822054909316955090916370a08231918691516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561190c57600080fd5b6102c65a03f1151561191d57600080fd5b5050506040518051925050600160a060020a03851663dd62ed3e843060006040516020015260405160e060020a63ffffffff8516028152600160a060020a03928316600482015291166024820152604401602060405180830381600087803b151561198757600080fd5b6102c65a03f1151561199857600080fd5b50505060405180519150508082106119b057806119b2565b815b93505b505050919050565b60008060006119cb86611df6565b91506119d687611df6565b90506114fd85828487611f5b565b600160a060020a0381166000805160206120498339815191521415611a2457600160a060020a038116600090815260066020526040902060129055611a9e565b80600160a060020a031663313ce5676000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611a6a57600080fd5b6102c65a03f11515611a7b57600080fd5b5050506040518051600160a060020a038316600090815260066020526040902055505b50565b6000806000808415611af55760008611611aba57600080fd5b600160a060020a038a166000805160206120498339815191521415611aea57348914611ae557600080fd5b611af5565b3415611af557600080fd5b611b018a898b896119bd565b925060008311611b1057600080fd5b600160a060020a038a166000805160206120498339815191521415611b39575086905081611b43565b5088905060001988025b600854600160a060020a031663c6fd2103838360004360405160e060020a63ffffffff8716028152600160a060020a039094166004850152602484019290925260448301526064820152608401600060405180830381600087803b1515611ba957600080fd5b6102c65a03f11515611bba57600080fd5b505050600160a060020a038a1660008051602061204983398151915214611c8057600160a060020a03808b166000818152600b60205260408082205492936323b872dd9333939116918e9190516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b1515611c5a57600080fd5b6102c65a03f11515611c6b57600080fd5b505050604051805190501515611c8057600080fd5b600160a060020a0388166000805160206120498339815191521415611cd557600160a060020a03871683156108fc0284604051600060405180830381858888f193505050501515611cd057600080fd5b611d79565b600160a060020a038089166000818152600b60205260408082205492936323b872dd9316918b91889190516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b1515611d5357600080fd5b6102c65a03f11515611d6457600080fd5b505050604051805190501515611d7957600080fd5b33600160a060020a03167fea9415385bae08fe9f6dc457b02577166790cde83bb18cc340aac6cb81b824de8b8b8b878c604051600160a060020a039586168152602081019490945291841660408085019190915260608401919091529216608082015260a001905180910390a25060019998505050505050505050565b600080600160a060020a0383166000805160206120498339815191521415611e215760129150611eae565b50600160a060020a038216600090815260066020526040902054801515611eaa5782600160a060020a031663313ce5676000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611e8857600080fd5b6102c65a03f11515611e9957600080fd5b505050604051805190509150611eae565b8091505b50919050565b600080806b204fce5e3e25026110000000871115611ed157600080fd5b69d3c21bcecceda1000000841115611ee857600080fd5b848610611f195760128587031115611eff57600080fd5b5050828403600a0a8502670de0b6b3a76400000282611f3f565b60128686031115611f2957600080fd5b5050670de0b6b3a76400008502848403600a0a83025b80600182840103811515611f4f57fe5b04979650505050505050565b60006b204fce5e3e25026110000000851115611f7657600080fd5b69d3c21bcecceda1000000821115611f8d57600080fd5b838310611fc05760128484031115611fa457600080fd5b670de0b6b3a7640000858302858503600a0a025b049050611fec565b60128385031115611fd057600080fd5b828403600a0a670de0b6b3a764000002828602811515611fb857fe5b949350505050565b815481835581811511610cd257600083815260209020610cd291810190830161202a565b60206040519081016040526000815290565b61065591905b808211156120445760008155600101612030565b50905600000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeea165627a7a7230582087e29ebe334f57d7c929fdeb3b935848f9374fcdd281e91cdff704b5774109960029

Deployed Bytecode Sourcemap

266:7864:2:-;;;;;;;;;-1:-1:-1;;;266:7864:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1141:42;-1:-1:-1;;;;;;;;;;;1173:9:2;1141:42;;-1:-1:-1;;;;;1141:42:2;;;;;;;;;;;;;;;;;;;;266:7864;1864:140;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2381:451:4;;;;;;;;;;-1:-1:-1;;;;;2381:451:4;;;;;;;2749:194:2;;;;;;;;;;-1:-1:-1;;;;;2749:194:2;;;;;;;;;;85:27:4;;;;;;;;;;;;;;;-1:-1:-1;;;;;85:27:4;;;;;;;;;;;;;;670:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;71:3;;;64:6;52:2;45:3;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;560:186:7;;;;;;;;;;-1:-1:-1;;;;;560:186:7;;;;;;;;;;;;;2074:301:4;;;;;;;;;;-1:-1:-1;;;;;2074:301:4;;;;;465:47:2;;;;;;;;;;;;2238:449;;;;;;;;;;-1:-1:-1;;;;;2238:449:2;;;;;;;;;;;;;;3022;;;;;;;;;;-1:-1:-1;;;;;3022:449:2;;;;;;;;;;;;;2010:145;;;;;;;;;;;;1385:435;;-1:-1:-1;;;;;1385:435:2;;;;;;;;;;;;;;;;;;;;;;;;1074:183:4;;;;;;;;;;-1:-1:-1;;;;;1074:183:4;;;;;1821:189;;;;;;;;;;;;1432:218;;;;;;;;;;-1:-1:-1;;;;;1432:218:4;;;;;772:94;;;;;;;;;;;;5297:861:2;;;;;;;;;;-1:-1:-1;;;;;5297:861:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2897:312:4;;;;;;;;;;-1:-1:-1;;;;;2897:312:4;;;;;5033:258:2;;;;;;;;;;-1:-1:-1;;;;;5033:258:2;;;;;;;;;;;;;;608:44;;;;;;;;;;-1:-1:-1;;;;;608:44:2;;;;;3215:469:4;;;;;;;;;;-1:-1:-1;;;;;3215:469:4;;;;;3557:518:2;;;;;;;;;;-1:-1:-1;;;;;3557:518:2;;;;;;;;;;;;;;;341:27;;;;;;;;;;;;851:150:7;;;;;;;;;;;;-1:-1:-1;;;;;851:150:7;;;;;404:55:2;;;;;;;;;;;;374:24;;;;;;;;;;;;518:55;;;;;;;;;;;;;;59:20:4;;;;;;;;;;;;4324:438:2;;;;;;;;;;-1:-1:-1;;;;;4324:438:2;;;;;4768:259;;;;;;;;;;-1:-1:-1;;;;;4768:259:2;;;;;;;;;;;;;;1864:140;1912:4;466:5:4;;452:10;-1:-1:-1;;;;;452:19:4;;;466:5;;452:19;444:28;;;;;;1928:12:2;:19;;-1:-1:-1;;1928:19:2;;;;;1957:18;1943:4;1957:18;;;;;;;;;;;;;;;;-1:-1:-1;1993:4:2;482:1:4;1864:140:2;:::o;2381:451:4:-;2526:6;466:5;;452:10;-1:-1:-1;;;;;452:19:4;;;466:5;;452:19;444:28;;;;;;-1:-1:-1;;;;;2457:17:4;;;;;;:8;:17;;;;;;;;2449:26;;;;;;;;-1:-1:-1;;;;;;2485:17:4;;2505:5;2485:17;;;:8;:17;;;;;:25;;-1:-1:-1;;2485:25:4;;;2521:305;2542:13;:20;2538:24;;2521:305;;;2607:7;-1:-1:-1;;;;;2587:27:4;:13;2601:1;2587:16;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2587:16:4;:27;2583:233;;;2653:13;2667:20;;-1:-1:-1;;2667:24:4;;;2653:39;;;;;;;;;;;;;;;;2634:13;:16;;-1:-1:-1;;;;;2653:39:4;;;;2648:1;;2634:16;;;;;;;;;;;;;;;:58;;-1:-1:-1;;;;;;2634:58:4;-1:-1:-1;;;;;2634:58:4;;;;;;;;;;2710:13;:22;;;;;-1:-1:-1;;2710:22:4;;;:::i;:::-;;2750:28;2763:7;2772:5;2750:28;;-1:-1:-1;;;;;2750:28:4;;;;;;;;;;;;;;;;;;;;;;2796:5;;2583:233;2564:3;;2521:305;;;2381:451;;:::o;2749:194:2:-;466:5:4;;452:10;-1:-1:-1;;;;;452:19:4;;;466:5;;452:19;444:28;;;;;;-1:-1:-1;;;;;2837:22:2;;;;2829:31;;;;;;-1:-1:-1;;;;;2870:18:2;;;;;;;:11;:18;;;;;;;:27;;-1:-1:-1;;;;;;2870:27:2;;;;;;;;;;;2907:29;;2870:18;;:27;;2907:29;-1:-1:-1;;;;;2907:29:2;;;;;;;;;;;;;;;;;;;;;;2749:194;;:::o;85:27:4:-;;;-1:-1:-1;;;;;85:27:4;;:::o;670:96::-;717:9;;:::i;:::-;745:14;738:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;738:21:4;;;;;;;;;;;;;;;;;;;;;;;670:96;:::o;560:186:7:-;466:5:4;;452:10;-1:-1:-1;;;;;452:19:4;;;466:5;;452:19;444:28;;;;;;662:5:7;-1:-1:-1;;;;;662:14:7;;677:6;685;662:30;;;;;;;;-1:-1:-1;;;662:30:7;;;;;;-1:-1:-1;;;;;662:30:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;654:39;;;;;;;;703:36;717:5;724:6;732;703:36;;-1:-1:-1;;;;;703:36:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;560:186;;;:::o;2074:301:4:-;466:5;;452:10;-1:-1:-1;;;;;452:19:4;;;466:5;;452:19;444:28;;;;;;-1:-1:-1;;;;;2150:20:4;;;;;;:8;:20;;;;;;;;2149:21;2141:30;;;;;;2212:13;:20;328:2;2212:37;;2204:46;;;;;;2261:30;2274:10;2286:4;2261:30;;-1:-1:-1;;;;;2261:30:4;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2301:20:4;;;;;;:8;:20;;;;;:27;;-1:-1:-1;;2301:27:4;2324:4;2301:27;;;;;;2338:13;:30;;:13;;:30;;;:13;:30;;:::i;:::-;-1:-1:-1;2338:30:4;;;;;;;;;;;-1:-1:-1;;;;;;2338:30:4;-1:-1:-1;;;;;2338:30:4;;;;;;;;;;2074:301::o;465:47:2:-;;;-1:-1:-1;;;;;465:47:2;;:::o;2238:449::-;466:5:4;;452:10;-1:-1:-1;;;;;452:19:4;;;466:5;;452:19;444:28;;;;;;2390:7:2;2338:25;:49;2374:5;2381:4;2364:22;;;-1:-1:-1;;;;;2364:22:2;;;;;;;;;;;;;;;;;;;;;;;;;;2338:49;;;;;;;;;;;;;-1:-1:-1;2338:49:2;:59;;-1:-1:-1;;2338:59:2;;;;;;;;;;;2407:45;;2431:5;;2438:4;;2444:7;;2407:45;-1:-1:-1;;;;;2407:45:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2463:18;2475:5;2463:11;:18::i;:::-;-1:-1:-1;;;;;2496:18:2;;;2526:3;2496:18;;;:11;:18;;;;;;;:34;2495:68;;;;-1:-1:-1;;;;;;2536:26:2;;-1:-1:-1;;;;;;;;;;;2536:26:2;;2495:68;2491:190;;;-1:-1:-1;;;;;2579:18:2;;;;;;;:11;:18;;;;;;:25;;-1:-1:-1;;;;;;2579:25:2;2600:4;2579:25;;;;;;:18;;2640:13;;2600:4;;2660:8;;2640:29;;;;;;-1:-1:-1;;;2640:29:2;;;;;;-1:-1:-1;;;;;2640:29:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2632:38;;;;;;;;2238:449;;;:::o;3022:::-;-1:-1:-1;;;;;548:10:4;538:21;3115:4:2;538:21:4;;;:9;:21;;;;;;;;530:30;;;;;;;;3139:25:2;:56;3175:5;3182:11;3165:29;;;-1:-1:-1;;;;;3165:29:2;;;;;;;;;;;;;;;;;;;;;;;;;;3139:56;;;;;;;;;;;;;;;;3131:65;;;;;;;;-1:-1:-1;;;;;3211:26:2;;-1:-1:-1;;;;;;;;;;;3211:26:2;3207:184;;;-1:-1:-1;;;;;3253:20:2;;:28;;;;3274:6;3253:28;;;;;;;;;;;;;;;;;;;;;;;;;;3207:184;;;-1:-1:-1;;;;;3320:18:2;;;3339;;;;:11;:18;;;;;;;3320;;;;3339;;3359:11;;3372:6;;3339:18;3320:59;;;;;;-1:-1:-1;;;3320:59:2;;;;;;-1:-1:-1;;;;;3320:59:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3312:68;;;;;;;;3401:41;3415:5;3422:6;3430:11;3401:41;;-1:-1:-1;;;;;3401:41:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3460:4:2;3022:449;;;;;:::o;2010:145::-;-1:-1:-1;;;;;634:10:4;625:20;2061:4:2;625:20:4;;;:8;:20;;;;;;;;617:29;;;;;;;;2077:12:2;:20;;-1:-1:-1;;2077:20:2;;;2107:19;2092:5;2107:19;;;;;;;;;;;;;;;;-1:-1:-1;2144:4:2;2010:145;:::o;1385:435::-;1635:12;;1607:4;;1635:12;;;;;1627:21;;;;;;;;1680:12;;1666:10;-1:-1:-1;;;;;1666:26:2;;;1680:12;;1666:26;1658:35;;;;;;1712:78;1720:8;1730:9;1741;1752:11;1765:14;1781:8;1712:7;:78::i;:::-;1704:87;;;;;;;;-1:-1:-1;1809:4:2;1385:435;;;;;;;;:::o;1074:183:4:-;466:5;;452:10;-1:-1:-1;;;;;452:19:4;;;466:5;;452:19;444:28;;;;;;-1:-1:-1;;;;;1150:22:4;;;;1142:31;;;;;;1204:12;;1183:34;;-1:-1:-1;;;;;1204:12:4;1183:34;;-1:-1:-1;;;;;1183:34:4;;;;;;;;;;;;;;1227:12;:23;;-1:-1:-1;;;;;;1227:23:4;-1:-1:-1;;;;;1227:23:4;;;;;;;;;;1074:183::o;1821:189::-;1868:12;;1884:10;-1:-1:-1;;;;;1868:26:4;;;:12;;:26;1860:35;;;;;;1918:12;;;1932:5;1905:33;;-1:-1:-1;;;;;1918:12:4;;;;1932:5;1905:33;;-1:-1:-1;;;;;1905:33:4;;;;;;;;;;;;;;;;;;;;;;1956:12;;;;1948:20;;-1:-1:-1;;;;;;1948:20:4;;;-1:-1:-1;;;;;1956:12:4;;1948:20;;;;1978:25;;;1821:189::o;1432:218::-;466:5;;452:10;-1:-1:-1;;;;;452:19:4;;;466:5;;452:19;444:28;;;;;;-1:-1:-1;;;;;1515:22:4;;;;1507:31;;;;;;1548:30;1569:8;1548:30;;-1:-1:-1;;;;;1548:30:4;;;;;;;;;;;;;;1611:5;;1588:29;;1601:8;;-1:-1:-1;;;;;1611:5:4;1588:29;;-1:-1:-1;;;;;1588:29:4;;;;;;;;;;;;;;;;;;;;;;1627:5;:16;;-1:-1:-1;;;;;;1627:16:4;-1:-1:-1;;;;;1627:16:4;;;;;;;;;;1432:218::o;772:94::-;818:9;;:::i;:::-;846:13;839:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;839:20:4;;;;;;;;;;;;;;;;;;;;;;772:94;:::o;5297:861:2:-;5398:4;5414:11;5435;5759:9;5847:12;6012:15;5462:12;;;;;;;;;;;5461:13;5457:27;;;5483:1;5476:8;;;;5457:27;-1:-1:-1;;;;;;;;;;;;;;;;5499:24:2;;;5495:254;;;5547:4;5539:12;;5573:4;5565:12;;5495:254;;;-1:-1:-1;;;;;;;;;;;;;;;;5598:25:2;;;5594:155;;;5647:5;5639:13;;5674:3;5666:11;;5594:155;;;5715:1;5708:8;;;;5594:155;5771:23;;-1:-1:-1;;;;;5771:23:2;:31;5803:5;5810:11;5823:5;5830:6;5771:23;:66;;;;;;;-1:-1:-1;;;5771:66:2;;;;;;-1:-1:-1;;;;;5771:66:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5759:78;;5862:35;5873:3;5878:4;5884:6;5892:4;5862:10;:35::i;:::-;5847:50;;5931:7;5912:16;5923:4;5912:10;:16::i;:::-;:26;5908:40;;;5947:1;5940:8;;;;5908:40;5963:19;;-1:-1:-1;;;;;5963:19:2;:33;5959:171;;6030:19;;-1:-1:-1;;;;;6030:19:2;:33;6064:3;6069:4;6030:19;:44;;;;;;;-1:-1:-1;;;6030:44:2;;;;;;-1:-1:-1;;;;;6030:44:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6092:17:2;;;6088:31;;;6118:1;6111:8;;;;6088:31;6147:4;6140:11;;5297:861;;;;;;;;;;;;:::o;2897:312:4:-;466:5;;452:10;-1:-1:-1;;;;;452:19:4;;;466:5;;452:19;444:28;;;;;;-1:-1:-1;;;;;2975:22:4;;;;;;:9;:22;;;;;;;;2974:23;2966:32;;;;;;3039:14;:21;328:2;3039:38;;3031:47;;;;;;3089:32;3103:11;3116:4;3089:32;;-1:-1:-1;;;;;3089:32:4;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3131:22:4;;;;;;:9;:22;;;;;:29;;-1:-1:-1;;3131:29:4;3156:4;3131:29;;;;;;3170:14;:32;;:14;;:32;;;:14;:32;;:::i;5033:258:2:-;5119:4;5135:16;5181;5154:17;5166:4;5154:11;:17::i;:::-;5135:36;;5200:16;5212:3;5200:11;:16::i;:::-;5181:35;;5234:50;5245:6;5253:11;5266;5279:4;5234:10;:50::i;:::-;5227:57;5033:258;-1:-1:-1;;;;;;;5033:258:2:o;608:44::-;;;;;;;;;;;;-1:-1:-1;;;;;608:44:2;;:::o;3215:469:4:-;3366:6;466:5;;452:10;-1:-1:-1;;;;;452:19:4;;;466:5;;452:19;444:28;;;;;;-1:-1:-1;;;;;3293:19:4;;;;;;:9;:19;;;;;;;;3285:28;;;;;;;;-1:-1:-1;;;;;;3323:19:4;;3345:5;3323:19;;;:9;:19;;;;;:27;;-1:-1:-1;;3323:27:4;;;3361:317;3382:14;:21;3378:25;;3361:317;;;3449:8;-1:-1:-1;;;;;3428:29:4;:14;3443:1;3428:17;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3428:17:4;:29;3424:244;;;3497:14;3512:21;;-1:-1:-1;;3512:25:4;;;3497:41;;;;;;;;;;;;;;;;3477:14;:17;;-1:-1:-1;;;;;3497:41:4;;;;3492:1;;3477:17;;;;;;;;;;;;;;;:61;;-1:-1:-1;;;;;;3477:61:4;-1:-1:-1;;;;;3477:61:4;;;;;;;;;;3556:14;:26;;-1:-1:-1;;3556:26:4;;;;;;:::i;:::-;;3600:30;3614:8;3624:5;3600:30;;-1:-1:-1;;;;;3600:30:4;;;;;;;;;;;;;;;;;;;;;;3648:5;;3424:244;3405:3;;3361:317;;3557:518:2;466:5:4;;452:10;-1:-1:-1;;;;;452:19:4;;;466:5;;452:19;444:28;;;;;;-1:-1:-1;;;;;3765:27:2;;;;3757:36;;;;;;-1:-1:-1;;;;;3811:30:2;;;;3803:39;;;;;;3853:12;:28;;-1:-1:-1;;;;;3853:28:2;;;-1:-1:-1;;;;;;3853:28:2;;;;;;;;3891:23;:42;;;;;;;;;;;;;3943:19;:34;;;;;;;;;;;;;;;3988:80;;4009:12;;;4023:23;;;;4048:19;3988:80;;-1:-1:-1;;;;;3988:80:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3557:518;;;:::o;341:27::-;;;-1:-1:-1;;;;;341:27:2;;:::o;851:150:7:-;466:5:4;;452:10;-1:-1:-1;;;;;452:19:4;;;466:5;;452:19;444:28;;;;;;-1:-1:-1;;;;;932:15:7;;:23;;;;948:6;932:23;;;;;;;;;;;;;;;;;;;;;;;;;;965:29;979:6;987;965:29;;;;;-1:-1:-1;;;;;965:29:7;;;;;;;;;;;;;;;;851:150;;:::o;404:55:2:-;;;-1:-1:-1;;;;;404:55:2;;:::o;374:24::-;;;;;;;;;:::o;518:55::-;;;;;;;;;;;;;;;:::o;59:20:4:-;;;-1:-1:-1;;;;;59:20:4;;:::o;4324:438:2:-;4377:4;;;;-1:-1:-1;;;;;4397:26:2;;-1:-1:-1;;;;;;;;;;;4397:26:2;4393:363;;;4444:4;-1:-1:-1;;;;;4444:12:2;;4437:19;;;;4393:363;-1:-1:-1;;;;;4502:18:2;;;;;;;:11;:18;;;;;;;;;;;-1:-1:-1;4502:18:2;;4557:15;;4502:18;;4557:23;;;;;;-1:-1:-1;;;4557:23:2;;;;;;-1:-1:-1;;;;;4557:23:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;4619:15:2;;;4635:6;4643:4;4619:29;;;;;;;;-1:-1:-1;;;4619:29:2;;;;;;-1:-1:-1;;;;;4619:29:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4671:35:2;;;4670:75;;4728:17;4670:75;;;4710:15;4670:75;4663:82;;4393:363;4324:438;;;;;;:::o;4768:259::-;4855:4;4871:16;4917;4890:17;4902:4;4890:11;:17::i;:::-;4871:36;;4936:16;4948:3;4936:11;:16::i;:::-;4917:35;;4970:50;4981:6;4989:11;5002;5015:4;4970:10;:50::i;561:171:6:-;-1:-1:-1;;;;;618:26:6;;-1:-1:-1;;;;;;;;;;;618:26:6;614:111;;;-1:-1:-1;;;;;646:15:6;;;;;;:8;:15;;;;;506:2;646:30;;614:111;;;709:5;-1:-1:-1;;;;;709:14:6;;:16;;;;;;;;;;;-1:-1:-1;;;709:16:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;691:15:6;;;;;;:8;:15;;;;;:34;-1:-1:-1;614:111:6;561:171;:::o;6491:1637:2:-;6701:4;7013:15;7185:11;7206:15;6787:8;6783:220;;;6836:1;6819:18;;6811:27;;;;;;-1:-1:-1;;;;;6856:29:2;;-1:-1:-1;;;;;;;;;;;6856:29:2;6852:140;;;6911:9;:22;;6903:31;;;;;;6852:140;;;6977:9;:14;6969:23;;;;;;7031:58;7042:8;7052:9;7063;7074:14;7031:10;:58::i;:::-;7013:76;-1:-1:-1;7144:1:2;7131:14;;7123:23;;;;;;-1:-1:-1;;;;;7235:29:2;;-1:-1:-1;;;;;;;;;;;7235:29:2;7231:214;;;-1:-1:-1;7331:9:2;;-1:-1:-1;7298:10:2;7231:214;;;-1:-1:-1;7426:8:2;;-1:-1:-1;;;7385:19:2;;7231:214;7455:23;;-1:-1:-1;;;;;7455:23:2;:39;7508:5;7527:11;7455:23;7567:12;7455:134;;-1:-1:-1;;;7455:134:2;;;;;;-1:-1:-1;;;;;7455:134:2;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7455:134:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;7634:29:2;;-1:-1:-1;;;;;;;;;;;7634:29:2;7630:136;;-1:-1:-1;;;;;7687:21:2;;;7721;;;;:11;:21;;;;;;;7687;;;;7709:10;;7721:21;;;7744:9;;7721:21;7687:67;;;;;;-1:-1:-1;;;7687:67:2;;;;;;-1:-1:-1;;;;;7687:67:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7679:76;;;;;;;;-1:-1:-1;;;;;7808:30:2;;-1:-1:-1;;;;;;;;;;;7808:30:2;7804:204;;;-1:-1:-1;;;;;7854:20:2;;:32;;;;7875:10;7854:32;;;;;;;;;;;;;;;;;;;;;;;;;;7804:204;;;-1:-1:-1;;;;;7925:22:2;;;7948;;;;:11;:22;;;;;;;7925;;;;7948;;7972:11;;7985:10;;7948:22;7925:71;;;;;;-1:-1:-1;;;7925:71:2;;;;;;-1:-1:-1;;;;;7925:71:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7917:80;;;;;;;;8031:10;-1:-1:-1;;;;;8018:81:2;;8043:8;8053:9;8064;8075:10;8087:11;8018:81;;-1:-1:-1;;;;;8018:81:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8117:4:2;;6491:1637;-1:-1:-1;;;;;;;;;6491:1637:2:o;738:470:6:-;794:4;;-1:-1:-1;;;;;814:26:6;;-1:-1:-1;;;;;;;;;;;814:26:6;810:51;;;506:2;842:19;;;;810:51;-1:-1:-1;;;;;;915:15:6;;;;;;:8;:15;;;;;;1127:18;;1124:46;;;1154:5;-1:-1:-1;;;;;1154:14:6;;:16;;;;;;;;;;;-1:-1:-1;;;1154:16:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1147:23;;;;1124:46;1188:13;1181:20;;738:470;;;;;:::o;1778:844::-;1880:4;;;305:6;1904:17;;;1896:26;;;;;;369:17;1940:16;;;1932:25;;;;;;2109:26;;;2105:422;;459:2;2160:25;;;2159:43;;2151:52;;;;;;-1:-1:-1;;2257:25:6;;;2252:2;:31;2230:54;;255:6;2230:54;2313:4;2105:422;;;459:2;2357:25;;;2356:43;;2348:52;;;;;;-1:-1:-1;;255:6:6;2427:18;;2488:25;;;2483:2;:31;2475:40;;2105:422;2575:11;2570:1;2556:11;2544:9;:23;:27;2543:43;;;;;;;;;1778:844;-1:-1:-1;;;;;;;1778:844:6:o;1214:558::-;1316:4;305:6;1340:17;;;1332:26;;;;;;369:17;1376:16;;;1368:25;;;;;;1408:26;;;1404:362;;459:2;1459:25;;;1458:43;;1450:52;;;;;;255:6;1524:13;;;1546:25;;;1541:2;:31;1524:49;1523:63;;1516:70;;;;1404:362;459:2;1626:25;;;1625:43;;1617:52;;;;;;1741:11;1727;:25;1722:2;:31;255:6;1709:45;1700:4;1691:6;:13;1690:65;;;;;;1404:362;1214:558;;;;;;:::o;266:7864:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;

Swarm Source

bzzr://87e29ebe334f57d7c929fdeb3b935848f9374fcdd281e91cdff704b577410996

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

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ 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.