ETH Price: $3,122.49 (+0.83%)

Token

Wrapped CryptoKitties (WCK)
 

Overview

Max Total Supply

7 WCK

Holders

7

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

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-22
*/

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. The token only entitles you to receive *a* cryptokitty in return, not 
///  necessarily the *same* cryptokitty in return. 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.
    /// @param tokensMinted  The number of WCK ERC20 tokens that were minted (measured in 10^18 times
    ///  the number of tokens minted, due to 18 decimal places).
    event DepositKittyAndMintToken(
        uint256 kittyId,
        uint256 tokensMinted
    );

    /// @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.
    /// @param tokensBurned  The number of WCK ERC20 tokens that were burned (measured in 10^18 times
    ///  the number of tokens minted, due to 18 decimal places).
    event BurnTokenAndWithdrawKitty(
        uint256 kittyId,
        uint256 tokensBurned
    );

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

    /// @dev A queue containing all of the cryptokitties that are locked in the contract, backing
    ///  WCK ERC20 tokens 1:1
    /// @notice We use a queue rather than a stack since many users in the community requested the
    ///  ability to deposit and withdraw a kitty in order to "reroll" its appearance.
    uint256[] private depositedKittiesQueue;
    uint256 private queueStartIndex;
    uint256 private queueEndIndex;
    
    /* ********* */
    /* 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 one cryptokitty in the contract in exchange for one WCK ERC20 
    ///  token.
    /// @param _kittyId  The id of the cryptokitty that will be locked into the contract.
    /// @notice The user must first call approve() in the Cryptokitties Core contract before calling 
    ///  depositAndMint(). 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 
    ///  depositAndMint() function.
    function depositKittyAndMintToken(uint256 _kittyId) external nonReentrant {
        require(msg.sender == kittyCore.ownerOf(_kittyId), 'you do not own this cat');
        require(kittyCore.kittyIndexToApproved(_kittyId) == 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), _kittyId);
        _enqueueKitty(_kittyId);
        _mint(msg.sender, 10**18);
        emit DepositKittyAndMintToken(_kittyId, 10**18);
    }

    /// @notice Convenience function for calling depositAndMint() multiple times in a single transaction.
    /// @param _kittyIds  The ids of the cryptokitties that will be locked into the contract.
    function multiDepositKittyAndMintToken(uint256[] calldata _kittyIds) external nonReentrant {
        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);
            _enqueueKitty(kittyToDeposit);
            emit DepositKittyAndMintToken(kittyToDeposit, 10**18);
        }
        _mint(msg.sender, (_kittyIds.length).mul(10**18));
    }

    /// @notice Allows a user to burn one WCK ERC20 token in exchange for one locked cryptokitty.
    /// @notice Due to the nature of WCK ERC20 being fungible and interchangeable, the contract is
    ///  not able to coordinate that you receive the same crypokitty that you originally locked into
    ///  the contract.
    function burnTokenAndWithdrawKitty() external nonReentrant {
        require(balanceOf(msg.sender) >= 10**18, 'you do not own enough tokens to withdraw an ERC721 cat');
        uint256 kittyId = _dequeueKitty();
        _burn(msg.sender, 10**18);
        kittyCore.transfer(msg.sender, kittyId);
        emit BurnTokenAndWithdrawKitty(kittyId, 10**18);
    }

    /// @notice Convenience function for calling burnAndWithdraw() multiple times in a single transaction.
    /// @param _numTokens  The number of WCK ERC20 tokens that will be burned in exchange for cryptokitties.
    function multiBurnTokenAndWithdrawKitty(uint256 _numTokens) external nonReentrant {
        require(balanceOf(msg.sender) >= _numTokens.mul(10**18), 'you do not own enough tokens to withdraw this many ERC721 cats');
        _burn(msg.sender, _numTokens.mul(10**18));
        for(uint i = 0; i < _numTokens; i++){
            uint256 kittyToWithdraw = _dequeueKitty();
            kittyCore.transfer(msg.sender, kittyToWithdraw);
            emit BurnTokenAndWithdrawKitty(kittyToWithdraw, 10**18);
        }
    }

    /// @notice Allows a user to lock one cryptokitty in the contract in exchange for unlocking a 
    ///  different cryptokitty that was previously locked in the contract.
    /// @param _kittyId  The id of the cryptokitty that will be locked into the contract.
    /// @notice The user must first call approve() in the Cryptokitties Core contract before calling 
    ///  depositAndMint(). 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 
    ///  depositAndMint() function.
    /// @notice This is a convenience function so that users do not need to call both depositAndMint()
    ///  and burnAndWithdraw() in succession. Many users in the community requested the ability to 
    ///  deposit and withdraw a kitty in order to "reroll" its appearance, which this function 
    ///  accomplishes.
    function depositKittyAndWithdrawDifferentKitty(uint256 _kittyId) external nonReentrant {
        require(msg.sender == kittyCore.ownerOf(_kittyId), 'you do not own this cat');
        require(kittyCore.kittyIndexToApproved(_kittyId) == 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), _kittyId);
        _enqueueKitty(_kittyId);
        uint256 kittyToWithdraw = _dequeueKitty();
        kittyCore.transfer(msg.sender, kittyToWithdraw);
        emit DepositKittyAndMintToken(_kittyId, 10**18);
        emit BurnTokenAndWithdrawKitty(kittyToWithdraw, 10**18);
    }

    /// @notice Convenience function for calling depositAndWithdraw() multiple times in a single transaction.
    /// @param _kittyIds  The ids of the cryptokitties that will be locked into the contract.
    function multiDepositKittyAndWithdrawDifferentKitty(uint256[] calldata _kittyIds) external nonReentrant {
        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);
            _enqueueKitty(kittyToDeposit);
            uint256 kittyToWithdraw = _dequeueKitty();
            kittyCore.transfer(msg.sender, kittyToWithdraw);
            emit DepositKittyAndMintToken(kittyToDeposit, 10**18);
            emit BurnTokenAndWithdrawKitty(kittyToWithdraw, 10**18);
        }
    }
    
    /// @notice Adds a locked cryptokitty to the end of the queue
    /// @param _kittyId  The id of the cryptokitty that will be locked into the contract.
    function _enqueueKitty(uint256 _kittyId) internal {
        depositedKittiesQueue.push(_kittyId);
        queueEndIndex = queueEndIndex.add(1);
    }

    /// @notice Adds a locked cryptokitty to the end of the queue
    /// @return  The id of the cryptokitty that will be unlocked from the contract.
    function _dequeueKitty() internal returns(uint256){
        require(queueStartIndex < queueEndIndex, 'there are no cats in the queue');
        uint256 kittyId = depositedKittiesQueue[queueStartIndex];
        queueStartIndex = queueStartIndex.add(1);
        return kittyId;
    }

    /// @return The number of cryptokitties locked in the contract that back outstanding
    ///  WCK tokens.
    function totalCatsLockedInContract() public view returns(uint256){
        return queueEndIndex.sub(queueStartIndex);
    }

    /// @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 fucntion 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":"_kittyId","type":"uint256"}],"name":"depositKittyAndMintToken","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":"totalCatsLockedInContract","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","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":false,"inputs":[],"name":"burnTokenAndWithdrawKitty","outputs":[],"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":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_kittyId","type":"uint256"}],"name":"depositKittyAndWithdrawDifferentKitty","outputs":[],"payable":false,"stateMutability":"nonpayable","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":"multiDepositKittyAndWithdrawDifferentKitty","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_numTokens","type":"uint256"}],"name":"multiBurnTokenAndWithdrawKitty","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_kittyIds","type":"uint256[]"}],"name":"multiDepositKittyAndMintToken","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"},{"indexed":false,"name":"tokensMinted","type":"uint256"}],"name":"DepositKittyAndMintToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"kittyId","type":"uint256"},{"indexed":false,"name":"tokensBurned","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"}]

60806040527306012c8cf97bead5deae237070f9587f8e7a266d600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801561006557600080fd5b506001600381905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612ead806100e06000396000f3fe6080604052600436106101145760003560e01c80633d216720116100a0578063a9059cbb11610064578063a9059cbb146105f2578063b9b4a8c714610665578063c1009f25146106eb578063db975ae914610726578063dd62ed3e146107ac57610114565b80633d2167201461043857806370a082311461044f57806395d89b41146104b4578063a295ba6714610544578063a457c2d71461057f57610114565b806323b872dd116100e757806323b872dd1461027f5780632abe0beb146103125780632c2ccdfb1461033d578063313ce5671461039457806339509351146103c557610114565b806306fdde0314610116578063095ea7b3146101a657806311a57d7e1461021957806318160ddd14610254575b005b34801561012257600080fd5b5061012b610831565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561016b578082015181840152602081019050610150565b50505050905090810190601f1680156101985780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101b257600080fd5b506101ff600480360360408110156101c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061086a565b604051808215151515815260200191505060405180910390f35b34801561022557600080fd5b506102526004803603602081101561023c57600080fd5b8101908080359060200190929190505050610995565b005b34801561026057600080fd5b50610269610d95565b6040518082815260200191505060405180910390f35b34801561028b57600080fd5b506102f8600480360360608110156102a257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d9f565b604051808215151515815260200191505060405180910390f35b34801561031e57600080fd5b50610327610fa7565b6040518082815260200191505060405180910390f35b34801561034957600080fd5b50610352610fc5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103a057600080fd5b506103a9610feb565b604051808260ff1660ff16815260200191505060405180910390f35b3480156103d157600080fd5b5061041e600480360360408110156103e857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ff0565b604051808215151515815260200191505060405180910390f35b34801561044457600080fd5b5061044d611225565b005b34801561045b57600080fd5b5061049e6004803603602081101561047257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113de565b6040518082815260200191505060405180910390f35b3480156104c057600080fd5b506104c9611426565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105095780820151818401526020810190506104ee565b50505050905090810190601f1680156105365780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561055057600080fd5b5061057d6004803603602081101561056757600080fd5b810190808035906020019092919050505061145f565b005b34801561058b57600080fd5b506105d8600480360360408110156105a257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611962565b604051808215151515815260200191505060405180910390f35b3480156105fe57600080fd5b5061064b6004803603604081101561061557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b97565b604051808215151515815260200191505060405180910390f35b34801561067157600080fd5b506106e96004803603602081101561068857600080fd5b81019080803590602001906401000000008111156106a557600080fd5b8201836020820111156106b757600080fd5b803590602001918460208302840111640100000000831117156106d957600080fd5b9091929391929390505050611bae565b005b3480156106f757600080fd5b506107246004803603602081101561070e57600080fd5b81019080803590602001909291905050506120e9565b005b34801561073257600080fd5b506107aa6004803603602081101561074957600080fd5b810190808035906020019064010000000081111561076657600080fd5b82018360208201111561077857600080fd5b8035906020019184602083028401116401000000008311171561079a57600080fd5b90919293919293905050506122e3565b005b3480156107b857600080fd5b5061081b600480360360408110156107cf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612730565b6040518082815260200191505060405180910390f35b6040518060400160405280601581526020017f577261707065642043727970746f4b697474696573000000000000000000000081525081565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156108a557600080fd5b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600160036000828254019250508190555060006003549050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610a2057600080fd5b505afa158015610a34573d6000803e3d6000fd5b505050506040513d6020811015610a4a57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610afb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f796f7520646f206e6f74206f776e20746869732063617400000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663481af3d3846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610b8557600080fd5b505afa158015610b99573d6000803e3d6000fd5b505050506040513d6020811015610baf57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614610c2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526068815260200180612da66068913960800191505060405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015610d0957600080fd5b505af1158015610d1d573d6000803e3d6000fd5b50505050610d2a826127b7565b610d3c33670de0b6b3a7640000612802565b7fb732365c77c579e959add37d969790708ce4f600e3647b8ba7d4c22bd6f0a70282670de0b6b3a7640000604051808381526020018281526020019250505060405180910390a16003548114610d9157600080fd5b5050565b6000600254905090565b6000610e3082600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461295490919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ebb848484612974565b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600190509392505050565b6000610fc060055460065461295490919063ffffffff16565b905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601281565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561102b57600080fd5b6110ba82600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b3e90919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b600160036000828254019250508190555060006003549050670de0b6b3a764000061124f336113de565b10156112a6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526036815260200180612e0e6036913960400191505060405180910390fd5b60006112b0612b5d565b90506112c433670de0b6b3a7640000612c19565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561136d57600080fd5b505af1158015611381573d6000803e3d6000fd5b505050507fefd94ed14cba3376bbf3e2a3bb71b35cc64bb684ae704a2d27dda2f70713616481670de0b6b3a7640000604051808381526020018281526020019250505060405180910390a15060035481146113db57600080fd5b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6040518060400160405280600381526020017f57434b000000000000000000000000000000000000000000000000000000000081525081565b600160036000828254019250508190555060006003549050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156114ea57600080fd5b505afa1580156114fe573d6000803e3d6000fd5b505050506040513d602081101561151457600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f796f7520646f206e6f74206f776e20746869732063617400000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663481af3d3846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561164f57600080fd5b505afa158015611663573d6000803e3d6000fd5b505050506040513d602081101561167957600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16146116f6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526068815260200180612da66068913960800191505060405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1580156117d357600080fd5b505af11580156117e7573d6000803e3d6000fd5b505050506117f4826127b7565b60006117fe612b5d565b9050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156118a957600080fd5b505af11580156118bd573d6000803e3d6000fd5b505050507fb732365c77c579e959add37d969790708ce4f600e3647b8ba7d4c22bd6f0a70283670de0b6b3a7640000604051808381526020018281526020019250505060405180910390a17fefd94ed14cba3376bbf3e2a3bb71b35cc64bb684ae704a2d27dda2f70713616481670de0b6b3a7640000604051808381526020018281526020019250505060405180910390a150600354811461195e57600080fd5b5050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561199d57600080fd5b611a2c82600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461295490919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000611ba4338484612974565b6001905092915050565b60016003600082825401925050819055506000600354905060008090505b838390508110156120d5576000848483818110611be557fe5b905060200201359050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e826040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015611c6157600080fd5b505afa158015611c75573d6000803e3d6000fd5b505050506040513d6020811015611c8b57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d3c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f796f7520646f206e6f74206f776e20746869732063617400000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663481af3d3836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015611dc657600080fd5b505afa158015611dda573d6000803e3d6000fd5b505050506040513d6020811015611df057600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614611e6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526068815260200180612da66068913960800191505060405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015611f4a57600080fd5b505af1158015611f5e573d6000803e3d6000fd5b50505050611f6b816127b7565b6000611f75612b5d565b9050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561202057600080fd5b505af1158015612034573d6000803e3d6000fd5b505050507fb732365c77c579e959add37d969790708ce4f600e3647b8ba7d4c22bd6f0a70282670de0b6b3a7640000604051808381526020018281526020019250505060405180910390a17fefd94ed14cba3376bbf3e2a3bb71b35cc64bb684ae704a2d27dda2f70713616481670de0b6b3a7640000604051808381526020018281526020019250505060405180910390a150508080600101915050611bcc565b5060035481146120e457600080fd5b505050565b60016003600082825401925050819055506000600354905061211c670de0b6b3a764000083612d6b90919063ffffffff16565b612125336113de565b101561217c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603e815260200180612e44603e913960400191505060405180910390fd5b6121a03361219b670de0b6b3a764000085612d6b90919063ffffffff16565b612c19565b60008090505b828110156122d05760006121b8612b5d565b9050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561226357600080fd5b505af1158015612277573d6000803e3d6000fd5b505050507fefd94ed14cba3376bbf3e2a3bb71b35cc64bb684ae704a2d27dda2f70713616481670de0b6b3a7640000604051808381526020018281526020019250505060405180910390a15080806001019150506121a6565b5060035481146122df57600080fd5b5050565b60016003600082825401925050819055506000600354905060008090505b838390508110156126f557600084848381811061231a57fe5b905060200201359050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e826040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561239657600080fd5b505afa1580156123aa573d6000803e3d6000fd5b505050506040513d60208110156123c057600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612471576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f796f7520646f206e6f74206f776e20746869732063617400000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663481af3d3836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156124fb57600080fd5b505afa15801561250f573d6000803e3d6000fd5b505050506040513d602081101561252557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16146125a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526068815260200180612da66068913960800191505060405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561267f57600080fd5b505af1158015612693573d6000803e3d6000fd5b505050506126a0816127b7565b7fb732365c77c579e959add37d969790708ce4f600e3647b8ba7d4c22bd6f0a70281670de0b6b3a7640000604051808381526020018281526020019250505060405180910390a1508080600101915050612301565b5061271d33612718670de0b6b3a764000086869050612d6b90919063ffffffff16565b612802565b600354811461272b57600080fd5b505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60048190806001815401808255809150509060018203906000526020600020016000909192909190915055506127f96001600654612b3e90919063ffffffff16565b60068190555050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561283c57600080fd5b61285181600254612b3e90919063ffffffff16565b6002819055506128a8816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b3e90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008282111561296357600080fd5b600082840390508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156129ae57600080fd5b6129ff816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461295490919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a92816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b3e90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600080828401905083811015612b5357600080fd5b8091505092915050565b600060065460055410612bd8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f746865726520617265206e6f206361747320696e20746865207175657565000081525060200191505060405180910390fd5b6000600460055481548110612be957fe5b90600052602060002001549050612c0c6001600554612b3e90919063ffffffff16565b6005819055508091505090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612c5357600080fd5b612c688160025461295490919063ffffffff16565b600281905550612cbf816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461295490919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600080831415612d7e5760009050612d9f565b6000828402905082848281612d8f57fe5b0414612d9a57600080fd5b809150505b9291505056fe796f75206d75737420617070726f76652829207468697320636f6e747261637420746f2067697665206974207065726d697373696f6e20746f207769746864726177207468697320636174206265666f726520796f752063616e206465706f736974206120636174796f7520646f206e6f74206f776e20656e6f75676820746f6b656e7320746f20776974686472617720616e2045524337323120636174796f7520646f206e6f74206f776e20656e6f75676820746f6b656e7320746f2077697468647261772074686973206d616e79204552433732312063617473a165627a7a72305820086401e0e759c9826b068c751859665d25555a9badb50f1f8eae2c4501df28760029

Deployed Bytecode

0x6080604052600436106101145760003560e01c80633d216720116100a0578063a9059cbb11610064578063a9059cbb146105f2578063b9b4a8c714610665578063c1009f25146106eb578063db975ae914610726578063dd62ed3e146107ac57610114565b80633d2167201461043857806370a082311461044f57806395d89b41146104b4578063a295ba6714610544578063a457c2d71461057f57610114565b806323b872dd116100e757806323b872dd1461027f5780632abe0beb146103125780632c2ccdfb1461033d578063313ce5671461039457806339509351146103c557610114565b806306fdde0314610116578063095ea7b3146101a657806311a57d7e1461021957806318160ddd14610254575b005b34801561012257600080fd5b5061012b610831565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561016b578082015181840152602081019050610150565b50505050905090810190601f1680156101985780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101b257600080fd5b506101ff600480360360408110156101c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061086a565b604051808215151515815260200191505060405180910390f35b34801561022557600080fd5b506102526004803603602081101561023c57600080fd5b8101908080359060200190929190505050610995565b005b34801561026057600080fd5b50610269610d95565b6040518082815260200191505060405180910390f35b34801561028b57600080fd5b506102f8600480360360608110156102a257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d9f565b604051808215151515815260200191505060405180910390f35b34801561031e57600080fd5b50610327610fa7565b6040518082815260200191505060405180910390f35b34801561034957600080fd5b50610352610fc5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103a057600080fd5b506103a9610feb565b604051808260ff1660ff16815260200191505060405180910390f35b3480156103d157600080fd5b5061041e600480360360408110156103e857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ff0565b604051808215151515815260200191505060405180910390f35b34801561044457600080fd5b5061044d611225565b005b34801561045b57600080fd5b5061049e6004803603602081101561047257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113de565b6040518082815260200191505060405180910390f35b3480156104c057600080fd5b506104c9611426565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105095780820151818401526020810190506104ee565b50505050905090810190601f1680156105365780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561055057600080fd5b5061057d6004803603602081101561056757600080fd5b810190808035906020019092919050505061145f565b005b34801561058b57600080fd5b506105d8600480360360408110156105a257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611962565b604051808215151515815260200191505060405180910390f35b3480156105fe57600080fd5b5061064b6004803603604081101561061557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b97565b604051808215151515815260200191505060405180910390f35b34801561067157600080fd5b506106e96004803603602081101561068857600080fd5b81019080803590602001906401000000008111156106a557600080fd5b8201836020820111156106b757600080fd5b803590602001918460208302840111640100000000831117156106d957600080fd5b9091929391929390505050611bae565b005b3480156106f757600080fd5b506107246004803603602081101561070e57600080fd5b81019080803590602001909291905050506120e9565b005b34801561073257600080fd5b506107aa6004803603602081101561074957600080fd5b810190808035906020019064010000000081111561076657600080fd5b82018360208201111561077857600080fd5b8035906020019184602083028401116401000000008311171561079a57600080fd5b90919293919293905050506122e3565b005b3480156107b857600080fd5b5061081b600480360360408110156107cf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612730565b6040518082815260200191505060405180910390f35b6040518060400160405280601581526020017f577261707065642043727970746f4b697474696573000000000000000000000081525081565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156108a557600080fd5b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600160036000828254019250508190555060006003549050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610a2057600080fd5b505afa158015610a34573d6000803e3d6000fd5b505050506040513d6020811015610a4a57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610afb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f796f7520646f206e6f74206f776e20746869732063617400000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663481af3d3846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610b8557600080fd5b505afa158015610b99573d6000803e3d6000fd5b505050506040513d6020811015610baf57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614610c2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526068815260200180612da66068913960800191505060405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015610d0957600080fd5b505af1158015610d1d573d6000803e3d6000fd5b50505050610d2a826127b7565b610d3c33670de0b6b3a7640000612802565b7fb732365c77c579e959add37d969790708ce4f600e3647b8ba7d4c22bd6f0a70282670de0b6b3a7640000604051808381526020018281526020019250505060405180910390a16003548114610d9157600080fd5b5050565b6000600254905090565b6000610e3082600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461295490919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ebb848484612974565b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600190509392505050565b6000610fc060055460065461295490919063ffffffff16565b905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601281565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561102b57600080fd5b6110ba82600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b3e90919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b600160036000828254019250508190555060006003549050670de0b6b3a764000061124f336113de565b10156112a6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526036815260200180612e0e6036913960400191505060405180910390fd5b60006112b0612b5d565b90506112c433670de0b6b3a7640000612c19565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561136d57600080fd5b505af1158015611381573d6000803e3d6000fd5b505050507fefd94ed14cba3376bbf3e2a3bb71b35cc64bb684ae704a2d27dda2f70713616481670de0b6b3a7640000604051808381526020018281526020019250505060405180910390a15060035481146113db57600080fd5b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6040518060400160405280600381526020017f57434b000000000000000000000000000000000000000000000000000000000081525081565b600160036000828254019250508190555060006003549050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156114ea57600080fd5b505afa1580156114fe573d6000803e3d6000fd5b505050506040513d602081101561151457600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f796f7520646f206e6f74206f776e20746869732063617400000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663481af3d3846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561164f57600080fd5b505afa158015611663573d6000803e3d6000fd5b505050506040513d602081101561167957600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16146116f6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526068815260200180612da66068913960800191505060405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1580156117d357600080fd5b505af11580156117e7573d6000803e3d6000fd5b505050506117f4826127b7565b60006117fe612b5d565b9050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156118a957600080fd5b505af11580156118bd573d6000803e3d6000fd5b505050507fb732365c77c579e959add37d969790708ce4f600e3647b8ba7d4c22bd6f0a70283670de0b6b3a7640000604051808381526020018281526020019250505060405180910390a17fefd94ed14cba3376bbf3e2a3bb71b35cc64bb684ae704a2d27dda2f70713616481670de0b6b3a7640000604051808381526020018281526020019250505060405180910390a150600354811461195e57600080fd5b5050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561199d57600080fd5b611a2c82600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461295490919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000611ba4338484612974565b6001905092915050565b60016003600082825401925050819055506000600354905060008090505b838390508110156120d5576000848483818110611be557fe5b905060200201359050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e826040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015611c6157600080fd5b505afa158015611c75573d6000803e3d6000fd5b505050506040513d6020811015611c8b57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d3c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f796f7520646f206e6f74206f776e20746869732063617400000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663481af3d3836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015611dc657600080fd5b505afa158015611dda573d6000803e3d6000fd5b505050506040513d6020811015611df057600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614611e6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526068815260200180612da66068913960800191505060405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015611f4a57600080fd5b505af1158015611f5e573d6000803e3d6000fd5b50505050611f6b816127b7565b6000611f75612b5d565b9050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561202057600080fd5b505af1158015612034573d6000803e3d6000fd5b505050507fb732365c77c579e959add37d969790708ce4f600e3647b8ba7d4c22bd6f0a70282670de0b6b3a7640000604051808381526020018281526020019250505060405180910390a17fefd94ed14cba3376bbf3e2a3bb71b35cc64bb684ae704a2d27dda2f70713616481670de0b6b3a7640000604051808381526020018281526020019250505060405180910390a150508080600101915050611bcc565b5060035481146120e457600080fd5b505050565b60016003600082825401925050819055506000600354905061211c670de0b6b3a764000083612d6b90919063ffffffff16565b612125336113de565b101561217c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603e815260200180612e44603e913960400191505060405180910390fd5b6121a03361219b670de0b6b3a764000085612d6b90919063ffffffff16565b612c19565b60008090505b828110156122d05760006121b8612b5d565b9050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561226357600080fd5b505af1158015612277573d6000803e3d6000fd5b505050507fefd94ed14cba3376bbf3e2a3bb71b35cc64bb684ae704a2d27dda2f70713616481670de0b6b3a7640000604051808381526020018281526020019250505060405180910390a15080806001019150506121a6565b5060035481146122df57600080fd5b5050565b60016003600082825401925050819055506000600354905060008090505b838390508110156126f557600084848381811061231a57fe5b905060200201359050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e826040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561239657600080fd5b505afa1580156123aa573d6000803e3d6000fd5b505050506040513d60208110156123c057600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612471576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f796f7520646f206e6f74206f776e20746869732063617400000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663481af3d3836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156124fb57600080fd5b505afa15801561250f573d6000803e3d6000fd5b505050506040513d602081101561252557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16146125a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526068815260200180612da66068913960800191505060405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561267f57600080fd5b505af1158015612693573d6000803e3d6000fd5b505050506126a0816127b7565b7fb732365c77c579e959add37d969790708ce4f600e3647b8ba7d4c22bd6f0a70281670de0b6b3a7640000604051808381526020018281526020019250505060405180910390a1508080600101915050612301565b5061271d33612718670de0b6b3a764000086869050612d6b90919063ffffffff16565b612802565b600354811461272b57600080fd5b505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60048190806001815401808255809150509060018203906000526020600020016000909192909190915055506127f96001600654612b3e90919063ffffffff16565b60068190555050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561283c57600080fd5b61285181600254612b3e90919063ffffffff16565b6002819055506128a8816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b3e90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008282111561296357600080fd5b600082840390508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156129ae57600080fd5b6129ff816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461295490919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a92816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b3e90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600080828401905083811015612b5357600080fd5b8091505092915050565b600060065460055410612bd8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f746865726520617265206e6f206361747320696e20746865207175657565000081525060200191505060405180910390fd5b6000600460055481548110612be957fe5b90600052602060002001549050612c0c6001600554612b3e90919063ffffffff16565b6005819055508091505090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612c5357600080fd5b612c688160025461295490919063ffffffff16565b600281905550612cbf816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461295490919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600080831415612d7e5760009050612d9f565b6000828402905082848281612d8f57fe5b0414612d9a57600080fd5b809150505b9291505056fe796f75206d75737420617070726f76652829207468697320636f6e747261637420746f2067697665206974207065726d697373696f6e20746f207769746864726177207468697320636174206265666f726520796f752063616e206465706f736974206120636174796f7520646f206e6f74206f776e20656e6f75676820746f6b656e7320746f20776974686472617720616e2045524337323120636174796f7520646f206e6f74206f776e20656e6f75676820746f6b656e7320746f2077697468647261772074686973206d616e79204552433732312063617473a165627a7a72305820086401e0e759c9826b068c751859665d25555a9badb50f1f8eae2c4501df28760029

Deployed Bytecode Sourcemap

12297:10718:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14288:53;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14288: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;14288: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;:::-;;;;;;;;;;;;;;;;;;;;;;;15476:553;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15476:553:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15476:553: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;:::-;;;;;;;;;;;;;;;;;;;;;;;22198:125;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22198:125:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14645:76;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14645:76:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14246:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14246: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;:::-;;;;;;;;;;;;;;;;;;;;;;;17332:364;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17332:364: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;:::-;;;;;;;;;;;;;;;;;;;14348:37;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14348: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;14348:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19489:706;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19489:706:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19489:706:0;;;;;;;;;;;;;;;;;:::i;:::-;;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;:::-;;;;;;;;;;;;;;;;;;;;;;;20409:901;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20409:901:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20409:901:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;20409:901:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;20409:901: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;20409:901:0;;;;;;;;;;;;:::i;:::-;;17922:521;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17922:521:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17922:521:0;;;;;;;;;;;;;;;;;:::i;:::-;;16239:760;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16239:760:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16239:760:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;16239:760:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;16239:760: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;16239:760: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;:::-;;;;;;;;;;;;;;;;;;;14288: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;15476:553::-;11390:1;11373:13;;:18;;;;;;;;;;;11402:20;11425:13;;11402:36;;15583:9;;;;;;;;;;;:17;;;15601:8;15583:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15583:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15583:27:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15583:27:0;;;;;;;;;;;;;;;;15569:41;;:10;:41;;;15561:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15709:4;15657:57;;:9;;;;;;;;;;;:30;;;15688:8;15657:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15657:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15657:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15657:40:0;;;;;;;;;;;;;;;;:57;;;15649:174;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15834:9;;;;;;;;;;;:22;;;15857:10;15877:4;15884:8;15834:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15834:59:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15834:59:0;;;;15904:23;15918:8;15904:13;:23::i;:::-;15938:25;15944:10;15956:6;15938:5;:25::i;:::-;15979:42;16004:8;16014:6;15979:42;;;;;;;;;;;;;;;;;;;;;;;;11485:13;;11469:12;:29;11461:38;;;;;;15476:553;;:::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;22198:125::-;22255:7;22281:34;22299:15;;22281:13;;:17;;:34;;;;:::i;:::-;22274:41;;22198:125;:::o;14645:76::-;;;;;;;;;;;;;:::o;14246:35::-;14279:2;14246: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;17332:364::-;11390:1;11373:13;;:18;;;;;;;;;;;11402:20;11425:13;;11402:36;;17435:6;17410:21;17420:10;17410:9;:21::i;:::-;:31;;17402:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17511:15;17529;:13;:15::i;:::-;17511:33;;17555:25;17561:10;17573:6;17555:5;:25::i;:::-;17591:9;;;;;;;;;;;:18;;;17610:10;17622:7;17591:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17591:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17591:39:0;;;;17646:42;17672:7;17681:6;17646:42;;;;;;;;;;;;;;;;;;;;;;;;11449:1;11485:13;;11469:12;:29;11461:38;;;;;;17332:364;:::o;3868:106::-;3923:7;3950:9;:16;3960:5;3950:16;;;;;;;;;;;;;;;;3943:23;;3868:106;;;:::o;14348:37::-;;;;;;;;;;;;;;;;;;;:::o;19489:706::-;11390:1;11373:13;;:18;;;;;;;;;;;11402:20;11425:13;;11402:36;;19609:9;;;;;;;;;;;:17;;;19627:8;19609:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19609:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19609:27:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19609:27:0;;;;;;;;;;;;;;;;19595:41;;:10;:41;;;19587:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19735:4;19683:57;;:9;;;;;;;;;;;:30;;;19714:8;19683:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19683:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19683:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19683:40:0;;;;;;;;;;;;;;;;:57;;;19675:174;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19860:9;;;;;;;;;;;:22;;;19883:10;19903:4;19910:8;19860:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19860:59:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19860:59:0;;;;19930:23;19944:8;19930:13;:23::i;:::-;19964;19990:15;:13;:15::i;:::-;19964:41;;20016:9;;;;;;;;;;;:18;;;20035:10;20047:15;20016:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20016:47:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20016:47:0;;;;20079:42;20104:8;20114:6;20079:42;;;;;;;;;;;;;;;;;;;;;;;;20137:50;20163:15;20180:6;20137:50;;;;;;;;;;;;;;;;;;;;;;;;11449:1;11485:13;;11469:12;:29;11461:38;;;;;;19489:706;;:::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;20409:901::-;11390:1;11373:13;;:18;;;;;;;;;;;11402:20;11425:13;;11402:36;;20528:6;20537:1;20528:10;;20524:779;20544:9;;:16;;20540:1;:20;20524:779;;;20581:22;20606:9;;20616:1;20606:12;;;;;;;;;;;;;20581:37;;20655:9;;;;;;;;;;;:17;;;20673:14;20655:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20655:33:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20655:33:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20655:33:0;;;;;;;;;;;;;;;;20641:47;;:10;:47;;;20633:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20797:4;20739:63;;:9;;;;;;;;;;;:30;;;20770:14;20739:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20739:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20739:46:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20739:46:0;;;;;;;;;;;;;;;;:63;;;20731:180;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20926:9;;;;;;;;;;;:22;;;20949:10;20969:4;20976:14;20926:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20926:65:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20926:65:0;;;;21006:29;21020:14;21006:13;:29::i;:::-;21050:23;21076:15;:13;:15::i;:::-;21050:41;;21106:9;;;;;;;;;;;:18;;;21125:10;21137:15;21106:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21106:47:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21106:47:0;;;;21173:48;21198:14;21214:6;21173:48;;;;;;;;;;;;;;;;;;;;;;;;21241:50;21267:15;21284:6;21241:50;;;;;;;;;;;;;;;;;;;;;;;;20524:779;;20562:3;;;;;;;20524:779;;;;11485:13;;11469:12;:29;11461:38;;;;;;20409:901;;;:::o;17922:521::-;11390:1;11373:13;;:18;;;;;;;;;;;11402:20;11425:13;;11402:36;;18048:22;18063:6;18048:10;:14;;:22;;;;:::i;:::-;18023:21;18033:10;18023:9;:21::i;:::-;:47;;18015:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18148:41;18154:10;18166:22;18181:6;18166:10;:14;;:22;;;;:::i;:::-;18148:5;:41::i;:::-;18204:6;18213:1;18204:10;;18200:236;18220:10;18216:1;:14;18200:236;;;18251:23;18277:15;:13;:15::i;:::-;18251:41;;18307:9;;;;;;;;;;;:18;;;18326:10;18338:15;18307:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18307:47:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18307:47:0;;;;18374:50;18400:15;18417:6;18374:50;;;;;;;;;;;;;;;;;;;;;;;;18200:236;18232:3;;;;;;;18200:236;;;;11485:13;;11469:12;:29;11461:38;;;;;;17922:521;;:::o;16239:760::-;11390:1;11373:13;;:18;;;;;;;;;;;11402:20;11425:13;;11402:36;;16345:6;16354:1;16345:10;;16341:591;16361:9;;:16;;16357:1;:20;16341:591;;;16398:22;16423:9;;16433:1;16423:12;;;;;;;;;;;;;16398:37;;16472:9;;;;;;;;;;;:17;;;16490:14;16472:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16472:33:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16472:33:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16472:33:0;;;;;;;;;;;;;;;;16458:47;;:10;:47;;;16450:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16614:4;16556:63;;:9;;;;;;;;;;;:30;;;16587:14;16556:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16556:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16556:46:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16556:46:0;;;;;;;;;;;;;;;;:63;;;16548:180;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16743:9;;;;;;;;;;;:22;;;16766:10;16786:4;16793:14;16743:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16743:65:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16743:65:0;;;;16823:29;16837:14;16823:13;:29::i;:::-;16872:48;16897:14;16913:6;16872:48;;;;;;;;;;;;;;;;;;;;;;;;16341:591;16379:3;;;;;;;16341:591;;;;16942:49;16948:10;16960:30;16983:6;16961:9;;:16;;16960:22;;:30;;;;:::i;:::-;16942:5;:49::i;:::-;11485:13;;11469:12;:29;11461:38;;;;;;16239:760;;;:::o;4313:131::-;4385:7;4412:8;:15;4421:5;4412:15;;;;;;;;;;;;;;;:24;4428:7;4412:24;;;;;;;;;;;;;;;;4405:31;;4313:131;;;;:::o;21480:152::-;21541:21;21568:8;21541:36;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;21541:36:0;;;;;;;;;;;;;;;;;;;;;;21604:20;21622:1;21604:13;;:17;;:20;;;;:::i;:::-;21588:13;:36;;;;21480:152;:::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;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;21792:286::-;21834:7;21879:13;;21861:15;;:31;21853:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21938:15;21956:21;21978:15;;21956:38;;;;;;;;;;;;;;;;21938:56;;22023:22;22043:1;22023:15;;:19;;:22;;;;:::i;:::-;22005:15;:40;;;;22063:7;22056:14;;;21792:286;:::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;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

Swarm Source

bzzr://086401e0e759c9826b068c751859665d25555a9badb50f1f8eae2c4501df2876
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.