ETH Price: $2,556.68 (+4.95%)

Token

Global Gold Coins (GGC)
 

Overview

Max Total Supply

1,000,200 GGC

Holders

20

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1.00268 GGC

Value
$0.00
0xc08b5b74ed05fb1753627f972f3ae4b9613276e8
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:
GGCToken

Compiler Version
v0.5.8+commit.23d335f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2019-06-12
*/

pragma solidity 0.5.8;

/**
 * @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 underflow (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;
    }
}

/**
 * @title ERC20 interface
 * @dev see https://eips.ethereum.org/EIPS/eip-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 Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev The Ownable constructor sets the original `owner` of the contract to the sender account.
     */
    constructor () internal {
        _owner = msg.sender;
        emit OwnershipTransferred(address(0), _owner);
    }

    /**
     * @return the address of the owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(isOwner(), "The caller must be owner");
        _;
    }

    /**
     * @return true if `msg.sender` is the owner of the contract.
     */
    function isOwner() public view returns (bool) {
        return msg.sender == _owner;
    }

    /**
     * @dev Allows the current owner to transfer control of the contract to a newOwner.
     * @param newOwner The address to transfer ownership to.
     */
    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers control of the contract to a newOwner.
     * @param newOwner The address to transfer ownership to.
     */
    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0), "Cannot transfer control of the contract to the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

/**
 * @title Standard ERC20 token
 * @dev Implementation of the basic standard token.
 */
contract StandardToken is IERC20 {
    using SafeMath for uint256;

    mapping (address => uint256) internal _balances;

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

    uint256 internal _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 A 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 to 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) {
        _approve(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) {
        _transfer(from, to, value);
        _approve(from, msg.sender, _allowed[from][msg.sender].sub(value));
        return true;
    }

    /**
     * @dev Increase the amount of tokens that an owner allowed to a spender.
     * approve should be called when _allowed[msg.sender][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) {
        _approve(msg.sender, spender, _allowed[msg.sender][spender].add(addedValue));
        return true;
    }

    /**
     * @dev Decrease the amount of tokens that an owner allowed to a spender.
     * approve should be called when _allowed[msg.sender][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) {
        _approve(msg.sender, spender, _allowed[msg.sender][spender].sub(subtractedValue));
        return true;
    }

    /**
     * @dev Transfer token for a specified address.
     * @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), "Cannot transfer to the zero address");

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

    /**
     * @dev Approve an address to spend another addresses' tokens.
     * @param owner The address that owns the tokens.
     * @param spender The address that will spend the tokens.
     * @param value The number of tokens that can be spent.
     */
    function _approve(address owner, address spender, uint256 value) internal {
        require(spender != address(0), "Cannot approve to the zero address");
        require(owner != address(0), "Setter cannot be the zero address");

        _allowed[owner][spender] = value;
        emit Approval(owner, spender, value);
    }

}

/**
 *  @title FreezableToken
 */
contract FreezableToken is StandardToken, Ownable {
    mapping(address=>bool) internal _frozenAccount;

    event FrozenAccount(address indexed target, bool frozen);

    /**
     * @dev Returns whether the specified address is frozen.
     * @param account A specified address.
     */
    function frozenAccount(address account) public view returns(bool){
        return _frozenAccount[account];
    }

    /**
     * @dev Check if the specified address is frozen. Requires the specified address not to be frozen.
     * @param account A specified address.
     */
    function frozenCheck(address account) internal view {
        require(!frozenAccount(account), "Address has been frozen");
    }

    /**
     * @dev Modify the frozen status of the specified address.
     * @param account A specified address.
     * @param frozen Frozen status, true: freeze, false: unfreeze.
     */
    function freeze(address account, bool frozen) public onlyOwner {
  	    _frozenAccount[account] = frozen;
  	    emit FrozenAccount(account, frozen);
    }

    /**
     * @dev Rewrite the transfer function to check if the address participating is frozen.
     */
    function transfer(address _to, uint256 _value) public returns (bool) {
        frozenCheck(msg.sender);
        frozenCheck(_to);
        return super.transfer(_to, _value);
    }

    /**
     * @dev Rewrite the transferFrom function to check if the address participating is frozen.
     */
    function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
        frozenCheck(msg.sender);
        frozenCheck(_from);
        frozenCheck(_to);
        return super.transferFrom(_from, _to, _value);
    }    

    /**
     * @dev Rewrite the _approve function to check if the address participating is frozen.
     */
    function _approve(address owner, address spender, uint256 value) internal {
        frozenCheck(owner);
        frozenCheck(spender);
        super._approve(owner, spender, value);
    }

}

/**
 * @title MintableToken
 * @dev Implement the function of ERC20 token minting.
 */
contract MintableToken is FreezableToken {
    /**
     * @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), "Cannot mint to the zero address");

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

    /**
     * @dev Function to mint tokens
     * @param to The address that will receive the minted tokens.
     * @param value The amount of tokens to mint.
     * @return A boolean that indicates if the operation was successful.
     */
    function mint(address to, uint256 value) public onlyOwner returns (bool) {
        frozenCheck(to);
        _mint(to, value);
        return true;
    }
}

/**
 * @title BurnableToken
 * @dev Implement the function of ERC20 token burning.
 */
contract BurnableToken is FreezableToken {

    /**
    * @dev Burns a specific amount of tokens.
    * @param _value The amount of token to be burned.
    */
    function burn(uint256 _value) public onlyOwner {
        _burn(msg.sender, _value);
    }

    /**
    * @dev Burns a specific amount of tokens from the target address and decrements allowance
    * @param _from address The address which you want to send tokens from
    * @param _value uint256 The amount of token to be burned
    */
    function burnFrom(address _from, uint256 _value) public onlyOwner {
        require(_value <= _allowed[_from][msg.sender], "Not enough allowance");
        _allowed[_from][msg.sender] = _allowed[_from][msg.sender].sub(_value);
        _burn(_from, _value);
    }

    function _burn(address _who, uint256 _value) internal {
        require(_value <= _balances[_who], "Not enough token balance");
        // no need to require value <= totalSupply, since that would imply the
        // sender's balance is greater than the totalSupply, which *should* be an assertion failure
        _balances[_who] = _balances[_who].sub(_value);
        _totalSupply = _totalSupply.sub(_value);
        emit Transfer(_who, address(0), _value);
    }
}

contract GGCToken is MintableToken, BurnableToken {
    string public constant name = "Global Gold Coins"; // name of Token 
    string public constant symbol = "GGC"; // symbol of Token 
    uint8 public constant decimals = 18;

    /**
     * @dev Transfer tokens to multiple addresses.
     */
    function airdrop(address[] memory addressList, uint256[] memory amountList) public onlyOwner returns (bool) {
        uint256 length = addressList.length;
        require(addressList.length == amountList.length, "Inconsistent array length");
        require(length > 0 && length <= 150, "Invalid number of transfer objects");
        uint256 amount;
        for (uint256 i = 0; i < length; i++) {
            frozenCheck(addressList[i]);
            require(amountList[i] > 0, "The transfer amount cannot be 0");
            require(addressList[i] != address(0), "Cannot transfer to the zero address");
            amount = amount.add(amountList[i]);
            _balances[addressList[i]] = _balances[addressList[i]].add(amountList[i]);
            emit Transfer(msg.sender, addressList[i], amountList[i]);
        }
        require(_balances[msg.sender] >= amount, "Not enough tokens to transfer");
        _balances[msg.sender] = _balances[msg.sender].sub(amount);
        return true;
    }        
}

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":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":"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":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"mint","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addressList","type":"address[]"},{"name":"amountList","type":"uint256[]"}],"name":"airdrop","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":"_from","type":"address"},{"name":"_value","type":"uint256"}],"name":"burnFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"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":"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":true,"inputs":[{"name":"account","type":"address"}],"name":"frozenAccount","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"},{"name":"frozen","type":"bool"}],"name":"freeze","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"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"target","type":"address"},{"indexed":false,"name":"frozen","type":"bool"}],"name":"FrozenAccount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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"}]

60806040819052600380546001600160a01b0319163317908190556001600160a01b0316906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a361147f8061005b6000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c806379cc6790116100ad578063a9059cbb11610071578063a9059cbb146104ac578063b414d4b6146104d8578063bf120ae5146104fe578063dd62ed3e1461052c578063f2fde38b1461055a5761012c565b806379cc6790146104205780638da5cb5b1461044c5780638f32d59b1461047057806395d89b4114610478578063a457c2d7146104805761012c565b806339509351116100f4578063395093511461025c57806340c10f191461028857806342966c68146102b457806367243482146102d357806370a08231146103fa5761012c565b806306fdde0314610131578063095ea7b3146101ae57806318160ddd146101ee57806323b872dd14610208578063313ce5671461023e575b600080fd5b610139610580565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561017357818101518382015260200161015b565b50505050905090810190601f1680156101a05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101da600480360360408110156101c457600080fd5b506001600160a01b0381351690602001356105b9565b604080519115158252519081900360200190f35b6101f66105cf565b60408051918252519081900360200190f35b6101da6004803603606081101561021e57600080fd5b506001600160a01b038135811691602081013590911690604001356105d5565b610246610605565b6040805160ff9092168252519081900360200190f35b6101da6004803603604081101561027257600080fd5b506001600160a01b03813516906020013561060a565b6101da6004803603604081101561029e57600080fd5b506001600160a01b03813516906020013561064b565b6102d1600480360360208110156102ca57600080fd5b50356106aa565b005b6101da600480360360408110156102e957600080fd5b81019060208101813564010000000081111561030457600080fd5b82018360208201111561031657600080fd5b8035906020019184602083028401116401000000008311171561033857600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561038857600080fd5b82018360208201111561039a57600080fd5b803590602001918460208302840111640100000000831117156103bc57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610701945050505050565b6101f66004803603602081101561041057600080fd5b50356001600160a01b0316610abb565b6102d16004803603604081101561043657600080fd5b506001600160a01b038135169060200135610ad6565b610454610c01565b604080516001600160a01b039092168252519081900360200190f35b6101da610c10565b610139610c21565b6101da6004803603604081101561049657600080fd5b506001600160a01b038135169060200135610c43565b6101da600480360360408110156104c257600080fd5b506001600160a01b038135169060200135610c7f565b6101da600480360360208110156104ee57600080fd5b50356001600160a01b0316610ca4565b6102d16004803603604081101561051457600080fd5b506001600160a01b0381351690602001351515610cc2565b6101f66004803603604081101561054257600080fd5b506001600160a01b0381358116916020013516610d6c565b6102d16004803603602081101561057057600080fd5b50356001600160a01b0316610d97565b6040518060400160405280601181526020017f476c6f62616c20476f6c6420436f696e7300000000000000000000000000000081525081565b60006105c6338484610dea565b50600192915050565b60025490565b60006105e033610e0c565b6105e984610e0c565b6105f283610e0c565b6105fd848484610e6a565b949350505050565b601281565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916105c6918590610646908663ffffffff610ebc16565b610dea565b6000610655610c10565b6106975760408051600160e51b62461bcd0281526020600482015260186024820152600080516020611434833981519152604482015290519081900360640190fd5b6106a083610e0c565b6105c68383610ece565b6106b2610c10565b6106f45760408051600160e51b62461bcd0281526020600482015260186024820152600080516020611434833981519152604482015290519081900360640190fd5b6106fe3382610faf565b50565b600061070b610c10565b61074d5760408051600160e51b62461bcd0281526020600482015260186024820152600080516020611434833981519152604482015290519081900360640190fd5b8251825181146107a75760408051600160e51b62461bcd02815260206004820152601960248201527f496e636f6e73697374656e74206172726179206c656e67746800000000000000604482015290519081900360640190fd5b6000811180156107b8575060968111155b6107f657604051600160e51b62461bcd0281526004018080602001828103825260228152602001806113cf6022913960400191505060405180910390fd5b6000805b82811015610a185761081e86828151811061081157fe5b6020026020010151610e0c565b600085828151811061082c57fe5b6020026020010151116108895760408051600160e51b62461bcd02815260206004820152601f60248201527f546865207472616e7366657220616d6f756e742063616e6e6f74206265203000604482015290519081900360640190fd5b60006001600160a01b03168682815181106108a057fe5b60200260200101516001600160a01b031614156108f157604051600160e51b62461bcd0281526004018080602001828103825260238152602001806114116023913960400191505060405180910390fd5b61091785828151811061090057fe5b602002602001015183610ebc90919063ffffffff16565b915061097685828151811061092857fe5b602002602001015160008089858151811061093f57fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054610ebc90919063ffffffff16565b60008088848151811061098557fe5b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020819055508581815181106109bd57fe5b60200260200101516001600160a01b0316336001600160a01b03166000805160206113f18339815191528784815181106109f357fe5b60200260200101516040518082815260200191505060405180910390a36001016107fa565b5033600090815260208190526040902054811115610a805760408051600160e51b62461bcd02815260206004820152601d60248201527f4e6f7420656e6f75676820746f6b656e7320746f207472616e73666572000000604482015290519081900360640190fd5b33600090815260208190526040902054610aa0908263ffffffff6110aa16565b33600090815260208190526040902055506001949350505050565b6001600160a01b031660009081526020819052604090205490565b610ade610c10565b610b205760408051600160e51b62461bcd0281526020600482015260186024820152600080516020611434833981519152604482015290519081900360640190fd5b6001600160a01b0382166000908152600160209081526040808320338452909152902054811115610b9b5760408051600160e51b62461bcd02815260206004820152601460248201527f4e6f7420656e6f75676820616c6c6f77616e6365000000000000000000000000604482015290519081900360640190fd5b6001600160a01b0382166000908152600160209081526040808320338452909152902054610bcf908263ffffffff6110aa16565b6001600160a01b0383166000908152600160209081526040808320338452909152902055610bfd8282610faf565b5050565b6003546001600160a01b031690565b6003546001600160a01b0316331490565b604051806040016040528060038152602001600160e81b624747430281525081565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916105c6918590610646908663ffffffff6110aa16565b6000610c8a33610e0c565b610c9383610e0c565b610c9d83836110bf565b9392505050565b6001600160a01b031660009081526004602052604090205460ff1690565b610cca610c10565b610d0c5760408051600160e51b62461bcd0281526020600482015260186024820152600080516020611434833981519152604482015290519081900360640190fd5b6001600160a01b038216600081815260046020908152604091829020805460ff1916851515908117909155825190815291517f67a17b8db8ff8fa7cff69c2328bf8a35f9be2c88abeea30be900fc28eece28ed9281900390910190a25050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610d9f610c10565b610de15760408051600160e51b62461bcd0281526020600482015260186024820152600080516020611434833981519152604482015290519081900360640190fd5b6106fe816110cc565b610df383610e0c565b610dfc82610e0c565b610e07838383611170565b505050565b610e1581610ca4565b156106fe5760408051600160e51b62461bcd02815260206004820152601760248201527f4164647265737320686173206265656e2066726f7a656e000000000000000000604482015290519081900360640190fd5b6000610e77848484611262565b6001600160a01b038416600090815260016020908152604080832033808552925290912054610eb2918691610646908663ffffffff6110aa16565b5060019392505050565b600082820183811015610c9d57600080fd5b6001600160a01b038216610f2c5760408051600160e51b62461bcd02815260206004820152601f60248201527f43616e6e6f74206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600254610f3f908263ffffffff610ebc16565b6002556001600160a01b038216600090815260208190526040902054610f6b908263ffffffff610ebc16565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391926000805160206113f18339815191529281900390910190a35050565b6001600160a01b03821660009081526020819052604090205481111561101f5760408051600160e51b62461bcd02815260206004820152601860248201527f4e6f7420656e6f75676820746f6b656e2062616c616e63650000000000000000604482015290519081900360640190fd5b6001600160a01b038216600090815260208190526040902054611048908263ffffffff6110aa16565b6001600160a01b038316600090815260208190526040902055600254611074908263ffffffff6110aa16565b6002556040805182815290516000916001600160a01b038516916000805160206113f18339815191529181900360200190a35050565b6000828211156110b957600080fd5b50900390565b60006105c6338484611262565b6001600160a01b03811661111457604051600160e51b62461bcd02815260040180806020018281038252603b815260200180611373603b913960400191505060405180910390fd5b6003546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0382166111b857604051600160e51b62461bcd0281526004018080602001828103825260228152602001806113516022913960400191505060405180910390fd5b6001600160a01b03831661120057604051600160e51b62461bcd0281526004018080602001828103825260218152602001806113ae6021913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0382166112aa57604051600160e51b62461bcd0281526004018080602001828103825260238152602001806114116023913960400191505060405180910390fd5b6001600160a01b0383166000908152602081905260409020546112d3908263ffffffff6110aa16565b6001600160a01b038085166000908152602081905260408082209390935590841681522054611308908263ffffffff610ebc16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716926000805160206113f183398151915292918290030190a350505056fe43616e6e6f7420617070726f766520746f20746865207a65726f206164647265737343616e6e6f74207472616e7366657220636f6e74726f6c206f662074686520636f6e747261637420746f20746865207a65726f20616464726573735365747465722063616e6e6f7420626520746865207a65726f2061646472657373496e76616c6964206e756d626572206f66207472616e73666572206f626a65637473ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef43616e6e6f74207472616e7366657220746f20746865207a65726f20616464726573735468652063616c6c6572206d757374206265206f776e65720000000000000000a165627a7a72305820f41014b8b912a31a4c14ec0e4444565a7c973b215a8944550505198304c389500029

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061012c5760003560e01c806379cc6790116100ad578063a9059cbb11610071578063a9059cbb146104ac578063b414d4b6146104d8578063bf120ae5146104fe578063dd62ed3e1461052c578063f2fde38b1461055a5761012c565b806379cc6790146104205780638da5cb5b1461044c5780638f32d59b1461047057806395d89b4114610478578063a457c2d7146104805761012c565b806339509351116100f4578063395093511461025c57806340c10f191461028857806342966c68146102b457806367243482146102d357806370a08231146103fa5761012c565b806306fdde0314610131578063095ea7b3146101ae57806318160ddd146101ee57806323b872dd14610208578063313ce5671461023e575b600080fd5b610139610580565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561017357818101518382015260200161015b565b50505050905090810190601f1680156101a05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101da600480360360408110156101c457600080fd5b506001600160a01b0381351690602001356105b9565b604080519115158252519081900360200190f35b6101f66105cf565b60408051918252519081900360200190f35b6101da6004803603606081101561021e57600080fd5b506001600160a01b038135811691602081013590911690604001356105d5565b610246610605565b6040805160ff9092168252519081900360200190f35b6101da6004803603604081101561027257600080fd5b506001600160a01b03813516906020013561060a565b6101da6004803603604081101561029e57600080fd5b506001600160a01b03813516906020013561064b565b6102d1600480360360208110156102ca57600080fd5b50356106aa565b005b6101da600480360360408110156102e957600080fd5b81019060208101813564010000000081111561030457600080fd5b82018360208201111561031657600080fd5b8035906020019184602083028401116401000000008311171561033857600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561038857600080fd5b82018360208201111561039a57600080fd5b803590602001918460208302840111640100000000831117156103bc57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610701945050505050565b6101f66004803603602081101561041057600080fd5b50356001600160a01b0316610abb565b6102d16004803603604081101561043657600080fd5b506001600160a01b038135169060200135610ad6565b610454610c01565b604080516001600160a01b039092168252519081900360200190f35b6101da610c10565b610139610c21565b6101da6004803603604081101561049657600080fd5b506001600160a01b038135169060200135610c43565b6101da600480360360408110156104c257600080fd5b506001600160a01b038135169060200135610c7f565b6101da600480360360208110156104ee57600080fd5b50356001600160a01b0316610ca4565b6102d16004803603604081101561051457600080fd5b506001600160a01b0381351690602001351515610cc2565b6101f66004803603604081101561054257600080fd5b506001600160a01b0381358116916020013516610d6c565b6102d16004803603602081101561057057600080fd5b50356001600160a01b0316610d97565b6040518060400160405280601181526020017f476c6f62616c20476f6c6420436f696e7300000000000000000000000000000081525081565b60006105c6338484610dea565b50600192915050565b60025490565b60006105e033610e0c565b6105e984610e0c565b6105f283610e0c565b6105fd848484610e6a565b949350505050565b601281565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916105c6918590610646908663ffffffff610ebc16565b610dea565b6000610655610c10565b6106975760408051600160e51b62461bcd0281526020600482015260186024820152600080516020611434833981519152604482015290519081900360640190fd5b6106a083610e0c565b6105c68383610ece565b6106b2610c10565b6106f45760408051600160e51b62461bcd0281526020600482015260186024820152600080516020611434833981519152604482015290519081900360640190fd5b6106fe3382610faf565b50565b600061070b610c10565b61074d5760408051600160e51b62461bcd0281526020600482015260186024820152600080516020611434833981519152604482015290519081900360640190fd5b8251825181146107a75760408051600160e51b62461bcd02815260206004820152601960248201527f496e636f6e73697374656e74206172726179206c656e67746800000000000000604482015290519081900360640190fd5b6000811180156107b8575060968111155b6107f657604051600160e51b62461bcd0281526004018080602001828103825260228152602001806113cf6022913960400191505060405180910390fd5b6000805b82811015610a185761081e86828151811061081157fe5b6020026020010151610e0c565b600085828151811061082c57fe5b6020026020010151116108895760408051600160e51b62461bcd02815260206004820152601f60248201527f546865207472616e7366657220616d6f756e742063616e6e6f74206265203000604482015290519081900360640190fd5b60006001600160a01b03168682815181106108a057fe5b60200260200101516001600160a01b031614156108f157604051600160e51b62461bcd0281526004018080602001828103825260238152602001806114116023913960400191505060405180910390fd5b61091785828151811061090057fe5b602002602001015183610ebc90919063ffffffff16565b915061097685828151811061092857fe5b602002602001015160008089858151811061093f57fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054610ebc90919063ffffffff16565b60008088848151811061098557fe5b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020819055508581815181106109bd57fe5b60200260200101516001600160a01b0316336001600160a01b03166000805160206113f18339815191528784815181106109f357fe5b60200260200101516040518082815260200191505060405180910390a36001016107fa565b5033600090815260208190526040902054811115610a805760408051600160e51b62461bcd02815260206004820152601d60248201527f4e6f7420656e6f75676820746f6b656e7320746f207472616e73666572000000604482015290519081900360640190fd5b33600090815260208190526040902054610aa0908263ffffffff6110aa16565b33600090815260208190526040902055506001949350505050565b6001600160a01b031660009081526020819052604090205490565b610ade610c10565b610b205760408051600160e51b62461bcd0281526020600482015260186024820152600080516020611434833981519152604482015290519081900360640190fd5b6001600160a01b0382166000908152600160209081526040808320338452909152902054811115610b9b5760408051600160e51b62461bcd02815260206004820152601460248201527f4e6f7420656e6f75676820616c6c6f77616e6365000000000000000000000000604482015290519081900360640190fd5b6001600160a01b0382166000908152600160209081526040808320338452909152902054610bcf908263ffffffff6110aa16565b6001600160a01b0383166000908152600160209081526040808320338452909152902055610bfd8282610faf565b5050565b6003546001600160a01b031690565b6003546001600160a01b0316331490565b604051806040016040528060038152602001600160e81b624747430281525081565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916105c6918590610646908663ffffffff6110aa16565b6000610c8a33610e0c565b610c9383610e0c565b610c9d83836110bf565b9392505050565b6001600160a01b031660009081526004602052604090205460ff1690565b610cca610c10565b610d0c5760408051600160e51b62461bcd0281526020600482015260186024820152600080516020611434833981519152604482015290519081900360640190fd5b6001600160a01b038216600081815260046020908152604091829020805460ff1916851515908117909155825190815291517f67a17b8db8ff8fa7cff69c2328bf8a35f9be2c88abeea30be900fc28eece28ed9281900390910190a25050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610d9f610c10565b610de15760408051600160e51b62461bcd0281526020600482015260186024820152600080516020611434833981519152604482015290519081900360640190fd5b6106fe816110cc565b610df383610e0c565b610dfc82610e0c565b610e07838383611170565b505050565b610e1581610ca4565b156106fe5760408051600160e51b62461bcd02815260206004820152601760248201527f4164647265737320686173206265656e2066726f7a656e000000000000000000604482015290519081900360640190fd5b6000610e77848484611262565b6001600160a01b038416600090815260016020908152604080832033808552925290912054610eb2918691610646908663ffffffff6110aa16565b5060019392505050565b600082820183811015610c9d57600080fd5b6001600160a01b038216610f2c5760408051600160e51b62461bcd02815260206004820152601f60248201527f43616e6e6f74206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600254610f3f908263ffffffff610ebc16565b6002556001600160a01b038216600090815260208190526040902054610f6b908263ffffffff610ebc16565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391926000805160206113f18339815191529281900390910190a35050565b6001600160a01b03821660009081526020819052604090205481111561101f5760408051600160e51b62461bcd02815260206004820152601860248201527f4e6f7420656e6f75676820746f6b656e2062616c616e63650000000000000000604482015290519081900360640190fd5b6001600160a01b038216600090815260208190526040902054611048908263ffffffff6110aa16565b6001600160a01b038316600090815260208190526040902055600254611074908263ffffffff6110aa16565b6002556040805182815290516000916001600160a01b038516916000805160206113f18339815191529181900360200190a35050565b6000828211156110b957600080fd5b50900390565b60006105c6338484611262565b6001600160a01b03811661111457604051600160e51b62461bcd02815260040180806020018281038252603b815260200180611373603b913960400191505060405180910390fd5b6003546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0382166111b857604051600160e51b62461bcd0281526004018080602001828103825260228152602001806113516022913960400191505060405180910390fd5b6001600160a01b03831661120057604051600160e51b62461bcd0281526004018080602001828103825260218152602001806113ae6021913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0382166112aa57604051600160e51b62461bcd0281526004018080602001828103825260238152602001806114116023913960400191505060405180910390fd5b6001600160a01b0383166000908152602081905260409020546112d3908263ffffffff6110aa16565b6001600160a01b038085166000908152602081905260408082209390935590841681522054611308908263ffffffff610ebc16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716926000805160206113f183398151915292918290030190a350505056fe43616e6e6f7420617070726f766520746f20746865207a65726f206164647265737343616e6e6f74207472616e7366657220636f6e74726f6c206f662074686520636f6e747261637420746f20746865207a65726f20616464726573735365747465722063616e6e6f7420626520746865207a65726f2061646472657373496e76616c6964206e756d626572206f66207472616e73666572206f626a65637473ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef43616e6e6f74207472616e7366657220746f20746865207a65726f20616464726573735468652063616c6c6572206d757374206265206f776e65720000000000000000a165627a7a72305820f41014b8b912a31a4c14ec0e4444565a7c973b215a8944550505198304c389500029

Deployed Bytecode Sourcemap

14587:1329:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14587:1329:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14644:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;14644:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6459:148;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6459:148:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;4611:91;;;:::i;:::-;;;;;;;;;;;;;;;;11458:242;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11458:242:0;;;;;;;;;;;;;;;;;:::i;14782:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7834:203;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7834:203:0;;;;;;;;:::i;13063:156::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;13063:156:0;;;;;;;;:::i;13486:91::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13486:91:0;;:::i;:::-;;14896:1009;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14896:1009:0;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;14896:1009:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;14896:1009: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;14896:1009:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;14896:1009:0;;;;;;;;-1:-1:-1;14896:1009:0;;-1:-1:-1;;21:11;5:28;;2:2;;;46:1;43;36:12;2:2;14896:1009:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;14896:1009: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;14896:1009:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;14896:1009:0;;-1:-1:-1;14896:1009:0;;-1:-1:-1;;;;;14896:1009:0:i;4921:106::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4921:106:0;-1:-1:-1;;;;;4921:106:0;;:::i;13834:266::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;13834:266:0;;;;;;;;:::i;3051:79::-;;;:::i;:::-;;;;-1:-1:-1;;;;;3051:79:0;;;;;;;;;;;;;;3414:92;;;:::i;14718:37::-;;;:::i;8568:213::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8568:213:0;;;;;;;;:::i;11153:183::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11153:183:0;;;;;;;;:::i;10257:114::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10257:114:0;-1:-1:-1;;;;;10257:114:0;;:::i;10877:158::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;10877:158:0;;;;;;;;;;:::i;5366:131::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5366:131:0;;;;;;;;;;:::i;3683:109::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3683:109:0;-1:-1:-1;;;;;3683:109:0;;:::i;14644:49::-;;;;;;;;;;;;;;;;;;;:::o;6459:148::-;6524:4;6541:36;6550:10;6562:7;6571:5;6541:8;:36::i;:::-;-1:-1:-1;6595:4:0;6459:148;;;;:::o;4611:91::-;4682:12;;4611:91;:::o;11458:242::-;11540:4;11557:23;11569:10;11557:11;:23::i;:::-;11591:18;11603:5;11591:11;:18::i;:::-;11620:16;11632:3;11620:11;:16::i;:::-;11654:38;11673:5;11680:3;11685:6;11654:18;:38::i;:::-;11647:45;11458:242;-1:-1:-1;;;;11458:242:0:o;14782:35::-;14815:2;14782:35;:::o;7834:203::-;7940:10;7914:4;7961:20;;;:8;:20;;;;;;;;-1:-1:-1;;;;;7961:29:0;;;;;;;;;;7914:4;;7931:76;;7952:7;;7961:45;;7995:10;7961:45;:33;:45;:::i;:::-;7931:8;:76::i;13063:156::-;13130:4;3263:9;:7;:9::i;:::-;3255:46;;;;;-1:-1:-1;;;;;3255:46:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3255:46:0;;;;;;;;;;;;;;;13147:15;13159:2;13147:11;:15::i;:::-;13173:16;13179:2;13183:5;13173;:16::i;13486:91::-;3263:9;:7;:9::i;:::-;3255:46;;;;;-1:-1:-1;;;;;3255:46:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3255:46:0;;;;;;;;;;;;;;;13544:25;13550:10;13562:6;13544:5;:25::i;:::-;13486:91;:::o;14896:1009::-;14998:4;3263:9;:7;:9::i;:::-;3255:46;;;;;-1:-1:-1;;;;;3255:46:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3255:46:0;;;;;;;;;;;;;;;15032:18;;15091:17;;15069:39;;15061:77;;;;;-1:-1:-1;;;;;15061:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;15166:1;15157:6;:10;:27;;;;;15181:3;15171:6;:13;;15157:27;15149:74;;;;-1:-1:-1;;;;;15149:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15234:14;;15259:465;15283:6;15279:1;:10;15259:465;;;15311:27;15323:11;15335:1;15323:14;;;;;;;;;;;;;;15311:11;:27::i;:::-;15377:1;15361:10;15372:1;15361:13;;;;;;;;;;;;;;:17;15353:61;;;;;-1:-1:-1;;;;;15353:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;15463:1;-1:-1:-1;;;;;15437:28:0;:11;15449:1;15437:14;;;;;;;;;;;;;;-1:-1:-1;;;;;15437:28:0;;;15429:76;;;;-1:-1:-1;;;;;15429:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15529:25;15540:10;15551:1;15540:13;;;;;;;;;;;;;;15529:6;:10;;:25;;;;:::i;:::-;15520:34;;15597:44;15627:10;15638:1;15627:13;;;;;;;;;;;;;;15597:9;:25;15607:11;15619:1;15607:14;;;;;;;;;;;;;;-1:-1:-1;;;;;15597:25:0;-1:-1:-1;;;;;15597:25:0;;;;;;;;;;;;;:29;;:44;;;;:::i;:::-;15569:9;:25;15579:11;15591:1;15579:14;;;;;;;;;;;;;;-1:-1:-1;;;;;15569:25:0;-1:-1:-1;;;;;15569:25:0;;;;;;;;;;;;:72;;;;15682:11;15694:1;15682:14;;;;;;;;;;;;;;-1:-1:-1;;;;;15661:51:0;15670:10;-1:-1:-1;;;;;15661:51:0;-1:-1:-1;;;;;;;;;;;15698:10:0;15709:1;15698:13;;;;;;;;;;;;;;15661:51;;;;;;;;;;;;;;;;;;15291:3;;15259:465;;;-1:-1:-1;15752:10:0;15742:9;:21;;;;;;;;;;;:31;-1:-1:-1;15742:31:0;15734:73;;;;;-1:-1:-1;;;;;15734:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;15852:10;15842:9;:21;;;;;;;;;;;:33;;15868:6;15842:33;:25;:33;:::i;:::-;15828:10;15818:9;:21;;;;;;;;;;:57;-1:-1:-1;15893:4:0;;14896:1009;-1:-1:-1;;;;14896:1009:0:o;4921:106::-;-1:-1:-1;;;;;5003:16:0;4976:7;5003:16;;;;;;;;;;;;4921:106::o;13834:266::-;3263:9;:7;:9::i;:::-;3255:46;;;;;-1:-1:-1;;;;;3255:46:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3255:46:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;13929:15:0;;;;;;:8;:15;;;;;;;;13945:10;13929:27;;;;;;;;13919:37;;;13911:70;;;;;-1:-1:-1;;;;;13911:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14022:15:0;;;;;;:8;:15;;;;;;;;14038:10;14022:27;;;;;;;;:39;;14054:6;14022:39;:31;:39;:::i;:::-;-1:-1:-1;;;;;13992:15:0;;;;;;:8;:15;;;;;;;;14008:10;13992:27;;;;;;;:69;14072:20;14001:5;14085:6;14072:5;:20::i;:::-;13834:266;;:::o;3051:79::-;3116:6;;-1:-1:-1;;;;;3116:6:0;3051:79;:::o;3414:92::-;3492:6;;-1:-1:-1;;;;;3492:6:0;3478:10;:20;;3414:92::o;14718:37::-;;;;;;;;;;;;;;-1:-1:-1;;;;;14718:37:0;;;;:::o;8568:213::-;8679:10;8653:4;8700:20;;;:8;:20;;;;;;;;-1:-1:-1;;;;;8700:29:0;;;;;;;;;;8653:4;;8670:81;;8691:7;;8700:50;;8734:15;8700:50;:33;:50;:::i;11153:183::-;11216:4;11233:23;11245:10;11233:11;:23::i;:::-;11267:16;11279:3;11267:11;:16::i;:::-;11301:27;11316:3;11321:6;11301:14;:27::i;:::-;11294:34;11153:183;-1:-1:-1;;;11153:183:0:o;10257:114::-;-1:-1:-1;;;;;10340:23:0;10317:4;10340:23;;;:14;:23;;;;;;;;;10257:114::o;10877:158::-;3263:9;:7;:9::i;:::-;3255:46;;;;;-1:-1:-1;;;;;3255:46:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3255:46:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;10950:23:0;;;;;;:14;:23;;;;;;;;;:32;;-1:-1:-1;;10950:32:0;;;;;;;;;;10997:30;;;;;;;;;;;;;;;;;10877:158;;:::o;5366:131::-;-1:-1:-1;;;;;5465:15:0;;;5438:7;5465:15;;;:8;:15;;;;;;;;:24;;;;;;;;;;;;;5366:131::o;3683:109::-;3263:9;:7;:9::i;:::-;3255:46;;;;;-1:-1:-1;;;;;3255:46:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3255:46:0;;;;;;;;;;;;;;;3756:28;3775:8;3756:18;:28::i;11822:190::-;11907:18;11919:5;11907:11;:18::i;:::-;11936:20;11948:7;11936:11;:20::i;:::-;11967:37;11982:5;11989:7;11998:5;11967:14;:37::i;:::-;11822:190;;;:::o;10545:130::-;10617:22;10631:7;10617:13;:22::i;:::-;10616:23;10608:59;;;;;-1:-1:-1;;;;;10608:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;7080:228;7159:4;7176:26;7186:4;7192:2;7196:5;7176:9;:26::i;:::-;-1:-1:-1;;;;;7240:14:0;;;;;;:8;:14;;;;;;;;7228:10;7240:26;;;;;;;;;7213:65;;7222:4;;7240:37;;7271:5;7240:37;:30;:37;:::i;7213:65::-;-1:-1:-1;7296:4:0;7080:228;;;;;:::o;1490:150::-;1548:7;1580:5;;;1604:6;;;;1596:15;;;;;12504:304;-1:-1:-1;;;;;12579:21:0;;12571:65;;;;;-1:-1:-1;;;;;12571:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12664:12;;:23;;12681:5;12664:23;:16;:23;:::i;:::-;12649:12;:38;-1:-1:-1;;;;;12719:18:0;;:9;:18;;;;;;;;;;;:29;;12742:5;12719:29;:22;:29;:::i;:::-;-1:-1:-1;;;;;12698:18:0;;:9;:18;;;;;;;;;;;:50;;;;12764:36;;;;;;;12698:18;;:9;;-1:-1:-1;;;;;;;;;;;12764:36:0;;;;;;;;;12504:304;;:::o;14108:472::-;-1:-1:-1;;;;;14191:15:0;;:9;:15;;;;;;;;;;;14181:25;;;14173:62;;;;;-1:-1:-1;;;;;14173:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14445:15:0;;:9;:15;;;;;;;;;;;:27;;14465:6;14445:27;:19;:27;:::i;:::-;-1:-1:-1;;;;;14427:15:0;;:9;:15;;;;;;;;;;:45;14498:12;;:24;;14515:6;14498:24;:16;:24;:::i;:::-;14483:12;:39;14538:34;;;;;;;;14561:1;;-1:-1:-1;;;;;14538:34:0;;;-1:-1:-1;;;;;;;;;;;14538:34:0;;;;;;;;14108:472;;:::o;1252:150::-;1310:7;1343:1;1338;:6;;1330:15;;;;;;-1:-1:-1;1368:5:0;;;1252:150::o;5672:140::-;5733:4;5750:32;5760:10;5772:2;5776:5;5750:9;:32::i;3942:250::-;-1:-1:-1;;;;;4016:22:0;;4008:94;;;;-1:-1:-1;;;;;4008:94:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4139:6;;4118:38;;-1:-1:-1;;;;;4118:38:0;;;;4139:6;;4118:38;;4139:6;;4118:38;4167:6;:17;;-1:-1:-1;;;;;;4167:17:0;-1:-1:-1;;;;;4167:17:0;;;;;;;;;;3942:250::o;9581:329::-;-1:-1:-1;;;;;9674:21:0;;9666:68;;;;-1:-1:-1;;;;;9666:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9753:19:0;;9745:65;;;;-1:-1:-1;;;;;9745:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9823:15:0;;;;;;;:8;:15;;;;;;;;:24;;;;;;;;;;;;;:32;;;9871:31;;;;;;;;;;;;;;;;;9581:329;;;:::o;9007:301::-;-1:-1:-1;;;;;9095:16:0;;9087:64;;;;-1:-1:-1;;;;;9087:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9182:15:0;;:9;:15;;;;;;;;;;;:26;;9202:5;9182:26;:19;:26;:::i;:::-;-1:-1:-1;;;;;9164:15:0;;;:9;:15;;;;;;;;;;;:44;;;;9235:13;;;;;;;:24;;9253:5;9235:24;:17;:24;:::i;:::-;-1:-1:-1;;;;;9219:13:0;;;:9;:13;;;;;;;;;;;;:40;;;;9275:25;;;;;;;9219:13;;9275:25;;;;-1:-1:-1;;;;;;;;;;;9275:25:0;;;;;;;;9007:301;;;:::o

Swarm Source

bzzr://f41014b8b912a31a4c14ec0e4444565a7c973b215a8944550505198304c38950
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.