ETH Price: $3,142.98 (-0.45%)
Gas: 7 Gwei

Contract

0x09fE5f0236F0Ea5D930197DCE254d77B04128075
 

Overview

ETH Balance

0.000431529194856878 ETH

Eth Value

$1.36 (@ $3,142.98/ETH)
Transaction Hash
Method
Block
From
To
Value
0xb124a721a3244d0ee7b897ffe4f5a218f96b7448fed235af3c6b43cfcb34c474Approve(pending)2024-04-22 18:13:063 days ago1713809586IN
Wrapped Basic CryptoKitties: WCK Token
0 ETH(Pending)(Pending)
0x096661f238f1125bffb8f2becf67a4098db6903dc731e0cabc08696736f0053eDeposit Kitties ...(pending)2024-04-21 9:37:084 days ago1713692228IN
Wrapped Basic CryptoKitties: WCK Token
0 ETH(Pending)(Pending)
0x521aef34aa1b9696603c9d233b41a5c05aa553f280db2a2e56da9c3ebe58fdcbTransfer(pending)2024-04-21 5:56:275 days ago1713678987IN
Wrapped Basic CryptoKitties: WCK Token
0 ETH(Pending)(Pending)
Burn Tokens And ...196737582024-04-17 7:39:478 days ago1713339587IN
Wrapped Basic CryptoKitties: WCK Token
0 ETH0.000783399.76426428
Deposit Kitties ...196571132024-04-14 23:42:1111 days ago1713138131IN
Wrapped Basic CryptoKitties: WCK Token
0 ETH0.001181458.45176862
Deposit Kitties ...196570902024-04-14 23:37:3511 days ago1713137855IN
Wrapped Basic CryptoKitties: WCK Token
0 ETH0.000182898.36958221
Approve196570502024-04-14 23:29:3511 days ago1713137375IN
Wrapped Basic CryptoKitties: WCK Token
0 ETH0.00038428.2631548
Deposit Kitties ...196570422024-04-14 23:27:5911 days ago1713137279IN
Wrapped Basic CryptoKitties: WCK Token
0 ETH0.001257748.99755217
Approve196520982024-04-14 6:51:2312 days ago1713077483IN
Wrapped Basic CryptoKitties: WCK Token
0 ETH0.0003014912.45233295
Approve195745952024-04-03 10:16:5922 days ago1712139419IN
Wrapped Basic CryptoKitties: WCK Token
0 ETH0.0005538322.87425132
Burn Tokens And ...195573032024-04-01 0:02:5925 days ago1711929779IN
Wrapped Basic CryptoKitties: WCK Token
0 ETH0.0019497520.03216622
Deposit Kitties ...195570712024-03-31 23:16:1125 days ago1711926971IN
Wrapped Basic CryptoKitties: WCK Token
0 ETH0.0029256421.67334068
Deposit Kitties ...195500062024-03-30 23:24:2326 days ago1711841063IN
Wrapped Basic CryptoKitties: WCK Token
0 ETH0.0034288224.52875663
Approve195387402024-03-29 9:22:3527 days ago1711704155IN
Wrapped Basic CryptoKitties: WCK Token
0 ETH0.0011883825.75838584
Approve193943362024-03-09 1:43:3548 days ago1709948615IN
Wrapped Basic CryptoKitties: WCK Token
0 ETH0.0022096147.58411491
Deposit Kitties ...193941682024-03-09 1:09:5948 days ago1709946599IN
Wrapped Basic CryptoKitties: WCK Token
0 ETH0.0058662843.45779205
Approve192432092024-02-16 21:44:4769 days ago1708119887IN
Wrapped Basic CryptoKitties: WCK Token
0 ETH0.0011307324.35032826
Approve192310272024-02-15 4:44:1171 days ago1707972251IN
Wrapped Basic CryptoKitties: WCK Token
0 ETH0.0007994317.3323486
Approve191675332024-02-06 6:51:2380 days ago1707202283IN
Wrapped Basic CryptoKitties: WCK Token
0 ETH0.0013509429.05516181
Burn Tokens And ...191390502024-02-02 6:51:2384 days ago1706856683IN
Wrapped Basic CryptoKitties: WCK Token
0 ETH0.0014697318.31882266
Burn Tokens And ...191390472024-02-02 6:50:4784 days ago1706856647IN
Wrapped Basic CryptoKitties: WCK Token
0 ETH0.0013548716.88721572
Approve190931742024-01-26 20:31:5990 days ago1706301119IN
Wrapped Basic CryptoKitties: WCK Token
0 ETH0.0004575918.9465351
Approve190601492024-01-22 5:17:4795 days ago1705900667IN
Wrapped Basic CryptoKitties: WCK Token
0 ETH0.0005357911.52340978
Transfer190596592024-01-22 3:38:2395 days ago1705894703IN
Wrapped Basic CryptoKitties: WCK Token
0 ETH0.000743515.86780099
Approve189842912024-01-11 14:30:47105 days ago1704983447IN
Wrapped Basic CryptoKitties: WCK Token
0 ETH0.0019655542.27360856
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
WrappedCK

Compiler Version
v0.5.8+commit.23d335f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2019-05-31
*/

pragma solidity ^0.5.8;

/**
 * @title ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/20
 */
interface IERC20 {
    function transfer(address to, uint256 value) external returns (bool);

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

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

    function totalSupply() external view returns (uint256);

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

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

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

    event Approval(address indexed owner, address indexed spender, uint256 value);
}


/**
 * @title SafeMath
 * @dev Unsigned math operations with safety checks that revert on error
 */
library SafeMath {
    /**
    * @dev Multiplies two unsigned integers, reverts on overflow.
    */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b);

        return c;
    }

    /**
    * @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero.
    */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
    * @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend).
    */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a);
        uint256 c = a - b;

        return c;
    }

    /**
    * @dev Adds two unsigned integers, reverts on overflow.
    */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a);

        return c;
    }

    /**
    * @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo),
    * reverts when dividing by zero.
    */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b != 0);
        return a % b;
    }
}


/**
 * @title Standard ERC20 token
 *
 * @dev Implementation of the basic standard token.
 * https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md
 * Originally based on code by FirstBlood:
 * https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol
 *
 * This implementation emits additional Approval events, allowing applications to reconstruct the allowance status for
 * all accounts just by listening to said events. Note that this isn't required by the specification, and other
 * compliant implementations may not do it.
 */
contract ERC20 is IERC20 {
    using SafeMath for uint256;

    mapping (address => uint256) private _balances;

    mapping (address => mapping (address => uint256)) private _allowed;

    uint256 private _totalSupply;

    /**
    * @dev Total number of tokens in existence
    */
    function totalSupply() public view returns (uint256) {
        return _totalSupply;
    }

    /**
    * @dev Gets the balance of the specified address.
    * @param owner The address to query the balance of.
    * @return An uint256 representing the amount owned by the passed address.
    */
    function balanceOf(address owner) public view returns (uint256) {
        return _balances[owner];
    }

    /**
     * @dev Function to check the amount of tokens that an owner allowed to a spender.
     * @param owner address The address which owns the funds.
     * @param spender address The address which will spend the funds.
     * @return A uint256 specifying the amount of tokens still available for the spender.
     */
    function allowance(address owner, address spender) public view returns (uint256) {
        return _allowed[owner][spender];
    }

    /**
    * @dev Transfer token for a specified address
    * @param to The address to transfer to.
    * @param value The amount to be transferred.
    */
    function transfer(address to, uint256 value) public returns (bool) {
        _transfer(msg.sender, to, value);
        return true;
    }

    /**
     * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
     * Beware that changing an allowance with this method brings the risk that someone may use both the old
     * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
     * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     * @param spender The address which will spend the funds.
     * @param value The amount of tokens to be spent.
     */
    function approve(address spender, uint256 value) public returns (bool) {
        require(spender != address(0));

        _allowed[msg.sender][spender] = value;
        emit Approval(msg.sender, spender, value);
        return true;
    }

    /**
     * @dev Transfer tokens from one address to another.
     * Note that while this function emits an Approval event, this is not required as per the specification,
     * and other compliant implementations may not emit the event.
     * @param from address The address which you want to send tokens from
     * @param to address The address which you want to transfer to
     * @param value uint256 the amount of tokens to be transferred
     */
    function transferFrom(address from, address to, uint256 value) public returns (bool) {
        _allowed[from][msg.sender] = _allowed[from][msg.sender].sub(value);
        _transfer(from, to, value);
        emit Approval(from, msg.sender, _allowed[from][msg.sender]);
        return true;
    }

    /**
     * @dev Increase the amount of tokens that an owner allowed to a spender.
     * approve should be called when allowed_[_spender] == 0. To increment
     * allowed value is better to use this function to avoid 2 calls (and wait until
     * the first transaction is mined)
     * From MonolithDAO Token.sol
     * Emits an Approval event.
     * @param spender The address which will spend the funds.
     * @param addedValue The amount of tokens to increase the allowance by.
     */
    function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
        require(spender != address(0));

        _allowed[msg.sender][spender] = _allowed[msg.sender][spender].add(addedValue);
        emit Approval(msg.sender, spender, _allowed[msg.sender][spender]);
        return true;
    }

    /**
     * @dev Decrease the amount of tokens that an owner allowed to a spender.
     * approve should be called when allowed_[_spender] == 0. To decrement
     * allowed value is better to use this function to avoid 2 calls (and wait until
     * the first transaction is mined)
     * From MonolithDAO Token.sol
     * Emits an Approval event.
     * @param spender The address which will spend the funds.
     * @param subtractedValue The amount of tokens to decrease the allowance by.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
        require(spender != address(0));

        _allowed[msg.sender][spender] = _allowed[msg.sender][spender].sub(subtractedValue);
        emit Approval(msg.sender, spender, _allowed[msg.sender][spender]);
        return true;
    }

    /**
    * @dev Transfer token for a specified addresses
    * @param from The address to transfer from.
    * @param to The address to transfer to.
    * @param value The amount to be transferred.
    */
    function _transfer(address from, address to, uint256 value) internal {
        require(to != address(0));

        _balances[from] = _balances[from].sub(value);
        _balances[to] = _balances[to].add(value);
        emit Transfer(from, to, value);
    }

    /**
     * @dev Internal function that mints an amount of the token and assigns it to
     * an account. This encapsulates the modification of balances such that the
     * proper events are emitted.
     * @param account The account that will receive the created tokens.
     * @param value The amount that will be created.
     */
    function _mint(address account, uint256 value) internal {
        require(account != address(0));

        _totalSupply = _totalSupply.add(value);
        _balances[account] = _balances[account].add(value);
        emit Transfer(address(0), account, value);
    }

    /**
     * @dev Internal function that burns an amount of the token of a given
     * account.
     * @param account The account whose tokens will be burnt.
     * @param value The amount that will be burnt.
     */
    function _burn(address account, uint256 value) internal {
        require(account != address(0));

        _totalSupply = _totalSupply.sub(value);
        _balances[account] = _balances[account].sub(value);
        emit Transfer(account, address(0), value);
    }

    /**
     * @dev Internal function that burns an amount of the token of a given
     * account, deducting from the sender's allowance for said account. Uses the
     * internal burn function.
     * Emits an Approval event (reflecting the reduced allowance).
     * @param account The account whose tokens will be burnt.
     * @param value The amount that will be burnt.
     */
    function _burnFrom(address account, uint256 value) internal {
        _allowed[account][msg.sender] = _allowed[account][msg.sender].sub(value);
        _burn(account, value);
        emit Approval(account, msg.sender, _allowed[account][msg.sender]);
    }
}


/**
 * @title Helps contracts guard against reentrancy attacks.
 * @author Remco Bloemen <remco@2π.com>, Eenae <[email protected]>
 * @dev If you mark a function `nonReentrant`, you should also
 * mark it `external`.
 */
contract ReentrancyGuard {
    /// @dev counter to allow mutex lock with only one SSTORE operation
    uint256 private _guardCounter;

    constructor() public {
        // The counter starts at one to prevent changing it from zero to a non-zero
        // value, which is a more expensive operation.
        _guardCounter = 1;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and make it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        _guardCounter += 1;
        uint256 localCounter = _guardCounter;
        _;
        require(localCounter == _guardCounter);
    }
}


/// @title Main contract for WrappedCK. This contract converts Cryptokitties between the ERC721 standard and the
///  ERC20 standard by locking cryptokitties into the contract and minting 1:1 backed ERC20 tokens, that
///  can then be redeemed for cryptokitties when desired.
/// @notice When wrapping a cryptokitty, you get a generic WCK token. Since the WCK token is generic, it has no
///  no information about what cryptokitty you submitted, so you will most likely not receive the same kitty
///  back when redeeming the token unless you specify that kitty's ID. The token only entitles you to receive 
///  *a* cryptokitty in return, not necessarily the *same* cryptokitty in return. A different user can submit
///  their own WCK tokens to the contract and withdraw the kitty that you originally deposited. WCK tokens have
///  no information about which kitty was originally deposited to mint WCK - this is due to the very nature of 
///  the ERC20 standard being fungible, and the ERC721 standard being nonfungible.
contract WrappedCK is ERC20, ReentrancyGuard {

    // OpenZeppelin's SafeMath library is used for all arithmetic operations to avoid overflows/underflows.
    using SafeMath for uint256;

    /* ****** */
    /* EVENTS */
    /* ****** */

    /// @dev This event is fired when a user deposits cryptokitties into the contract in exchange
    ///  for an equal number of WCK ERC20 tokens.
    /// @param kittyId  The cryptokitty id of the kitty that was deposited into the contract.
    event DepositKittyAndMintToken(
        uint256 kittyId
    );

    /// @dev This event is fired when a user deposits WCK ERC20 tokens into the contract in exchange
    ///  for an equal number of locked cryptokitties.
    /// @param kittyId  The cryptokitty id of the kitty that was withdrawn from the contract.
    event BurnTokenAndWithdrawKitty(
        uint256 kittyId
    );

    /* ******* */
    /* STORAGE */
    /* ******* */

    /// @dev An Array containing all of the cryptokitties that are locked in the contract, backing
    ///  WCK ERC20 tokens 1:1
    /// @notice Some of the kitties in this array were indeed deposited to the contract, but they
    ///  are no longer held by the contract. This is because withdrawSpecificKitty() allows a 
    ///  user to withdraw a kitty "out of order". Since it would be prohibitively expensive to 
    ///  shift the entire array once we've withdrawn a single element, we instead maintain this 
    ///  mapping to determine whether an element is still contained in the contract or not. 
    uint256[] private depositedKittiesArray;

    /// @dev A mapping keeping track of which kittyIDs are currently contained within the contract.
    /// @notice We cannot rely on depositedKittiesArray as the source of truth as to which cats are
    ///  deposited in the contract. This is because burnTokensAndWithdrawKitties() allows a user to 
    ///  withdraw a kitty "out of order" of the order that they are stored in the array. Since it 
    ///  would be prohibitively expensive to shift the entire array once we've withdrawn a single 
    ///  element, we instead maintain this mapping to determine whether an element is still contained 
    ///  in the contract or not. 
    mapping (uint256 => bool) private kittyIsDepositedInContract;

    /* ********* */
    /* CONSTANTS */
    /* ********* */

    /// @dev The metadata details about the "Wrapped CryptoKitties" WCK ERC20 token.
    uint8 constant public decimals = 18;
    string constant public name = "Wrapped CryptoKitties";
    string constant public symbol = "WCK";

    /// @dev The address of official CryptoKitties contract that stores the metadata about each cat.
    /// @notice The owner is not capable of changing the address of the CryptoKitties Core contract
    ///  once the contract has been deployed.
    address public kittyCoreAddress = 0x06012c8cf97BEaD5deAe237070F9587f8E7A266d;
    KittyCore kittyCore;

    /* ********* */
    /* FUNCTIONS */
    /* ********* */

    /// @notice Allows a user to lock cryptokitties in the contract in exchange for an equal number
    ///  of WCK ERC20 tokens.
    /// @param _kittyIds  The ids of the cryptokitties that will be locked into the contract.
    /// @notice The user must first call approve() in the Cryptokitties Core contract on each kitty
    ///  that thye wish to deposit before calling depositKittiesAndMintTokens(). There is no danger 
    ///  of this contract overreaching its approval, since the CryptoKitties Core contract's approve() 
    ///  function only approves this contract for a single Cryptokitty. Calling approve() allows this 
    ///  contract to transfer the specified kitty in the depositKittiesAndMintTokens() function.
    function depositKittiesAndMintTokens(uint256[] calldata _kittyIds) external nonReentrant {
        require(_kittyIds.length > 0, 'you must submit an array with at least one element');
        for(uint i = 0; i < _kittyIds.length; i++){
            uint256 kittyToDeposit = _kittyIds[i];
            require(msg.sender == kittyCore.ownerOf(kittyToDeposit), 'you do not own this cat');
            require(kittyCore.kittyIndexToApproved(kittyToDeposit) == address(this), 'you must approve() this contract to give it permission to withdraw this cat before you can deposit a cat');
            kittyCore.transferFrom(msg.sender, address(this), kittyToDeposit);
            _pushKitty(kittyToDeposit);
            emit DepositKittyAndMintToken(kittyToDeposit);
        }
        _mint(msg.sender, (_kittyIds.length).mul(10**18));
    }

    /// @notice Allows a user to burn WCK ERC20 tokens in exchange for an equal number of locked 
    ///  cryptokitties.
    /// @param _kittyIds  The IDs of the kitties that the user wishes to withdraw. If the user submits 0 
    ///  as the ID for any kitty, the contract uses the last kitty in the array for that kitty.
    /// @param _destinationAddresses  The addresses that the withdrawn kitties will be sent to (this allows 
    ///  anyone to "airdrop" kitties to addresses that they do not own in a single transaction).
    function burnTokensAndWithdrawKitties(uint256[] calldata _kittyIds, address[] calldata _destinationAddresses) external nonReentrant {
        require(_kittyIds.length == _destinationAddresses.length, 'you did not provide a destination address for each of the cats you wish to withdraw');
        require(_kittyIds.length > 0, 'you must submit an array with at least one element');

        uint256 numTokensToBurn = _kittyIds.length;
        require(balanceOf(msg.sender) >= numTokensToBurn.mul(10**18), 'you do not own enough tokens to withdraw this many ERC721 cats');
        _burn(msg.sender, numTokensToBurn.mul(10**18));
        
        for(uint i = 0; i < numTokensToBurn; i++){
            uint256 kittyToWithdraw = _kittyIds[i];
            if(kittyToWithdraw == 0){
                kittyToWithdraw = _popKitty();
            } else {
                require(kittyIsDepositedInContract[kittyToWithdraw] == true, 'this kitty has already been withdrawn');
                require(address(this) == kittyCore.ownerOf(kittyToWithdraw), 'the contract does not own this cat');
                kittyIsDepositedInContract[kittyToWithdraw] = false;
            }
            kittyCore.transfer(_destinationAddresses[i], kittyToWithdraw);
            emit BurnTokenAndWithdrawKitty(kittyToWithdraw);
        }
    }

    /// @notice Adds a locked cryptokitty to the end of the array
    /// @param _kittyId  The id of the cryptokitty that will be locked into the contract.
    function _pushKitty(uint256 _kittyId) internal {
        depositedKittiesArray.push(_kittyId);
        kittyIsDepositedInContract[_kittyId] = true;
    }

    /// @notice Removes an unlocked cryptokitty from the end of the array
    /// @notice The reason that this function must check if the kittyIsDepositedInContract
    ///  is that the withdrawSpecificKitty() function allows a user to withdraw a kitty
    ///  from the array out of order.
    /// @return  The id of the cryptokitty that will be unlocked from the contract.
    function _popKitty() internal returns(uint256){
        require(depositedKittiesArray.length > 0, 'there are no cats in the array');
        uint256 kittyId = depositedKittiesArray[depositedKittiesArray.length - 1];
        depositedKittiesArray.length--;
        while(kittyIsDepositedInContract[kittyId] == false){
            kittyId = depositedKittiesArray[depositedKittiesArray.length - 1];
            depositedKittiesArray.length--;
        }
        kittyIsDepositedInContract[kittyId] = false;
        return kittyId;
    }

    /// @notice Removes any kitties that exist in the array but are no longer held in the
    ///  contract, which happens if the first few kitties have previously been withdrawn 
    ///  out of order using the withdrawSpecificKitty() function.
    /// @notice This function exists to prevent a griefing attack where a malicious attacker
    ///  could call withdrawSpecificKitty() on a large number of kitties at the front of the
    ///  array, causing the while-loop in _popKitty to always run out of gas.
    /// @param _numSlotsToCheck  The number of slots to check in the array.
    function batchRemoveWithdrawnKittiesFromStorage(uint256 _numSlotsToCheck) external {
        require(_numSlotsToCheck <= depositedKittiesArray.length, 'you are trying to batch remove more slots than exist in the array');
        uint256 arrayIndex = depositedKittiesArray.length;
        for(uint i = 0; i < _numSlotsToCheck; i++){
            arrayIndex = arrayIndex.sub(1);
            uint256 kittyId = depositedKittiesArray[arrayIndex];
            if(kittyIsDepositedInContract[kittyId] == false){
                depositedKittiesArray.length--;
            } else {
                return;
            }
        }
    }

    /// @notice The owner is not capable of changing the address of the CryptoKitties Core
    ///  contract once the contract has been deployed.
    constructor() public {
        kittyCore = KittyCore(kittyCoreAddress);
    }

    /// @dev We leave the fallback function payable in case the current State Rent proposals require
    ///  us to send funds to this contract to keep it alive on mainnet.
    /// @notice There is no function that allows the contract creator to withdraw any funds sent
    ///  to this contract, so any funds sent directly to the fallback function that are not used for 
    ///  State Rent are lost forever.
    function() external payable {}
}

/// @title Interface for interacting with the CryptoKitties Core contract created by Dapper Labs Inc.
contract KittyCore {
    function ownerOf(uint256 _tokenId) public view returns (address owner);
    function transferFrom(address _from, address _to, uint256 _tokenId) external;
    function transfer(address _to, uint256 _tokenId) external;
    mapping (uint256 => address) public kittyIndexToApproved;
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_kittyIds","type":"uint256[]"},{"name":"_destinationAddresses","type":"address[]"}],"name":"burnTokensAndWithdrawKitties","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"kittyCoreAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_numSlotsToCheck","type":"uint256"}],"name":"batchRemoveWithdrawnKittiesFromStorage","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_kittyIds","type":"uint256[]"}],"name":"depositKittiesAndMintTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"kittyId","type":"uint256"}],"name":"DepositKittyAndMintToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"kittyId","type":"uint256"}],"name":"BurnTokenAndWithdrawKitty","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"}]

60806040527306012c8cf97bead5deae237070f9587f8e7a266d600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801561006557600080fd5b506001600381905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061240d806100e06000396000f3fe6080604052600436106100e85760003560e01c8063395093511161008a578063a457c2d711610059578063a457c2d7146105b1578063a9059cbb14610624578063b38de03014610697578063dd62ed3e1461071d576100e8565b8063395093511461040e57806370a08231146104815780638a8d413e146104e657806395d89b4114610521576100e8565b806318160ddd116100c657806318160ddd146102c857806323b872dd146102f35780632c2ccdfb14610386578063313ce567146103dd576100e8565b806306fdde03146100ea578063095ea7b31461017a57806317a09fb7146101ed575b005b3480156100f657600080fd5b506100ff6107a2565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561013f578082015181840152602081019050610124565b50505050905090810190601f16801561016c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561018657600080fd5b506101d36004803603604081101561019d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506107db565b604051808215151515815260200191505060405180910390f35b3480156101f957600080fd5b506102c66004803603604081101561021057600080fd5b810190808035906020019064010000000081111561022d57600080fd5b82018360208201111561023f57600080fd5b8035906020019184602083028401116401000000008311171561026157600080fd5b90919293919293908035906020019064010000000081111561028257600080fd5b82018360208201111561029457600080fd5b803590602001918460208302840111640100000000831117156102b657600080fd5b9091929391929390505050610906565b005b3480156102d457600080fd5b506102dd610ddc565b6040518082815260200191505060405180910390f35b3480156102ff57600080fd5b5061036c6004803603606081101561031657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610de6565b604051808215151515815260200191505060405180910390f35b34801561039257600080fd5b5061039b610fee565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103e957600080fd5b506103f2611014565b604051808260ff1660ff16815260200191505060405180910390f35b34801561041a57600080fd5b506104676004803603604081101561043157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611019565b604051808215151515815260200191505060405180910390f35b34801561048d57600080fd5b506104d0600480360360208110156104a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061124e565b6040518082815260200191505060405180910390f35b3480156104f257600080fd5b5061051f6004803603602081101561050957600080fd5b8101908080359060200190929190505050611296565b005b34801561052d57600080fd5b506105366113a2565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561057657808201518184015260208101905061055b565b50505050905090810190601f1680156105a35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156105bd57600080fd5b5061060a600480360360408110156105d457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113db565b604051808215151515815260200191505060405180910390f35b34801561063057600080fd5b5061067d6004803603604081101561064757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611610565b604051808215151515815260200191505060405180910390f35b3480156106a357600080fd5b5061071b600480360360208110156106ba57600080fd5b81019080803590602001906401000000008111156106d757600080fd5b8201836020820111156106e957600080fd5b8035906020019184602083028401116401000000008311171561070b57600080fd5b9091929391929390505050611627565b005b34801561072957600080fd5b5061078c6004803603604081101561074057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ac0565b6040518082815260200191505060405180910390f35b6040518060400160405280601581526020017f577261707065642043727970746f4b697474696573000000000000000000000081525081565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561081657600080fd5b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60016003600082825401925050819055506000600354905082829050858590501461097c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252605381526020018061232f6053913960600191505060405180910390fd5b600085859050116109d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806122fd6032913960400191505060405180910390fd5b60008585905090506109fb670de0b6b3a764000082611b4790919063ffffffff16565b610a043361124e565b1015610a5b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603e815260200180612382603e913960400191505060405180910390fd5b610a7f33610a7a670de0b6b3a764000084611b4790919063ffffffff16565b611b81565b60008090505b81811015610dc5576000878783818110610a9b57fe5b9050602002013590506000811415610abc57610ab5611cd3565b9050610c97565b600115156005600083815260200190815260200160002060009054906101000a900460ff16151514610b39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061222f6025913960400191505060405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e826040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610bac57600080fd5b505afa158015610bc0573d6000803e3d6000fd5b505050506040513d6020811015610bd657600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614610c6a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806123c06022913960400191505060405180910390fd5b60006005600083815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb878785818110610ce157fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015610d6857600080fd5b505af1158015610d7c573d6000803e3d6000fd5b505050507f2f467b677a4a63395bce26e8731fa49a02cd892ddeaf266650b403f140ba4590816040518082815260200191505060405180910390a1508080600101915050610a85565b50506003548114610dd557600080fd5b5050505050565b6000600254905090565b6000610e7782600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e2790919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f02848484611e47565b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600190509392505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601281565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561105457600080fd5b6110e382600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461201190919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6004805490508111156112f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260418152602001806122bc6041913960600191505060405180910390fd5b6000600480549050905060008090505b8281101561139c57611320600183611e2790919063ffffffff16565b915060006004838154811061133157fe5b90600052602060002001549050600015156005600083815260200190815260200160002060009054906101000a900460ff161515141561138657600480548091906001900361138091906121dd565b5061138e565b50505061139f565b508080600101915050611304565b50505b50565b6040518060400160405280600381526020017f57434b000000000000000000000000000000000000000000000000000000000081525081565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561141657600080fd5b6114a582600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e2790919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b600061161d338484611e47565b6001905092915050565b6001600360008282540192505081905550600060035490506000838390501161169b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806122fd6032913960400191505060405180910390fd5b60008090505b83839050811015611a855760008484838181106116ba57fe5b905060200201359050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e826040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561173657600080fd5b505afa15801561174a573d6000803e3d6000fd5b505050506040513d602081101561176057600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611811576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f796f7520646f206e6f74206f776e20746869732063617400000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663481af3d3836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561189b57600080fd5b505afa1580156118af573d6000803e3d6000fd5b505050506040513d60208110156118c557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614611942576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260688152602001806122546068913960800191505060405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015611a1f57600080fd5b505af1158015611a33573d6000803e3d6000fd5b50505050611a4081612030565b7f999fa95b06ad12b3436bab902713e383705707923f9d7c75f5432b28a6487010816040518082815260200191505060405180910390a15080806001019150506116a1565b50611aad33611aa8670de0b6b3a764000086869050611b4790919063ffffffff16565b61208b565b6003548114611abb57600080fd5b505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080831415611b5a5760009050611b7b565b6000828402905082848281611b6b57fe5b0414611b7657600080fd5b809150505b92915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bbb57600080fd5b611bd081600254611e2790919063ffffffff16565b600281905550611c27816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e2790919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008060048054905011611d4f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f746865726520617265206e6f206361747320696e20746865206172726179000081525060200191505060405180910390fd5b6000600460016004805490500381548110611d6657fe5b906000526020600020015490506004805480919060019003611d8891906121dd565b505b600015156005600083815260200190815260200160002060009054906101000a900460ff1615151415611df457600460016004805490500381548110611dcc57fe5b906000526020600020015490506004805480919060019003611dee91906121dd565b50611d8a565b60006005600083815260200190815260200160002060006101000a81548160ff0219169083151502179055508091505090565b600082821115611e3657600080fd5b600082840390508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e8157600080fd5b611ed2816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e2790919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f65816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461201190919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008082840190508381101561202657600080fd5b8091505092915050565b600481908060018154018082558091505090600182039060005260206000200160009091929091909150555060016005600083815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156120c557600080fd5b6120da8160025461201190919063ffffffff16565b600281905550612131816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461201190919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b815481835581811115612204578183600052602060002091820191016122039190612209565b5b505050565b61222b91905b8082111561222757600081600090555060010161220f565b5090565b9056fe74686973206b697474792068617320616c7265616479206265656e2077697468647261776e796f75206d75737420617070726f76652829207468697320636f6e747261637420746f2067697665206974207065726d697373696f6e20746f207769746864726177207468697320636174206265666f726520796f752063616e206465706f736974206120636174796f752061726520747279696e6720746f2062617463682072656d6f7665206d6f726520736c6f7473207468616e20657869737420696e20746865206172726179796f75206d757374207375626d697420616e2061727261792077697468206174206c65617374206f6e6520656c656d656e74796f7520646964206e6f742070726f7669646520612064657374696e6174696f6e206164647265737320666f722065616368206f6620746865206361747320796f75207769736820746f207769746864726177796f7520646f206e6f74206f776e20656e6f75676820746f6b656e7320746f2077697468647261772074686973206d616e7920455243373231206361747374686520636f6e747261637420646f6573206e6f74206f776e207468697320636174a165627a7a72305820d363973b5673f94e494be90b2ab90cee20544398819174d7024fdd5c61c862e40029

Deployed Bytecode

0x6080604052600436106100e85760003560e01c8063395093511161008a578063a457c2d711610059578063a457c2d7146105b1578063a9059cbb14610624578063b38de03014610697578063dd62ed3e1461071d576100e8565b8063395093511461040e57806370a08231146104815780638a8d413e146104e657806395d89b4114610521576100e8565b806318160ddd116100c657806318160ddd146102c857806323b872dd146102f35780632c2ccdfb14610386578063313ce567146103dd576100e8565b806306fdde03146100ea578063095ea7b31461017a57806317a09fb7146101ed575b005b3480156100f657600080fd5b506100ff6107a2565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561013f578082015181840152602081019050610124565b50505050905090810190601f16801561016c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561018657600080fd5b506101d36004803603604081101561019d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506107db565b604051808215151515815260200191505060405180910390f35b3480156101f957600080fd5b506102c66004803603604081101561021057600080fd5b810190808035906020019064010000000081111561022d57600080fd5b82018360208201111561023f57600080fd5b8035906020019184602083028401116401000000008311171561026157600080fd5b90919293919293908035906020019064010000000081111561028257600080fd5b82018360208201111561029457600080fd5b803590602001918460208302840111640100000000831117156102b657600080fd5b9091929391929390505050610906565b005b3480156102d457600080fd5b506102dd610ddc565b6040518082815260200191505060405180910390f35b3480156102ff57600080fd5b5061036c6004803603606081101561031657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610de6565b604051808215151515815260200191505060405180910390f35b34801561039257600080fd5b5061039b610fee565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103e957600080fd5b506103f2611014565b604051808260ff1660ff16815260200191505060405180910390f35b34801561041a57600080fd5b506104676004803603604081101561043157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611019565b604051808215151515815260200191505060405180910390f35b34801561048d57600080fd5b506104d0600480360360208110156104a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061124e565b6040518082815260200191505060405180910390f35b3480156104f257600080fd5b5061051f6004803603602081101561050957600080fd5b8101908080359060200190929190505050611296565b005b34801561052d57600080fd5b506105366113a2565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561057657808201518184015260208101905061055b565b50505050905090810190601f1680156105a35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156105bd57600080fd5b5061060a600480360360408110156105d457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113db565b604051808215151515815260200191505060405180910390f35b34801561063057600080fd5b5061067d6004803603604081101561064757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611610565b604051808215151515815260200191505060405180910390f35b3480156106a357600080fd5b5061071b600480360360208110156106ba57600080fd5b81019080803590602001906401000000008111156106d757600080fd5b8201836020820111156106e957600080fd5b8035906020019184602083028401116401000000008311171561070b57600080fd5b9091929391929390505050611627565b005b34801561072957600080fd5b5061078c6004803603604081101561074057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ac0565b6040518082815260200191505060405180910390f35b6040518060400160405280601581526020017f577261707065642043727970746f4b697474696573000000000000000000000081525081565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561081657600080fd5b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60016003600082825401925050819055506000600354905082829050858590501461097c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252605381526020018061232f6053913960600191505060405180910390fd5b600085859050116109d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806122fd6032913960400191505060405180910390fd5b60008585905090506109fb670de0b6b3a764000082611b4790919063ffffffff16565b610a043361124e565b1015610a5b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603e815260200180612382603e913960400191505060405180910390fd5b610a7f33610a7a670de0b6b3a764000084611b4790919063ffffffff16565b611b81565b60008090505b81811015610dc5576000878783818110610a9b57fe5b9050602002013590506000811415610abc57610ab5611cd3565b9050610c97565b600115156005600083815260200190815260200160002060009054906101000a900460ff16151514610b39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061222f6025913960400191505060405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e826040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610bac57600080fd5b505afa158015610bc0573d6000803e3d6000fd5b505050506040513d6020811015610bd657600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614610c6a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806123c06022913960400191505060405180910390fd5b60006005600083815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb878785818110610ce157fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015610d6857600080fd5b505af1158015610d7c573d6000803e3d6000fd5b505050507f2f467b677a4a63395bce26e8731fa49a02cd892ddeaf266650b403f140ba4590816040518082815260200191505060405180910390a1508080600101915050610a85565b50506003548114610dd557600080fd5b5050505050565b6000600254905090565b6000610e7782600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e2790919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f02848484611e47565b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600190509392505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601281565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561105457600080fd5b6110e382600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461201190919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6004805490508111156112f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260418152602001806122bc6041913960600191505060405180910390fd5b6000600480549050905060008090505b8281101561139c57611320600183611e2790919063ffffffff16565b915060006004838154811061133157fe5b90600052602060002001549050600015156005600083815260200190815260200160002060009054906101000a900460ff161515141561138657600480548091906001900361138091906121dd565b5061138e565b50505061139f565b508080600101915050611304565b50505b50565b6040518060400160405280600381526020017f57434b000000000000000000000000000000000000000000000000000000000081525081565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561141657600080fd5b6114a582600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e2790919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b600061161d338484611e47565b6001905092915050565b6001600360008282540192505081905550600060035490506000838390501161169b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806122fd6032913960400191505060405180910390fd5b60008090505b83839050811015611a855760008484838181106116ba57fe5b905060200201359050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e826040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561173657600080fd5b505afa15801561174a573d6000803e3d6000fd5b505050506040513d602081101561176057600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611811576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f796f7520646f206e6f74206f776e20746869732063617400000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663481af3d3836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561189b57600080fd5b505afa1580156118af573d6000803e3d6000fd5b505050506040513d60208110156118c557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614611942576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260688152602001806122546068913960800191505060405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015611a1f57600080fd5b505af1158015611a33573d6000803e3d6000fd5b50505050611a4081612030565b7f999fa95b06ad12b3436bab902713e383705707923f9d7c75f5432b28a6487010816040518082815260200191505060405180910390a15080806001019150506116a1565b50611aad33611aa8670de0b6b3a764000086869050611b4790919063ffffffff16565b61208b565b6003548114611abb57600080fd5b505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080831415611b5a5760009050611b7b565b6000828402905082848281611b6b57fe5b0414611b7657600080fd5b809150505b92915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bbb57600080fd5b611bd081600254611e2790919063ffffffff16565b600281905550611c27816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e2790919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008060048054905011611d4f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f746865726520617265206e6f206361747320696e20746865206172726179000081525060200191505060405180910390fd5b6000600460016004805490500381548110611d6657fe5b906000526020600020015490506004805480919060019003611d8891906121dd565b505b600015156005600083815260200190815260200160002060009054906101000a900460ff1615151415611df457600460016004805490500381548110611dcc57fe5b906000526020600020015490506004805480919060019003611dee91906121dd565b50611d8a565b60006005600083815260200190815260200160002060006101000a81548160ff0219169083151502179055508091505090565b600082821115611e3657600080fd5b600082840390508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e8157600080fd5b611ed2816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e2790919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f65816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461201190919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008082840190508381101561202657600080fd5b8091505092915050565b600481908060018154018082558091505090600182039060005260206000200160009091929091909150555060016005600083815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156120c557600080fd5b6120da8160025461201190919063ffffffff16565b600281905550612131816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461201190919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b815481835581811115612204578183600052602060002091820191016122039190612209565b5b505050565b61222b91905b8082111561222757600081600090555060010161220f565b5090565b9056fe74686973206b697474792068617320616c7265616479206265656e2077697468647261776e796f75206d75737420617070726f76652829207468697320636f6e747261637420746f2067697665206974207065726d697373696f6e20746f207769746864726177207468697320636174206265666f726520796f752063616e206465706f736974206120636174796f752061726520747279696e6720746f2062617463682072656d6f7665206d6f726520736c6f7473207468616e20657869737420696e20746865206172726179796f75206d757374207375626d697420616e2061727261792077697468206174206c65617374206f6e6520656c656d656e74796f7520646964206e6f742070726f7669646520612064657374696e6174696f6e206164647265737320666f722065616368206f6620746865206361747320796f75207769736820746f207769746864726177796f7520646f206e6f74206f776e20656e6f75676820746f6b656e7320746f2077697468647261772074686973206d616e7920455243373231206361747374686520636f6e747261637420646f6573206e6f74206f776e207468697320636174a165627a7a72305820d363973b5673f94e494be90b2ab90cee20544398819174d7024fdd5c61c862e40029

Deployed Bytecode Sourcemap

12551:9692:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15074:53;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15074:53:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;15074:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5402:244;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5402:244:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5402:244:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;17728:1334;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17728:1334:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17728:1334:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;17728:1334:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;17728:1334:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;17728:1334:0;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;17728:1334:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;17728:1334:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;17728:1334:0;;;;;;;;;;;;:::i;:::-;;3561:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3561:91:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6119:299;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6119:299:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6119:299:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15430:76;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15430:76:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15032:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15032:35:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6933:323;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6933:323:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6933:323:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3868:106;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3868:106:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3868:106:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20915:637;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20915:637:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20915:637:0;;;;;;;;;;;;;;;;;:::i;:::-;;15134:37;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15134:37:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;15134:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7776:333;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7776:333:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7776:333:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4615:140;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4615:140:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4615:140:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;16343:841;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16343:841:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16343:841:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;16343:841:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;16343:841:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;16343:841:0;;;;;;;;;;;;:::i;:::-;;4313:131;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4313:131:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4313:131:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15074:53;;;;;;;;;;;;;;;;;;;:::o;5402:244::-;5467:4;5511:1;5492:21;;:7;:21;;;;5484:30;;;;;;5559:5;5527:8;:20;5536:10;5527:20;;;;;;;;;;;;;;;:29;5548:7;5527:29;;;;;;;;;;;;;;;:37;;;;5601:7;5580:36;;5589:10;5580:36;;;5610:5;5580:36;;;;;;;;;;;;;;;;;;5634:4;5627:11;;5402:244;;;;:::o;17728:1334::-;11390:1;11373:13;;:18;;;;;;;;;;;11402:20;11425:13;;11402:36;;17899:21;;:28;;17879:9;;:16;;:48;17871:144;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18053:1;18034:9;;:16;;:20;18026:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18122:23;18148:9;;:16;;18122:42;;18208:27;18228:6;18208:15;:19;;:27;;;;:::i;:::-;18183:21;18193:10;18183:9;:21::i;:::-;:52;;18175:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18313:46;18319:10;18331:27;18351:6;18331:15;:19;;:27;;;;:::i;:::-;18313:5;:46::i;:::-;18384:6;18393:1;18384:10;;18380:675;18400:15;18396:1;:19;18380:675;;;18436:23;18462:9;;18472:1;18462:12;;;;;;;;;;;;;18436:38;;18511:1;18492:15;:20;18489:417;;;18550:11;:9;:11::i;:::-;18532:29;;18489:417;;;18657:4;18610:51;;:26;:43;18637:15;18610:43;;;;;;;;;;;;;;;;;;;;;:51;;;18602:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18747:9;;;;;;;;;;;:17;;;18765:15;18747:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18747:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18747:34:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18747:34:0;;;;;;;;;;;;;;;;18730:51;;18738:4;18730:51;;;18722:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18885:5;18839:26;:43;18866:15;18839:43;;;;;;;;;;;;:51;;;;;;;;;;;;;;;;;;18489:417;18920:9;;;;;;;;;;;:18;;;18939:21;;18961:1;18939:24;;;;;;;;;;;;;;;18965:15;18920:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18920:61:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18920:61:0;;;;19001:42;19027:15;19001:42;;;;;;;;;;;;;;;;;;18380:675;18417:3;;;;;;;18380:675;;;;11449:1;11485:13;;11469:12;:29;11461:38;;;;;;17728:1334;;;;;:::o;3561:91::-;3605:7;3632:12;;3625:19;;3561:91;:::o;6119:299::-;6198:4;6244:37;6275:5;6244:8;:14;6253:4;6244:14;;;;;;;;;;;;;;;:26;6259:10;6244:26;;;;;;;;;;;;;;;;:30;;:37;;;;:::i;:::-;6215:8;:14;6224:4;6215:14;;;;;;;;;;;;;;;:26;6230:10;6215:26;;;;;;;;;;;;;;;:66;;;;6292:26;6302:4;6308:2;6312:5;6292:9;:26::i;:::-;6349:10;6334:54;;6343:4;6334:54;;;6361:8;:14;6370:4;6361:14;;;;;;;;;;;;;;;:26;6376:10;6361:26;;;;;;;;;;;;;;;;6334:54;;;;;;;;;;;;;;;;;;6406:4;6399:11;;6119:299;;;;;:::o;15430:76::-;;;;;;;;;;;;;:::o;15032:35::-;15065:2;15032:35;:::o;6933:323::-;7013:4;7057:1;7038:21;;:7;:21;;;;7030:30;;;;;;7105:45;7139:10;7105:8;:20;7114:10;7105:20;;;;;;;;;;;;;;;:29;7126:7;7105:29;;;;;;;;;;;;;;;;:33;;:45;;;;:::i;:::-;7073:8;:20;7082:10;7073:20;;;;;;;;;;;;;;;:29;7094:7;7073:29;;;;;;;;;;;;;;;:77;;;;7187:7;7166:60;;7175:10;7166:60;;;7196:8;:20;7205:10;7196:20;;;;;;;;;;;;;;;:29;7217:7;7196:29;;;;;;;;;;;;;;;;7166:60;;;;;;;;;;;;;;;;;;7244:4;7237:11;;6933:323;;;;:::o;3868:106::-;3923:7;3950:9;:16;3960:5;3950:16;;;;;;;;;;;;;;;;3943:23;;3868:106;;;:::o;20915:637::-;21037:21;:28;;;;21017:16;:48;;21009:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21146:18;21167:21;:28;;;;21146:49;;21210:6;21219:1;21210:10;;21206:339;21226:16;21222:1;:20;21206:339;;;21276:17;21291:1;21276:10;:14;;:17;;;;:::i;:::-;21263:30;;21308:15;21326:21;21348:10;21326:33;;;;;;;;;;;;;;;;21308:51;;21416:5;21377:44;;:26;:35;21404:7;21377:35;;;;;;;;;;;;;;;;;;;;;:44;;;21374:160;;;21441:21;:30;;;;;;;;;;;;:::i;:::-;;21374:160;;;21512:7;;;;;21374:160;21206:339;21244:3;;;;;;;21206:339;;;;20915:637;;;:::o;15134:37::-;;;;;;;;;;;;;;;;;;;:::o;7776:333::-;7861:4;7905:1;7886:21;;:7;:21;;;;7878:30;;;;;;7953:50;7987:15;7953:8;:20;7962:10;7953:20;;;;;;;;;;;;;;;:29;7974:7;7953:29;;;;;;;;;;;;;;;;:33;;:50;;;;:::i;:::-;7921:8;:20;7930:10;7921:20;;;;;;;;;;;;;;;:29;7942:7;7921:29;;;;;;;;;;;;;;;:82;;;;8040:7;8019:60;;8028:10;8019:60;;;8049:8;:20;8058:10;8049:20;;;;;;;;;;;;;;;:29;8070:7;8049:29;;;;;;;;;;;;;;;;8019:60;;;;;;;;;;;;;;;;;;8097:4;8090:11;;7776:333;;;;:::o;4615:140::-;4676:4;4693:32;4703:10;4715:2;4719:5;4693:9;:32::i;:::-;4743:4;4736:11;;4615:140;;;;:::o;16343:841::-;11390:1;11373:13;;:18;;;;;;;;;;;11402:20;11425:13;;11402:36;;16470:1;16451:9;;:16;;:20;16443:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16541:6;16550:1;16541:10;;16537:580;16557:9;;:16;;16553:1;:20;16537:580;;;16594:22;16619:9;;16629:1;16619:12;;;;;;;;;;;;;16594:37;;16668:9;;;;;;;;;;;:17;;;16686:14;16668:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16668:33:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16668:33:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16668:33:0;;;;;;;;;;;;;;;;16654:47;;:10;:47;;;16646:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16810:4;16752:63;;:9;;;;;;;;;;;:30;;;16783:14;16752:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16752:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16752:46:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16752:46:0;;;;;;;;;;;;;;;;:63;;;16744:180;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16939:9;;;;;;;;;;;:22;;;16962:10;16982:4;16989:14;16939:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16939:65:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16939:65:0;;;;17019:26;17030:14;17019:10;:26::i;:::-;17065:40;17090:14;17065:40;;;;;;;;;;;;;;;;;;16537:580;16575:3;;;;;;;16537:580;;;;17127:49;17133:10;17145:30;17168:6;17146:9;;:16;;17145:22;;:30;;;;:::i;:::-;17127:5;:49::i;:::-;11485:13;;11469:12;:29;11461:38;;;;;;16343:841;;;:::o;4313:131::-;4385:7;4412:8;:15;4421:5;4412:15;;;;;;;;;;;;;;;:24;4428:7;4412:24;;;;;;;;;;;;;;;;4405:31;;4313:131;;;;:::o;1002:433::-;1060:7;1309:1;1304;:6;1300:47;;;1334:1;1327:8;;;;1300:47;1359:9;1375:1;1371;:5;1359:17;;1404:1;1399;1395;:5;;;;;;:10;1387:19;;;;;;1426:1;1419:8;;;1002:433;;;;;:::o;9448:269::-;9542:1;9523:21;;:7;:21;;;;9515:30;;;;;;9573:23;9590:5;9573:12;;:16;;:23;;;;:::i;:::-;9558:12;:38;;;;9628:29;9651:5;9628:9;:18;9638:7;9628:18;;;;;;;;;;;;;;;;:22;;:29;;;;:::i;:::-;9607:9;:18;9617:7;9607:18;;;;;;;;;;;;;;;:50;;;;9699:1;9673:36;;9682:7;9673:36;;;9703:5;9673:36;;;;;;;;;;;;;;;;;;9448:269;;:::o;19772:542::-;19810:7;19868:1;19837:21;:28;;;;:32;19829:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19915:15;19933:21;19986:1;19955:21;:28;;;;:32;19933:55;;;;;;;;;;;;;;;;19915:73;;19999:21;:30;;;;;;;;;;;;:::i;:::-;;20040:188;20085:5;20046:44;;:26;:35;20073:7;20046:35;;;;;;;;;;;;;;;;;;;;;:44;;;20040:188;;;20116:21;20169:1;20138:21;:28;;;;:32;20116:55;;;;;;;;;;;;;;;;20106:65;;20186:21;:30;;;;;;;;;;;;:::i;:::-;;20040:188;;;20276:5;20238:26;:35;20265:7;20238:35;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;20299:7;20292:14;;;19772:542;:::o;2007:150::-;2065:7;2098:1;2093;:6;;2085:15;;;;;;2111:9;2127:1;2123;:5;2111:17;;2148:1;2141:8;;;2007:150;;;;:::o;8331:262::-;8433:1;8419:16;;:2;:16;;;;8411:25;;;;;;8467:26;8487:5;8467:9;:15;8477:4;8467:15;;;;;;;;;;;;;;;;:19;;:26;;;;:::i;:::-;8449:9;:15;8459:4;8449:15;;;;;;;;;;;;;;;:44;;;;8520:24;8538:5;8520:9;:13;8530:2;8520:13;;;;;;;;;;;;;;;;:17;;:24;;;;:::i;:::-;8504:9;:13;8514:2;8504:13;;;;;;;;;;;;;;;:40;;;;8575:2;8560:25;;8569:4;8560:25;;;8579:5;8560:25;;;;;;;;;;;;;;;;;;8331:262;;;:::o;2243:150::-;2301:7;2321:9;2337:1;2333;:5;2321:17;;2362:1;2357;:6;;2349:15;;;;;;2384:1;2377:8;;;2243:150;;;;:::o;19228:156::-;19286:21;19313:8;19286:36;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;19286:36:0;;;;;;;;;;;;;;;;;;;;;;19372:4;19333:26;:36;19360:8;19333:36;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;19228:156;:::o;8945:269::-;9039:1;9020:21;;:7;:21;;;;9012:30;;;;;;9070:23;9087:5;9070:12;;:16;;:23;;;;:::i;:::-;9055:12;:38;;;;9125:29;9148:5;9125:9;:18;9135:7;9125:18;;;;;;;;;;;;;;;;:22;;:29;;;;:::i;:::-;9104:9;:18;9114:7;9104:18;;;;;;;;;;;;;;;:50;;;;9191:7;9170:36;;9187:1;9170:36;;;9200:5;9170:36;;;;;;;;;;;;;;;;;;8945:269;;:::o;12551:9692::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

bzzr://d363973b5673f94e494be90b2ab90cee20544398819174d7024fdd5c61c862e4

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  ]

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.