ETH Price: $3,339.99 (-2.41%)
 

Overview

ETH Balance

0.048907400357565697 ETH

Eth Value

$163.35 (@ $3,339.99/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer Admin107893372020-09-03 16:18:031580 days ago1599149883IN
Kyber: Reserve PNK
0 ETH0.02141969466
Enable Trade105286802020-07-25 12:47:581621 days ago1595681278IN
Kyber: Reserve PNK
0 ETH0.0019490367
Disable Trade105286452020-07-25 12:39:501621 days ago1595680790IN
Kyber: Reserve PNK
0 ETH0.0019681267
Enable Trade105242702020-07-24 20:04:141621 days ago1595621054IN
Kyber: Reserve PNK
0 ETH0.0017744961
Disable Trade105149522020-07-23 9:39:121623 days ago1595497152IN
Kyber: Reserve PNK
0 ETH0.0021443773
Set Contracts104105822020-07-07 6:12:331639 days ago1594102353IN
Kyber: Reserve PNK
0 ETH0.001391840
Enable Trade101796582020-06-01 11:15:341675 days ago1591010134IN
Kyber: Reserve PNK
0 ETH0.0005759819.8
Withdraw Token101796102020-06-01 11:07:271675 days ago1591009647IN
Kyber: Reserve PNK
0 ETH0.0032513725.30000014
Disable Trade101795332020-06-01 10:50:571675 days ago1591008657IN
Kyber: Reserve PNK
0 ETH0.0009693733
Withdraw Token99280952020-04-23 9:58:281714 days ago1587635908IN
Kyber: Reserve PNK
0 ETH0.0020117515.65703971
Set Contracts99225492020-04-22 13:36:581715 days ago1587562618IN
Kyber: Reserve PNK
0 ETH0.0004521713.0000037
Transfer99101872020-04-20 15:44:371716 days ago1587397477IN
Kyber: Reserve PNK
70 ETH0.000213599.5
Withdraw Ether99096372020-04-20 13:45:211717 days ago1587390321IN
Kyber: Reserve PNK
0 ETH0.000226077
Add Operator99096232020-04-20 13:42:411717 days ago1587390161IN
Kyber: Reserve PNK
0 ETH0.000713019.5
Withdraw Ether99095412020-04-20 13:23:071717 days ago1587388987IN
Kyber: Reserve PNK
0 ETH0.000277949.00073276
Withdraw Token99094192020-04-20 12:56:431717 days ago1587387403IN
Kyber: Reserve PNK
0 ETH0.0012848910
Withdraw Token99093822020-04-20 12:47:151717 days ago1587386835IN
Kyber: Reserve PNK
0 ETH0.001027248
Transfer99093172020-04-20 12:30:571717 days ago1587385857IN
Kyber: Reserve PNK
0.1 ETH0.000112425
Transfer Admin Q...99091722020-04-20 11:57:161717 days ago1587383836IN
Kyber: Reserve PNK
0 ETH0.00024327.5
Add Operator99091632020-04-20 11:55:121717 days ago1587383712IN
Kyber: Reserve PNK
0 ETH0.000375275
Add Operator99091522020-04-20 11:52:271717 days ago1587383547IN
Kyber: Reserve PNK
0 ETH0.000600438
Approve Withdraw...99091412020-04-20 11:51:091717 days ago1587383469IN
Kyber: Reserve PNK
0 ETH0.000415588.58000023
Approve Withdraw...99091362020-04-20 11:50:341717 days ago1587383434IN
Kyber: Reserve PNK
0 ETH0.000409248
Approve Withdraw...99091262020-04-20 11:46:531717 days ago1587383213IN
Kyber: Reserve PNK
0 ETH0.000105715
Approve Withdraw...99091222020-04-20 11:45:561717 days ago1587383156IN
Kyber: Reserve PNK
0 ETH0.000255715
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
115840532021-01-03 21:45:501458 days ago1609710350
Kyber: Reserve PNK
4.10561507 ETH
115839832021-01-03 21:29:251458 days ago1609709365
Kyber: Reserve PNK
8.65514605 ETH
115833112021-01-03 19:02:331458 days ago1609700553
Kyber: Reserve PNK
8.74110923 ETH
115831112021-01-03 18:21:281458 days ago1609698088
Kyber: Reserve PNK
1.58539032 ETH
115771232021-01-02 20:14:071459 days ago1609618447
Kyber: Reserve PNK
5.06023418 ETH
115761172021-01-02 16:37:471459 days ago1609605467
Kyber: Reserve PNK
2.65470874 ETH
115761072021-01-02 16:36:181459 days ago1609605378
Kyber: Reserve PNK
2.65470874 ETH
115588712020-12-31 1:14:411462 days ago1609377281
Kyber: Reserve PNK
10.44732001 ETH
115507362020-12-29 19:13:401463 days ago1609269220
Kyber: Reserve PNK
5.47302699 ETH
115489112020-12-29 12:26:521464 days ago1609244812
Kyber: Reserve PNK
2.874816 ETH
115489042020-12-29 12:25:421464 days ago1609244742
Kyber: Reserve PNK
3.35455116 ETH
115488622020-12-29 12:15:461464 days ago1609244146
Kyber: Reserve PNK
3.89596438 ETH
115487742020-12-29 11:55:551464 days ago1609242955
Kyber: Reserve PNK
9.60607751 ETH
115487552020-12-29 11:51:461464 days ago1609242706
Kyber: Reserve PNK
6.65610211 ETH
115487552020-12-29 11:51:461464 days ago1609242706
Kyber: Reserve PNK
7.02537924 ETH
115487272020-12-29 11:45:261464 days ago1609242326
Kyber: Reserve PNK
5.24413984 ETH
115487262020-12-29 11:45:091464 days ago1609242309
Kyber: Reserve PNK
6.96313781 ETH
115487202020-12-29 11:43:341464 days ago1609242214
Kyber: Reserve PNK
6.96313781 ETH
115485952020-12-29 11:15:171464 days ago1609240517
Kyber: Reserve PNK
7.37167006 ETH
115485682020-12-29 11:10:511464 days ago1609240251
Kyber: Reserve PNK
5.91814133 ETH
115384112020-12-27 21:56:521465 days ago1609106212
Kyber: Reserve PNK
4.59172607 ETH
115381072020-12-27 20:50:051465 days ago1609102205
Kyber: Reserve PNK
0.17127676 ETH
115344332020-12-27 7:20:231466 days ago1609053623
Kyber: Reserve PNK
5.82783544 ETH
115315122020-12-26 20:34:211466 days ago1609014861
Kyber: Reserve PNK
5.57238999 ETH
115313822020-12-26 20:05:041466 days ago1609013104
Kyber: Reserve PNK
4.05474673 ETH
View All Internal Transactions
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0xf8b8bA30...71535AA1B
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, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2019-11-08
*/

pragma solidity ^0.4.13;

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);
}

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);
}

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);
}

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;
            }
        }
    }
}

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

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
    }
}

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 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;
    }
}

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

0x6060604052600436106101655763ffffffff60e060020a60003504166299d38681146101b957806301a12fd3146101e05780631bc7bfec14610201578063267822471461022657806327a099d8146102555780633ccdbb28146102bb578063408ee7fe146102e457806347e6924f14610303578063546dc71c1461031657806369328dec146103405780636940030f146103695780636cf698111461037c57806375829def146103a857806377f50f97146103c75780637acc8678146103da5780637c423f54146103f95780637cd442721461040c5780639870d7fe14610449578063a7fca95314610468578063a80cbac614610493578063ac8a584a146104b2578063b3066d49146104d1578063b78b842d146104fc578063ce56c4541461050f578063d5847d3314610531578063d621e81314610544578063d7b7024d14610557578063f851a4401461056d578063f8b2cb4f14610580578063fa64dffa1461059f575b7f2d0c0a8842b9944ece1495eb61121621b5e36bd6af3bba0318c695f525aef79f60008051602061204983398151915234604051600160a060020a03909216825260208201526040908101905180910390a1005b34156101c457600080fd5b6101cc6105ca565b604051901515815260200160405180910390f35b34156101eb57600080fd5b6101ff600160a060020a0360043516610658565b005b341561020c57600080fd5b6101ff600160a060020a03600435811690602435166107c8565b341561023157600080fd5b610239610874565b604051600160a060020a03909116815260200160405180910390f35b341561026057600080fd5b610268610883565b60405160208082528190810183818151815260200191508051906020019060200280838360005b838110156102a757808201518382015260200161028f565b505050509050019250505060405180910390f35b34156102c657600080fd5b6101ff600160a060020a0360043581169060243590604435166108eb565b34156102ef57600080fd5b6101ff600160a060020a03600435166109e2565b341561030e57600080fd5b610239610ade565b341561032157600080fd5b6101ff600160a060020a03600435811690602435166044351515610aed565b341561034b57600080fd5b6101cc600160a060020a036004358116906024359060443516610cd7565b341561037457600080fd5b6101cc610eb0565b6101cc600160a060020a03600435811690602435906044358116906064351660843560a4351515610f31565b34156103b357600080fd5b6101ff600160a060020a0360043516610f9e565b34156103d257600080fd5b6101ff611039565b34156103e557600080fd5b6101ff600160a060020a03600435166110d3565b341561040457600080fd5b6102686111b5565b341561041757600080fd5b610437600160a060020a036004358116906024351660443560643561121b565b60405190815260200160405180910390f35b341561045457600080fd5b6101ff600160a060020a0360043516611406565b341561047357600080fd5b610437600160a060020a03600435811690602435166044356064356114d6565b341561049e57600080fd5b610239600160a060020a0360043516611508565b34156104bd57600080fd5b6101ff600160a060020a0360043516611523565b34156104dc57600080fd5b6101ff600160a060020a036004358116906024358116906044351661168f565b341561050757600080fd5b610239611773565b341561051a57600080fd5b6101ff600435600160a060020a0360243516611782565b341561053c57600080fd5b610239611815565b341561054f57600080fd5b6101cc611824565b341561056257600080fd5b6101cc600435611845565b341561057857600080fd5b61023961185a565b341561058b57600080fd5b610437600160a060020a0360043516611869565b34156105aa57600080fd5b610437600160a060020a03600435811690602435166044356064356119bd565b6000805433600160a060020a039081169116146105e657600080fd5b6007805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001790557f7d7f00509dd73ac4449f698ae75ccc797895eff5fa9d446d3df387598a26e7356001604051901515815260200160405180910390a15060015b90565b6000805433600160a060020a0390811691161461067457600080fd5b600160a060020a03821660009081526003602052604090205460ff16151561069b57600080fd5b50600160a060020a0381166000908152600360205260408120805460ff191690555b6005548110156107c45781600160a060020a03166005828154811015156106e057fe5b600091825260209091200154600160a060020a031614156107bc5760058054600019810190811061070d57fe5b60009182526020909120015460058054600160a060020a03909216918390811061073357fe5b60009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055600580549061076f906000198301611ff4565b507f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762826000604051600160a060020a039092168252151560208201526040908101905180910390a16107c4565b6001016106bd565b5050565b60005433600160a060020a039081169116146107e357600080fd5b600160a060020a03811615156107f857600080fd5b600160a060020a038281166000908152600b6020526040908190208054600160a060020a031916928416929092179091557f81995c7b922889ac0a81e41866106d4046268ea3a9abaae9f9e080a6ce36ee7d908390839051600160a060020a039283168152911660208201526040908101905180910390a15050565b600154600160a060020a031681565b61088b612018565b60048054806020026020016040519081016040528092919081815260200182805480156108e157602002820191906000526020600020905b8154600160a060020a031681526001909101906020018083116108c3575b5050505050905090565b60005433600160a060020a0390811691161461090657600080fd5b82600160a060020a031663a9059cbb828460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561096357600080fd5b6102c65a03f1151561097457600080fd5b50505060405180519050151561098957600080fd5b7f72cb8a894ddb372ceec3d2a7648d86f17d5a15caae0e986c53109b8a9a9385e6838383604051600160a060020a03938416815260208101929092529091166040808301919091526060909101905180910390a1505050565b60005433600160a060020a039081169116146109fd57600080fd5b600160a060020a03811660009081526003602052604090205460ff1615610a2357600080fd5b60055460329010610a3357600080fd5b7f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762816001604051600160a060020a039092168252151560208201526040908101905180910390a1600160a060020a0381166000908152600360205260409020805460ff191660019081179091556005805490918101610ab28382611ff4565b5060009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055565b600954600160a060020a031681565b60005433600160a060020a03908116911614610b0857600080fd5b80600a600085856040516c01000000000000000000000000600160a060020a039384168102825291909216026014820152602801604051908190039020815260208101919091526040908101600020805460ff1916921515929092179091557fd5fd5351efae1f4bb760079da9f0ff9589e2c3e216337ca9d39cdff573b245c49084908490849051600160a060020a0393841681529190921660208201529015156040808301919091526060909101905180910390a1610bc7836119e4565b600160a060020a038381166000908152600b602052604090205416158015610c065750600160a060020a03831660008051602061204983398151915214155b15610cd257600160a060020a038381166000818152600b60205260408082208054600160a060020a03191630958616179055919263095ea7b39290917f800000000000000000000000000000000000000000000000000000000000000091516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610cac57600080fd5b6102c65a03f11515610cbd57600080fd5b505050604051805190501515610cd257600080fd5b505050565b600160a060020a03331660009081526002602052604081205460ff161515610cfe57600080fd5b600a600085846040516c01000000000000000000000000600160a060020a039384168102825291909216026014820152602801604051908190039020815260208101919091526040016000205460ff161515610d5957600080fd5b600160a060020a0384166000805160206120498339815191521415610dae57600160a060020a03821683156108fc0284604051600060405180830381858888f193505050501515610da957600080fd5b610e52565b600160a060020a038085166000818152600b60205260408082205492936323b872dd9316918691889190516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b1515610e2c57600080fd5b6102c65a03f11515610e3d57600080fd5b505050604051805190501515610e5257600080fd5b7fb67719fc33c1f17d31bf3a698690d62066b1e0bae28fcd3c56cf2c015c2863d6848484604051600160a060020a03938416815260208101929092529091166040808301919091526060909101905180910390a15060019392505050565b600160a060020a03331660009081526003602052604081205460ff161515610ed757600080fd5b6007805474ff0000000000000000000000000000000000000000191690557f7d7f00509dd73ac4449f698ae75ccc797895eff5fa9d446d3df387598a26e7356000604051901515815260200160405180910390a150600190565b60075460009074010000000000000000000000000000000000000000900460ff161515610f5d57600080fd5b60075433600160a060020a03908116911614610f7857600080fd5b610f86878787878787611aa1565b1515610f9157600080fd5b5060019695505050505050565b60005433600160a060020a03908116911614610fb957600080fd5b600160a060020a0381161515610fce57600080fd5b6001547f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc4090600160a060020a0316604051600160a060020a03909116815260200160405180910390a160018054600160a060020a031916600160a060020a0392909216919091179055565b60015433600160a060020a0390811691161461105457600080fd5b6001546000547f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed91600160a060020a039081169116604051600160a060020a039283168152911660208201526040908101905180910390a16001805460008054600160a060020a0319908116600160a060020a03841617909155169055565b60005433600160a060020a039081169116146110ee57600080fd5b600160a060020a038116151561110357600080fd5b7f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc4081604051600160a060020a03909116815260200160405180910390a16000547f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed908290600160a060020a0316604051600160a060020a039283168152911660208201526040908101905180910390a160008054600160a060020a031916600160a060020a0392909216919091179055565b6111bd612018565b60058054806020026020016040519081016040528092919081815260200182805480156108e157602002820191906000526020600020908154600160a060020a031681526001909101906020018083116108c3575050505050905090565b600080600080600080600760149054906101000a900460ff16151561124357600095506113f9565b600080516020612049833981519152600160a060020a038b16141561126e57600193508894506112a2565b600080516020612049833981519152600160a060020a038a16141561129957600093508994506112a2565b600095506113f9565b600854600160a060020a031663b8e9c22e8689878c60006040516020015260405160e060020a63ffffffff8716028152600160a060020a0390941660048501526024840192909252151560448301526064820152608401602060405180830381600087803b151561131257600080fd5b6102c65a03f1151561132357600080fd5b50505060405180519050925061133b8a8a8a866119bd565b9150816113478a611869565b101561135657600095506113f9565b600954600160a060020a0316156113f557600954600160a060020a031663a58092b78b8b60006040516020015260405160e060020a63ffffffff8516028152600160a060020a03928316600482015291166024820152604401602060405180830381600087803b15156113c857600080fd5b6102c65a03f115156113d957600080fd5b5050506040518051915050808311156113f557600095506113f9565b8295505b5050505050949350505050565b60005433600160a060020a0390811691161461142157600080fd5b600160a060020a03811660009081526002602052604090205460ff161561144757600080fd5b6004546032901061145757600080fd5b7f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b816001604051600160a060020a039092168252151560208201526040908101905180910390a1600160a060020a0381166000908152600260205260409020805460ff191660019081179091556004805490918101610ab28382611ff4565b60008060006114e486611df6565b91506114ef87611df6565b90506114fd85828487611eb4565b979650505050505050565b600b60205260009081526040902054600160a060020a031681565b6000805433600160a060020a0390811691161461153f57600080fd5b600160a060020a03821660009081526002602052604090205460ff16151561156657600080fd5b50600160a060020a0381166000908152600260205260408120805460ff191690555b6004548110156107c45781600160a060020a03166004828154811015156115ab57fe5b600091825260209091200154600160a060020a03161415611687576004805460001981019081106115d857fe5b60009182526020909120015460048054600160a060020a0390921691839081106115fe57fe5b60009182526020909120018054600160a060020a031916600160a060020a039290921691909117905560048054600019019061163a9082611ff4565b507f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b826000604051600160a060020a039092168252151560208201526040908101905180910390a16107c4565b600101611588565b60005433600160a060020a039081169116146116aa57600080fd5b600160a060020a03831615156116bf57600080fd5b600160a060020a03821615156116d457600080fd5b60078054600160a060020a03808616600160a060020a0319928316179283905560088054868316908416179081905560098054868416941693909317928390557f7a85322644a4462d8ff5482d2a841a4d231f8cfb3c9f4a50f66f8b2bd568c31c938216929082169116604051600160a060020a03938416815291831660208301529091166040808301919091526060909101905180910390a1505050565b600754600160a060020a031681565b60005433600160a060020a0390811691161461179d57600080fd5b600160a060020a03811682156108fc0283604051600060405180830381858888f1935050505015156117ce57600080fd5b7fec47e7ed86c86774d1a72c19f35c639911393fe7c1a34031fdbd260890da90de8282604051918252600160a060020a031660208201526040908101905180910390a15050565b600854600160a060020a031681565b60075474010000000000000000000000000000000000000000900460ff1681565b600a6020526000908152604090205460ff1681565b600054600160a060020a031681565b6000808080600160a060020a038516600080516020612049833981519152141561189f5730600160a060020a03163193506119b5565b600160a060020a038086166000818152600b602052604080822054909316955090916370a08231918691516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561190c57600080fd5b6102c65a03f1151561191d57600080fd5b5050506040518051925050600160a060020a03851663dd62ed3e843060006040516020015260405160e060020a63ffffffff8516028152600160a060020a03928316600482015291166024820152604401602060405180830381600087803b151561198757600080fd5b6102c65a03f1151561199857600080fd5b50505060405180519150508082106119b057806119b2565b815b93505b505050919050565b60008060006119cb86611df6565b91506119d687611df6565b90506114fd85828487611f5b565b600160a060020a0381166000805160206120498339815191521415611a2457600160a060020a038116600090815260066020526040902060129055611a9e565b80600160a060020a031663313ce5676000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611a6a57600080fd5b6102c65a03f11515611a7b57600080fd5b5050506040518051600160a060020a038316600090815260066020526040902055505b50565b6000806000808415611af55760008611611aba57600080fd5b600160a060020a038a166000805160206120498339815191521415611aea57348914611ae557600080fd5b611af5565b3415611af557600080fd5b611b018a898b896119bd565b925060008311611b1057600080fd5b600160a060020a038a166000805160206120498339815191521415611b39575086905081611b43565b5088905060001988025b600854600160a060020a031663c6fd2103838360004360405160e060020a63ffffffff8716028152600160a060020a039094166004850152602484019290925260448301526064820152608401600060405180830381600087803b1515611ba957600080fd5b6102c65a03f11515611bba57600080fd5b505050600160a060020a038a1660008051602061204983398151915214611c8057600160a060020a03808b166000818152600b60205260408082205492936323b872dd9333939116918e9190516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b1515611c5a57600080fd5b6102c65a03f11515611c6b57600080fd5b505050604051805190501515611c8057600080fd5b600160a060020a0388166000805160206120498339815191521415611cd557600160a060020a03871683156108fc0284604051600060405180830381858888f193505050501515611cd057600080fd5b611d79565b600160a060020a038089166000818152600b60205260408082205492936323b872dd9316918b91889190516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b1515611d5357600080fd5b6102c65a03f11515611d6457600080fd5b505050604051805190501515611d7957600080fd5b33600160a060020a03167fea9415385bae08fe9f6dc457b02577166790cde83bb18cc340aac6cb81b824de8b8b8b878c604051600160a060020a039586168152602081019490945291841660408085019190915260608401919091529216608082015260a001905180910390a25060019998505050505050505050565b600080600160a060020a0383166000805160206120498339815191521415611e215760129150611eae565b50600160a060020a038216600090815260066020526040902054801515611eaa5782600160a060020a031663313ce5676000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611e8857600080fd5b6102c65a03f11515611e9957600080fd5b505050604051805190509150611eae565b8091505b50919050565b600080806b204fce5e3e25026110000000871115611ed157600080fd5b69d3c21bcecceda1000000841115611ee857600080fd5b848610611f195760128587031115611eff57600080fd5b5050828403600a0a8502670de0b6b3a76400000282611f3f565b60128686031115611f2957600080fd5b5050670de0b6b3a76400008502848403600a0a83025b80600182840103811515611f4f57fe5b04979650505050505050565b60006b204fce5e3e25026110000000851115611f7657600080fd5b69d3c21bcecceda1000000821115611f8d57600080fd5b838310611fc05760128484031115611fa457600080fd5b670de0b6b3a7640000858302858503600a0a025b049050611fec565b60128385031115611fd057600080fd5b828403600a0a670de0b6b3a764000002828602811515611fb857fe5b949350505050565b815481835581811511610cd257600083815260209020610cd291810190830161202a565b60206040519081016040526000815290565b61065591905b808211156120445760008155600101612030565b50905600000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeea165627a7a72305820c393da12c7977907082fc6c1f072107b1f1fc341ed6976cbc81f3c7a2239ddad0029

Deployed Bytecode Sourcemap

8610:8114:0:-;;;;;;;;;-1:-1:-1;;;8610:8114:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9507:42;-1:-1:-1;;;;;;;;;;;9539:9:0;9507:42;;-1:-1:-1;;;;;9507:42:0;;;;;;;;;;;;;;;;;;;;8610:8114;10264:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3845:463;;;;;;;;;;-1:-1:-1;;;;;3845:463:0;;;;;;;11178:198;;;;;;;;;;-1:-1:-1;;;;;11178:198:0;;;;;;;;;;1469:27;;;;;;;;;;;;;;;-1:-1:-1;;;;;1469:27:0;;;;;;;;;;;;;;2080:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;8149:189:0;;;;;;;;;;-1:-1:-1;;;;;8149:189:0;;;;;;;;;;;;;3529:308;;;;;;;;;;-1:-1:-1;;;;;3529:308:0;;;;;8814:47;;;;;;;;;;;;10654:458;;;;;;;;;;-1:-1:-1;;;;;10654:458:0;;;;;;;;;;;;;;11459:461;;;;;;;;;;-1:-1:-1;;;;;11459:461:0;;;;;;;;;;;;;10417:150;;;;;;;;;;;;9763:453;;-1:-1:-1;;;;;9763:453:0;;;;;;;;;;;;;;;;;;;;;;;;2498:187;;;;;;;;;;-1:-1:-1;;;;;2498:187:0;;;;;3267:194;;;;;;;;;;;;2866:223;;;;;;;;;;-1:-1:-1;;;;;2866:223:0;;;;;2186:96;;;;;;;;;;;;13797:888;;;;;;;;;;-1:-1:-1;;;;;13797:888:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4377:319;;;;;;;;;;-1:-1:-1;;;;;4377:319:0;;;;;13526:263;;;;;;;;;;-1:-1:-1;;;;;13526:263:0;;;;;;;;;;;;;;8959:44;;;;;;;;;;-1:-1:-1;;;;;8959:44:0;;;;;4704:481;;;;;;;;;;-1:-1:-1;;;;;4704:481:0;;;;;12010:534;;;;;;;;;;-1:-1:-1;;;;;12010:534:0;;;;;;;;;;;;;;;8687:27;;;;;;;;;;;;8450:153;;;;;;;;;;;;-1:-1:-1;;;;;8450:153:0;;;;;8752:55;;;;;;;;;;;;8721:24;;;;;;;;;;;;8868:55;;;;;;;;;;;;;;1442:20;;;;;;;;;;;;12798:448;;;;;;;;;;-1:-1:-1;;;;;12798:448:0;;;;;13254:264;;;;;;;;;;-1:-1:-1;;;;;13254:264:0;;;;;;;;;;;;;;10264:145;10312:4;1862:5;;1848:10;-1:-1:-1;;;;;1848:19:0;;;1862:5;;1848:19;1840:28;;;;;;10329:12;:19;;-1:-1:-1;;10329:19:0;;;;;10359:18;10344:4;10359:18;;;;;;;;;;;;;;;;-1:-1:-1;10397:4:0;1879:1;10264:145;:::o;3845:463::-;3994:6;1862:5;;1848:10;-1:-1:-1;;;;;1848:19:0;;;1862:5;;1848:19;1840:28;;;;;;-1:-1:-1;;;;;3922:17:0;;;;;;:8;:17;;;;;;;;3914:26;;;;;;;;-1:-1:-1;;;;;;3951:17:0;;3971:5;3951:17;;;:8;:17;;;;;:25;;-1:-1:-1;;3951:25:0;;;3989:312;4010:13;:20;4006:24;;3989:312;;;4076:7;-1:-1:-1;;;;;4056:27:0;:13;4070:1;4056:16;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4056:16:0;:27;4052:238;;;4123:13;4137:20;;-1:-1:-1;;4137:24:0;;;4123:39;;;;;;;;;;;;;;;;4104:13;:16;;-1:-1:-1;;;;;4123:39:0;;;;4118:1;;4104:16;;;;;;;;;;;;;;;:58;;-1:-1:-1;;;;;;4104:58:0;-1:-1:-1;;;;;4104:58:0;;;;;;;;;;4181:13;:22;;;;;-1:-1:-1;;4181:22:0;;;:::i;:::-;;4222:28;4235:7;4244:5;4222:28;;-1:-1:-1;;;;;4222:28:0;;;;;;;;;;;;;;;;;;;;;;4269:5;;4052:238;4032:3;;3989:312;;;3845:463;;:::o;11178:198::-;1862:5;;1848:10;-1:-1:-1;;;;;1848:19:0;;;1862:5;;1848:19;1840:28;;;;;;-1:-1:-1;;;;;11267:22:0;;;;11259:31;;;;;;-1:-1:-1;;;;;11301:18:0;;;;;;;:11;:18;;;;;;;:27;;-1:-1:-1;;;;;;11301:27:0;;;;;;;;;;;11339:29;;11301:18;;:27;;11339:29;-1:-1:-1;;;;;11339:29:0;;;;;;;;;;;;;;;;;;;;;;11178:198;;:::o;1469:27::-;;;-1:-1:-1;;;;;1469:27:0;;:::o;2080:98::-;2127:9;;:::i;:::-;2156:14;2149:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2149:21:0;;;;;;;;;;;;;;;;;;;;;;;2080:98;:::o;8149:189::-;1862:5;;1848:10;-1:-1:-1;;;;;1848:19:0;;;1862:5;;1848:19;1840:28;;;;;;8252:5;-1:-1:-1;;;;;8252:14:0;;8267:6;8275;8252:30;;;;;;;;-1:-1:-1;;;8252:30:0;;;;;;-1:-1:-1;;;;;8252:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8244:39;;;;;;;;8294:36;8308:5;8315:6;8323;8294:36;;-1:-1:-1;;;;;8294:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8149:189;;;:::o;3529:308::-;1862:5;;1848:10;-1:-1:-1;;;;;1848:19:0;;;1862:5;;1848:19;1840:28;;;;;;-1:-1:-1;;;;;3606:20:0;;;;;;:8;:20;;;;;;;;3605:21;3597:30;;;;;;3669:13;:20;1717:2;3669:37;;3661:46;;;;;;3720:30;3733:10;3745:4;3720:30;;-1:-1:-1;;;;;3720:30:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3761:20:0;;;;;;:8;:20;;;;;:27;;-1:-1:-1;;3761:27:0;3784:4;3761:27;;;;;;3799:13;:30;;:13;;:30;;;:13;:30;;:::i;:::-;-1:-1:-1;3799:30:0;;;;;;;;;;;-1:-1:-1;;;;;;3799:30:0;-1:-1:-1;;;;;3799:30:0;;;;;;;;;;3529:308::o;8814:47::-;;;-1:-1:-1;;;;;8814:47:0;;:::o;10654:458::-;1862:5;;1848:10;-1:-1:-1;;;;;1848:19:0;;;1862:5;;1848:19;1840:28;;;;;;10807:7;10755:25;:49;10791:5;10798:4;10781:22;;;-1:-1:-1;;;;;10781:22:0;;;;;;;;;;;;;;;;;;;;;;;;;;10755:49;;;;;;;;;;;;;-1:-1:-1;10755:49:0;:59;;-1:-1:-1;;10755:59:0;;;;;;;;;;;10825:45;;10849:5;;10856:4;;10862:7;;10825:45;-1:-1:-1;;;;;10825:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10883:18;10895:5;10883:11;:18::i;:::-;-1:-1:-1;;;;;10917:18:0;;;10947:3;10917:18;;;:11;:18;;;;;;;:34;10916:68;;;;-1:-1:-1;;;;;;10957:26:0;;-1:-1:-1;;;;;;;;;;;10957:26:0;;10916:68;10912:193;;;-1:-1:-1;;;;;11001:18:0;;;;;;;:11;:18;;;;;;:25;;-1:-1:-1;;;;;;11001:25:0;11022:4;11001:25;;;;;;:18;;11063:13;;11022:4;;11083:8;;11063:29;;;;;;-1:-1:-1;;;11063:29:0;;;;;;-1:-1:-1;;;;;11063:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11055:38;;;;;;;;10654:458;;;:::o;11459:461::-;-1:-1:-1;;;;;1949:10:0;1939:21;11552:4;1939:21;;;:9;:21;;;;;;;;1931:30;;;;;;;;11577:25;:56;11613:5;11620:11;11603:29;;;-1:-1:-1;;;;;11603:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;11577:56;;;;;;;;;;;;;;;;11569:65;;;;;;;;-1:-1:-1;;;;;11651:26:0;;-1:-1:-1;;;;;;;;;;;11651:26:0;11647:188;;;-1:-1:-1;;;;;11694:20:0;;:28;;;;11715:6;11694:28;;;;;;;;;;;;;;;;;;;;;;;;;;11647:188;;;-1:-1:-1;;;;;11763:18:0;;;11782;;;;:11;:18;;;;;;;11763;;;;11782;;11802:11;;11815:6;;11782:18;11763:59;;;;;;-1:-1:-1;;;11763:59:0;;;;;;-1:-1:-1;;;;;11763:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11755:68;;;;;;;;11847:41;11861:5;11868:6;11876:11;11847:41;;-1:-1:-1;;;;;11847:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11908:4:0;11459:461;;;;;:::o;10417:150::-;-1:-1:-1;;;;;2040:10:0;2031:20;10468:4;2031:20;;;:8;:20;;;;;;;;2023:29;;;;;;;;10485:12;:20;;-1:-1:-1;;10485:20:0;;;10516:19;10500:5;10516:19;;;;;;;;;;;;;;;;-1:-1:-1;10555:4:0;10417:150;:::o;9763:453::-;10025:12;;9995:4;;10025:12;;;;;10017:21;;;;;;;;10071:12;;10057:10;-1:-1:-1;;;;;10057:26:0;;;10071:12;;10057:26;10049:35;;;;;;10105:78;10113:8;10123:9;10134;10145:11;10158:14;10174:8;10105:7;:78::i;:::-;10097:87;;;;;;;;-1:-1:-1;10204:4:0;9763:453;;;;;;;;:::o;2498:187::-;1862:5;;1848:10;-1:-1:-1;;;;;1848:19:0;;;1862:5;;1848:19;1840:28;;;;;;-1:-1:-1;;;;;2575:22:0;;;;2567:31;;;;;;2630:12;;2609:34;;-1:-1:-1;;;;;2630:12:0;2609:34;;-1:-1:-1;;;;;2609:34:0;;;;;;;;;;;;;;2654:12;:23;;-1:-1:-1;;;;;;2654:23:0;-1:-1:-1;;;;;2654:23:0;;;;;;;;;;2498:187::o;3267:194::-;3315:12;;3331:10;-1:-1:-1;;;;;3315:26:0;;;:12;;:26;3307:35;;;;;;3366:12;;;3380:5;3353:33;;-1:-1:-1;;;;;3366:12:0;;;;3380:5;3353:33;;-1:-1:-1;;;;;3353:33:0;;;;;;;;;;;;;;;;;;;;;;3405:12;;;;3397:20;;-1:-1:-1;;;;;;3397:20:0;;;-1:-1:-1;;;;;3405:12:0;;3397:20;;;;3428:25;;;3267:194::o;2866:223::-;1862:5;;1848:10;-1:-1:-1;;;;;1848:19:0;;;1862:5;;1848:19;1840:28;;;;;;-1:-1:-1;;;;;2950:22:0;;;;2942:31;;;;;;2984:30;3005:8;2984:30;;-1:-1:-1;;;;;2984:30:0;;;;;;;;;;;;;;3048:5;;3025:29;;3038:8;;-1:-1:-1;;;;;3048:5:0;3025:29;;-1:-1:-1;;;;;3025:29:0;;;;;;;;;;;;;;;;;;;;;;3065:5;:16;;-1:-1:-1;;;;;;3065:16:0;-1:-1:-1;;;;;3065:16:0;;;;;;;;;;2866:223::o;2186:96::-;2232:9;;:::i;:::-;2261:13;2254:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2254:20:0;;;;;;;;;;;;;;;;;;;;;;2186:96;:::o;13797:888::-;13898:4;13915:11;13937;14275:9;14364:12;14534:15;13966:12;;;;;;;;;;;13965:13;13961:27;;;13987:1;13980:8;;;;13961:27;-1:-1:-1;;;;;;;;;;;;;;;;14005:24:0;;;14001:262;;;14054:4;14046:12;;14081:4;14073:12;;14001:262;;;-1:-1:-1;;;;;;;;;;;;;;;;14107:25:0;;;14103:160;;;14157:5;14149:13;;14185:3;14177:11;;14103:160;;;14228:1;14221:8;;;;14103:160;14287:23;;-1:-1:-1;;;;;14287:23:0;:31;14319:5;14326:11;14339:5;14346:6;14287:23;:66;;;;;;;-1:-1:-1;;;14287:66:0;;;;;;-1:-1:-1;;;;;14287:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14275:78;;14379:35;14390:3;14395:4;14401:6;14409:4;14379:10;:35::i;:::-;14364:50;;14450:7;14431:16;14442:4;14431:10;:16::i;:::-;:26;14427:40;;;14466:1;14459:8;;;;14427:40;14484:19;;-1:-1:-1;;;;;14484:19:0;:33;14480:174;;14552:19;;-1:-1:-1;;;;;14552:19:0;:33;14586:3;14591:4;14552:19;:44;;;;;;;-1:-1:-1;;;14552:44:0;;;;;;-1:-1:-1;;;;;14552:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14615:17:0;;;14611:31;;;14641:1;14634:8;;;;14611:31;14673:4;14666:11;;13797:888;;;;;;;;;;;;:::o;4377:319::-;1862:5;;1848:10;-1:-1:-1;;;;;1848:19:0;;;1862:5;;1848:19;1840:28;;;;;;-1:-1:-1;;;;;4456:22:0;;;;;;:9;:22;;;;;;;;4455:23;4447:32;;;;;;4521:14;:21;1717:2;4521:38;;4513:47;;;;;;4573:32;4587:11;4600:4;4573:32;;-1:-1:-1;;;;;4573:32:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4616:22:0;;;;;;:9;:22;;;;;:29;;-1:-1:-1;;4616:29:0;4641:4;4616:29;;;;;;4656:14;:32;;:14;;:32;;;:14;:32;;:::i;13526:263::-;13612:4;13629:16;13676;13648:17;13660:4;13648:11;:17::i;:::-;13629:36;;13695:16;13707:3;13695:11;:16::i;:::-;13676:35;;13731:50;13742:6;13750:11;13763;13776:4;13731:10;:50::i;:::-;13724:57;13526:263;-1:-1:-1;;;;;;;13526:263:0:o;8959:44::-;;;;;;;;;;;;-1:-1:-1;;;;;8959:44:0;;:::o;4704:481::-;4859:6;1862:5;;1848:10;-1:-1:-1;;;;;1848:19:0;;;1862:5;;1848:19;1840:28;;;;;;-1:-1:-1;;;;;4783:19:0;;;;;;:9;:19;;;;;;;;4775:28;;;;;;;;-1:-1:-1;;;;;;4814:19:0;;4836:5;4814:19;;;:9;:19;;;;;:27;;-1:-1:-1;;4814:27:0;;;4854:324;4875:14;:21;4871:25;;4854:324;;;4943:8;-1:-1:-1;;;;;4922:29:0;:14;4937:1;4922:17;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4922:17:0;:29;4918:249;;;4992:14;5007:21;;-1:-1:-1;;5007:25:0;;;4992:41;;;;;;;;;;;;;;;;4972:14;:17;;-1:-1:-1;;;;;4992:41:0;;;;4987:1;;4972:17;;;;;;;;;;;;;;;:61;;-1:-1:-1;;;;;;4972:61:0;-1:-1:-1;;;;;4972:61:0;;;;;;;;;;5052:14;:26;;-1:-1:-1;;5052:26:0;;;;;;:::i;:::-;;5097:30;5111:8;5121:5;5097:30;;-1:-1:-1;;;;;5097:30:0;;;;;;;;;;;;;;;;;;;;;;5146:5;;4918:249;4898:3;;4854:324;;12010:534;1862:5;;1848:10;-1:-1:-1;;;;;1848:19:0;;;1862:5;;1848:19;1840:28;;;;;;-1:-1:-1;;;;;12226:27:0;;;;12218:36;;;;;;-1:-1:-1;;;;;12273:30:0;;;;12265:39;;;;;;12317:12;:28;;-1:-1:-1;;;;;12317:28:0;;;-1:-1:-1;;;;;;12317:28:0;;;;;;;;12356:23;:42;;;;;;;;;;;;;12409:19;:34;;;;;;;;;;;;;;;12456:80;;12477:12;;;12491:23;;;;12516:19;12456:80;;-1:-1:-1;;;;;12456:80:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12010:534;;;:::o;8687:27::-;;;-1:-1:-1;;;;;8687:27:0;;:::o;8450:153::-;1862:5;;1848:10;-1:-1:-1;;;;;1848:19:0;;;1862:5;;1848:19;1840:28;;;;;;-1:-1:-1;;;;;8532:15:0;;:23;;;;8548:6;8532:23;;;;;;;;;;;;;;;;;;;;;;;;;;8566:29;8580:6;8588;8566:29;;;;;-1:-1:-1;;;;;8566:29:0;;;;;;;;;;;;;;;;8450:153;;:::o;8752:55::-;;;-1:-1:-1;;;;;8752:55:0;;:::o;8721:24::-;;;;;;;;;:::o;8868:55::-;;;;;;;;;;;;;;;:::o;1442:20::-;;;-1:-1:-1;;;;;1442:20:0;;:::o;12798:448::-;12851:4;;;;-1:-1:-1;;;;;12872:26:0;;-1:-1:-1;;;;;;;;;;;12872:26:0;12868:371;;;12920:4;-1:-1:-1;;;;;12920:12:0;;12913:19;;;;12868:371;-1:-1:-1;;;;;12980:18:0;;;;;;;:11;:18;;;;;;;;;;;-1:-1:-1;12980:18:0;;13036:15;;12980:18;;13036:23;;;;;;-1:-1:-1;;;13036:23:0;;;;;;-1:-1:-1;;;;;13036:23:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;13099:15:0;;;13115:6;13123:4;13099:29;;;;;;;;-1:-1:-1;;;13099:29:0;;;;;;-1:-1:-1;;;;;13099:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13153:35:0;;;13152:75;;13210:17;13152:75;;;13192:15;13152:75;13145:82;;12868:371;12798:448;;;;;;:::o;13254:264::-;13341:4;13358:16;13405;13377:17;13389:4;13377:11;:17::i;:::-;13358:36;;13424:16;13436:3;13424:11;:16::i;:::-;13405:35;;13460:50;13471:6;13479:11;13492;13505:4;13460:10;:50::i;5785:174::-;-1:-1:-1;;;;;5843:26:0;;-1:-1:-1;;;;;;;;;;;5843:26:0;5839:112;;;-1:-1:-1;;;;;5871:15:0;;;;;;:8;:15;;;;;5727:2;5871:30;;5839:112;;;5935:5;-1:-1:-1;;;;;5935:14:0;;:16;;;;;;;;;;;-1:-1:-1;;;5935:16:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5917:15:0;;;;;;:8;:15;;;;;:34;-1:-1:-1;5839:112:0;5785:174;:::o;15027:1694::-;15246:4;15569:15;15746:11;15768:15;15335:8;15331:226;;;15385:1;15368:18;;15360:27;;;;;;-1:-1:-1;;;;;15406:29:0;;-1:-1:-1;;;;;;;;;;;15406:29:0;15402:143;;;15462:9;:22;;15454:31;;;;;;15402:143;;;15530:9;:14;15522:23;;;;;;15587:58;15598:8;15608:9;15619;15630:14;15587:10;:58::i;:::-;15569:76;-1:-1:-1;15702:1:0;15689:14;;15681:23;;;;;;-1:-1:-1;;;;;15798:29:0;;-1:-1:-1;;;;;;;;;;;15798:29:0;15794:220;;;-1:-1:-1;15896:9:0;;-1:-1:-1;15862:10:0;15794:220;;;-1:-1:-1;15994:8:0;;-1:-1:-1;;;15952:19:0;;15794:220;16026:23;;-1:-1:-1;;;;;16026:23:0;:39;16080:5;16100:11;16026:23;16142:12;16026:139;;-1:-1:-1;;;16026:139:0;;;;;;-1:-1:-1;;;;;16026:139:0;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16026:139:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;16213:29:0;;-1:-1:-1;;;;;;;;;;;16213:29:0;16209:138;;-1:-1:-1;;;;;16267:21:0;;;16301;;;;:11;:21;;;;;;;16267;;;;16289:10;;16301:21;;;16324:9;;16301:21;16267:67;;;;;;-1:-1:-1;;;16267:67:0;;;;;;-1:-1:-1;;;;;16267:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16259:76;;;;;;;;-1:-1:-1;;;;;16392:30:0;;-1:-1:-1;;;;;;;;;;;16392:30:0;16388:208;;;-1:-1:-1;;;;;16439:20:0;;:32;;;;16460:10;16439:32;;;;;;;;;;;;;;;;;;;;;;;;;;16388:208;;;-1:-1:-1;;;;;16512:22:0;;;16535;;;;:11;:22;;;;;;;16512;;;;16535;;16559:11;;16572:10;;16535:22;16512:71;;;;;;-1:-1:-1;;;16512:71:0;;;;;;-1:-1:-1;;;;;16512:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16504:80;;;;;;;;16621:10;-1:-1:-1;;;;;16608:81:0;;16633:8;16643:9;16654;16665:10;16677:11;16608:81;;-1:-1:-1;;;;;16608:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16709:4:0;;15027:1694;-1:-1:-1;;;;;;;;;15027:1694:0:o;5967:479::-;6023:4;;-1:-1:-1;;;;;6044:26:0;;-1:-1:-1;;;;;;;;;;;6044:26:0;6040:51;;;5727:2;6072:19;;;;6040:51;-1:-1:-1;;;;;;6146:15:0;;;;;;:8;:15;;;;;;6362:18;;6359:46;;;6389:5;-1:-1:-1;;;;;6389:14:0;;:16;;;;;;;;;;;-1:-1:-1;;;6389:16:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6382:23;;;;6359:46;6425:13;6418:20;;5967:479;;;;;:::o;7031:861::-;7133:4;;;5523:6;7158:17;;;7150:26;;;;;;5588:17;7195:16;;;7187:25;;;;;;7369:26;;;7365:430;;5679:2;7421:25;;;7420:43;;7412:52;;;;;;-1:-1:-1;;7519:25:0;;;7514:2;:31;7492:54;;5472:6;7492:54;7576:4;7365:430;;;5679:2;7622:25;;;7621:43;;7613:52;;;;;;-1:-1:-1;;5472:6:0;7693:18;;7755:25;;;7750:2;:31;7742:40;;7365:430;7844:11;7839:1;7825:11;7813:9;:23;:27;7812:43;;;;;;;;;7031:861;-1:-1:-1;;;;;;;7031:861:0:o;6454:569::-;6556:4;5523:6;6581:17;;;6573:26;;;;;;5588:17;6618:16;;;6610:25;;;;;;6652:26;;;6648:368;;5679:2;6704:25;;;6703:43;;6695:52;;;;;;5472:6;6770:13;;;6792:25;;;6787:2;:31;6770:49;6769:63;;6762:70;;;;6648:368;5679:2;6874:25;;;6873:43;;6865:52;;;;;;6990:11;6976;:25;6971:2;:31;5472:6;6958:45;6949:4;6940:6;:13;6939:65;;;;;;6648:368;6454:569;;;;;;:::o;8610:8114::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;

Swarm Source

bzzr://c393da12c7977907082fc6c1f072107b1f1fc341ed6976cbc81f3c7a2239ddad

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.