ETH Price: $3,009.39 (-1.96%)
Gas: 4 Gwei

Token

Aureus Nummus Gold (ANG)
 

Overview

Max Total Supply

60,000,000,000,000 ANG

Holders

3,226 (0.00%)

Market

Price

$0.00 @ 0.000000 ETH (-0.02%)

Onchain Market Cap

$13,195,800,000.00

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 18 Decimals)

Balance
2,500 ANG

Value
$0.55 ( ~0.000182761490378354 Eth) [0.0000%]
0x37e25702ef2946fa5885ebbf5b2411c06f1a93ac
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

The Aureus Nummus Gold functions as a simple payment tool and saving system in the financial markets, outside the and in addition to the traditional banking system.

Market

Volume (24H):$5.25
Market Capitalization:$0.00
Circulating Supply:0.00 ANG
Market Data Source: Coinmarketcap

IEO Information

IEO Address : http://www.an.gold/
IEO Start Date : Jan 20, 2020
IEO End Date : Continuous sale
Public Sale Allocation : 98%
Raised : $1200340
Token Distribution Date : Continuous distribution

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
AureusNummusGold

Compiler Version
v0.5.14+commit.1f1aaa4

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-01-09
*/

pragma solidity ^0.5.0;
/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot overflow.
     *
     * _Available since v2.4.0._
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     * - Multiplication cannot 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-contracts/pull/522
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     *
     * _Available since v2.4.0._
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
        return c;
    }
    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }
    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     *
     * _Available since v2.4.0._
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}


/**
 * @title Roles
 * @dev Library for managing addresses assigned to a Role.
 */
library Roles {
    struct Role {
        mapping(address => bool) bearer;
    }

    /**
     * @dev Give an account access to this role.
     */
    function add(Role storage role, address account) internal {
        require(!has(role, account), "Roles: account already has role");
        role.bearer[account] = true;
    }

    /**
     * @dev Remove an account's access to this role.
     */
    function remove(Role storage role, address account) internal {
        require(has(role, account), "Roles: account does not have role");
        role.bearer[account] = false;
    }

    /**
     * @dev Check if an account has this role.
     * @return bool
     */
    function has(Role storage role, address account) internal view returns (bool) {
        require(account != address(0), "Roles: account is the zero address");
        return role.bearer[account];
    }
}

/**
 * @title Pusher
 * @dev Library for managing addresses assigned to a Role.
 */
contract PusherRole {
    using Roles for Roles.Role;

    event PusherAdded(address indexed account);
    event PusherRemoved(address indexed account);

    Roles.Role private _pushers;

    constructor () internal {
        _addPusher(msg.sender);
    }

    modifier onlyPusher() {
        require(isPusher(msg.sender), "Pusher: caller does not have the Pusher role");
        _;
    }

    function isPusher(address account) public view returns (bool) {
        return _pushers.has(account);
    }

    function addPusher(address account) public onlyPusher {
        _addPusher(account);
    }

    function renouncePusher() public {
        _removePusher(msg.sender);
    }

    function _addPusher(address account) internal {
        _pushers.add(account);
        emit PusherAdded(account);
    }

    function _removePusher(address account) internal {
        _pushers.remove(account);
        emit PusherRemoved(account);
    }
}

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with GSN meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
contract Context {
    // Empty internal constructor, to prevent people from mistakenly deploying
    // an instance of this contract, which should be used via inheritance.
    constructor () internal { }
    // solhint-disable-previous-line no-empty-blocks
    function _msgSender() internal view returns (address payable) {
        return msg.sender;
    }
    function _msgData() internal view returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}
/**
 * @dev Interface of the ERC20 standard as defined in the EIP. Does not include
 * the optional functions; to access them see {ERC20Detailed}.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);
    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);
    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);
    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);
    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: 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
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);
    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);
    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}
/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20Mintable}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin guidelines: functions revert instead
 * of returning `false` on failure. This behavior is nonetheless conventional
 * and does not conflict with the expectations of ERC20 applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20 {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    uint256 private _totalSupply;
    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view returns (uint256) {
        return _totalSupply;
    }
    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view returns (uint256) {
        return _balances[account];
    }
    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view returns (uint256) {
        return _allowances[owner][spender];
    }
    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }
    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20};
     *
     * Requirements:
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for `sender`'s tokens of at least
     * `amount`.
     */
    function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }
    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }
    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }
    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(address sender, address recipient, uint256 amount) internal {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }
    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements
     *
     * - `to` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal {
        require(account != address(0), "ERC20: mint to the zero address");
        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }
    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal {
        require(account != address(0), "ERC20: burn from the zero address");
        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }
    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.
     *
     * This is internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(address owner, address spender, uint256 amount) internal {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    /**
     * @dev Destroys `amount` tokens from `account`.`amount` is then deducted
     * from the caller's allowance.
     *
     * See {_burn} and {_approve}.
     */
    function _burnFrom(address account, uint256 amount) internal {
        _burn(account, amount);
        _approve(account, _msgSender(), _allowances[account][_msgSender()].sub(amount, "ERC20: burn amount exceeds allowance"));
    }
}

contract AureusNummusGold is ERC20, PusherRole{
    
    string public constant name = 'Aureus Nummus Gold';
    string public constant symbol = 'ANG';
    uint8 public constant decimals = 18;
    uint constant _supply = 60000000000000 * 10**18;

    /**
     * @dev Price in USD for one token in 10 to the power 18 part
     * so, 1 USD = 10^18
     */
    uint256 public tokenPrice;

    /**
     * @dev Constructor that gives msg.sender all of existing tokens.
     */
    constructor() public {
        _mint(msg.sender, _supply);
    }
    
    event TokenPriceUpdated(uint256 indexed _price);
    
    /**
     * @dev Update token price only by Pusher role.
     * @param _price new price to be set
     */
    function updateTokenPrice(uint256 _price) external onlyPusher{
        tokenPrice = _price;
        emit TokenPriceUpdated(_price);
    }
    
    /**
     * @dev Price in USD for token holded by an account in 10 to the power 18 part
     * @param account to check the equivalent USD value
     * @return uint256 equivalent USD value of token in 10 to the power 18 part
     */
    function getTokenPrice(address account) public view returns (uint256) {
        return balanceOf(account).mul(tokenPrice).div(10**18);
    }
    
}

Contract Security Audit

Contract ABI

[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"PusherAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"PusherRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_price","type":"uint256"}],"name":"TokenPriceUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addPusher","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getTokenPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isPusher","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renouncePusher","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_price","type":"uint256"}],"name":"updateTokenPrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b5062000023336200004960201b60201c565b62000043336d02f54e74c0d08367c2e700000000620000aa60201b60201c565b620004c1565b620000648160036200027460201b620015021790919060201c565b8073ffffffffffffffffffffffffffffffffffffffff167fef3be19955e25e159c478c9a4f9f42dc23787c06b927977a6dc454a444cd6d8f60405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200014e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6200016a816002546200035860201b6200115b1790919060201c565b600281905550620001c8816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200035860201b6200115b1790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b620002868282620003e160201b60201c565b15620002fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600080828401905083811015620003d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200046a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018062001d3a6022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61186980620004d16000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806370a08231116100a2578063a9059cbb11610071578063a9059cbb146104be578063a90c811914610524578063d02641a014610568578063d117ca5f146105c0578063dd62ed3e1461061c5761010b565b806370a082311461035f5780637ff9b596146103b757806395d89b41146103d5578063a457c2d7146104585761010b565b8063313ce567116100de578063313ce5671461029d57806339509351146102c15780634bd4bb9b14610327578063676c0d77146103315761010b565b806306fdde0314610110578063095ea7b31461019357806318160ddd146101f957806323b872dd14610217575b600080fd5b610118610694565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561015857808201518184015260208101905061013d565b50505050905090810190601f1680156101855780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101df600480360360408110156101a957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106cd565b604051808215151515815260200191505060405180910390f35b6102016106eb565b6040518082815260200191505060405180910390f35b6102836004803603606081101561022d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106f5565b604051808215151515815260200191505060405180910390f35b6102a56107ce565b604051808260ff1660ff16815260200191505060405180910390f35b61030d600480360360408110156102d757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506107d3565b604051808215151515815260200191505060405180910390f35b61032f610886565b005b61035d6004803603602081101561034757600080fd5b8101908080359060200190929190505050610891565b005b6103a16004803603602081101561037557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610926565b6040518082815260200191505060405180910390f35b6103bf61096e565b6040518082815260200191505060405180910390f35b6103dd610974565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561041d578082015181840152602081019050610402565b50505050905090810190601f16801561044a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104a46004803603604081101561046e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506109ad565b604051808215151515815260200191505060405180910390f35b61050a600480360360408110156104d457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a7a565b604051808215151515815260200191505060405180910390f35b6105666004803603602081101561053a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a98565b005b6105aa6004803603602081101561057e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b02565b6040518082815260200191505060405180910390f35b610602600480360360208110156105d657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b42565b604051808215151515815260200191505060405180910390f35b61067e6004803603604081101561063257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b5f565b6040518082815260200191505060405180910390f35b6040518060400160405280601281526020017f417572657573204e756d6d757320476f6c64000000000000000000000000000081525081565b60006106e16106da610be6565b8484610bee565b6001905092915050565b6000600254905090565b6000610702848484610de5565b6107c38461070e610be6565b6107be8560405180606001604052806028815260200161177d60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610774610be6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461109b9092919063ffffffff16565b610bee565b600190509392505050565b601281565b600061087c6107e0610be6565b8461087785600160006107f1610be6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461115b90919063ffffffff16565b610bee565b6001905092915050565b61088f336111e3565b565b61089a33610b42565b6108ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806116e9602c913960400191505060405180910390fd5b80600481905550807f6b361c807733cc94a3b7bda39c1c94dcc0511e91aa47b0f7f918068e9397689060405160405180910390a250565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60045481565b6040518060400160405280600381526020017f414e47000000000000000000000000000000000000000000000000000000000081525081565b6000610a706109ba610be6565b84610a6b8560405180606001604052806025815260200161181060259139600160006109e4610be6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461109b9092919063ffffffff16565b610bee565b6001905092915050565b6000610a8e610a87610be6565b8484610de5565b6001905092915050565b610aa133610b42565b610af6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806116e9602c913960400191505060405180910390fd5b610aff8161123d565b50565b6000610b3b670de0b6b3a7640000610b2d600454610b1f86610926565b61129790919063ffffffff16565b61131d90919063ffffffff16565b9050919050565b6000610b5882600361136790919063ffffffff16565b9050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c74576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806117ec6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610cfa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806116c76022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e6b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806117c76025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ef1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806116a46023913960400191505060405180910390fd5b610f5c81604051806060016040528060268152602001611715602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461109b9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fef816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461115b90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290611148576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561110d5780820151818401526020810190506110f2565b50505050905090810190601f16801561113a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000808284019050838110156111d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6111f781600361144590919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f05427c16329e6cc4175891cce8d9921a53d1776b5389c10a94a8e34e92c3020360405160405180910390a250565b61125181600361150290919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fef3be19955e25e159c478c9a4f9f42dc23787c06b927977a6dc454a444cd6d8f60405160405180910390a250565b6000808314156112aa5760009050611317565b60008284029050828482816112bb57fe5b0414611312576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061175c6021913960400191505060405180910390fd5b809150505b92915050565b600061135f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506115dd565b905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806117a56022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61144f8282611367565b6114a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061173b6021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61150c8282611367565b1561157f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008083118290611689576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561164e578082015181840152602081019050611633565b50505050905090810190601f16801561167b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161169557fe5b04905080915050939250505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573735075736865723a2063616c6c657220646f6573206e6f742068617665207468652050757368657220726f6c6545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a7231582025d43ed63475875475cdf7fd1bd2c8ba8edd0fb7642d56c8d159c8bcd220762964736f6c634300050e0032526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061010b5760003560e01c806370a08231116100a2578063a9059cbb11610071578063a9059cbb146104be578063a90c811914610524578063d02641a014610568578063d117ca5f146105c0578063dd62ed3e1461061c5761010b565b806370a082311461035f5780637ff9b596146103b757806395d89b41146103d5578063a457c2d7146104585761010b565b8063313ce567116100de578063313ce5671461029d57806339509351146102c15780634bd4bb9b14610327578063676c0d77146103315761010b565b806306fdde0314610110578063095ea7b31461019357806318160ddd146101f957806323b872dd14610217575b600080fd5b610118610694565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561015857808201518184015260208101905061013d565b50505050905090810190601f1680156101855780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101df600480360360408110156101a957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106cd565b604051808215151515815260200191505060405180910390f35b6102016106eb565b6040518082815260200191505060405180910390f35b6102836004803603606081101561022d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106f5565b604051808215151515815260200191505060405180910390f35b6102a56107ce565b604051808260ff1660ff16815260200191505060405180910390f35b61030d600480360360408110156102d757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506107d3565b604051808215151515815260200191505060405180910390f35b61032f610886565b005b61035d6004803603602081101561034757600080fd5b8101908080359060200190929190505050610891565b005b6103a16004803603602081101561037557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610926565b6040518082815260200191505060405180910390f35b6103bf61096e565b6040518082815260200191505060405180910390f35b6103dd610974565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561041d578082015181840152602081019050610402565b50505050905090810190601f16801561044a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104a46004803603604081101561046e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506109ad565b604051808215151515815260200191505060405180910390f35b61050a600480360360408110156104d457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a7a565b604051808215151515815260200191505060405180910390f35b6105666004803603602081101561053a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a98565b005b6105aa6004803603602081101561057e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b02565b6040518082815260200191505060405180910390f35b610602600480360360208110156105d657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b42565b604051808215151515815260200191505060405180910390f35b61067e6004803603604081101561063257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b5f565b6040518082815260200191505060405180910390f35b6040518060400160405280601281526020017f417572657573204e756d6d757320476f6c64000000000000000000000000000081525081565b60006106e16106da610be6565b8484610bee565b6001905092915050565b6000600254905090565b6000610702848484610de5565b6107c38461070e610be6565b6107be8560405180606001604052806028815260200161177d60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610774610be6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461109b9092919063ffffffff16565b610bee565b600190509392505050565b601281565b600061087c6107e0610be6565b8461087785600160006107f1610be6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461115b90919063ffffffff16565b610bee565b6001905092915050565b61088f336111e3565b565b61089a33610b42565b6108ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806116e9602c913960400191505060405180910390fd5b80600481905550807f6b361c807733cc94a3b7bda39c1c94dcc0511e91aa47b0f7f918068e9397689060405160405180910390a250565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60045481565b6040518060400160405280600381526020017f414e47000000000000000000000000000000000000000000000000000000000081525081565b6000610a706109ba610be6565b84610a6b8560405180606001604052806025815260200161181060259139600160006109e4610be6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461109b9092919063ffffffff16565b610bee565b6001905092915050565b6000610a8e610a87610be6565b8484610de5565b6001905092915050565b610aa133610b42565b610af6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806116e9602c913960400191505060405180910390fd5b610aff8161123d565b50565b6000610b3b670de0b6b3a7640000610b2d600454610b1f86610926565b61129790919063ffffffff16565b61131d90919063ffffffff16565b9050919050565b6000610b5882600361136790919063ffffffff16565b9050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c74576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806117ec6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610cfa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806116c76022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e6b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806117c76025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ef1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806116a46023913960400191505060405180910390fd5b610f5c81604051806060016040528060268152602001611715602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461109b9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fef816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461115b90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290611148576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561110d5780820151818401526020810190506110f2565b50505050905090810190601f16801561113a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000808284019050838110156111d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6111f781600361144590919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f05427c16329e6cc4175891cce8d9921a53d1776b5389c10a94a8e34e92c3020360405160405180910390a250565b61125181600361150290919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fef3be19955e25e159c478c9a4f9f42dc23787c06b927977a6dc454a444cd6d8f60405160405180910390a250565b6000808314156112aa5760009050611317565b60008284029050828482816112bb57fe5b0414611312576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061175c6021913960400191505060405180910390fd5b809150505b92915050565b600061135f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506115dd565b905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806117a56022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61144f8282611367565b6114a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061173b6021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61150c8282611367565b1561157f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008083118290611689576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561164e578082015181840152602081019050611633565b50505050905090810190601f16801561167b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161169557fe5b04905080915050939250505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573735075736865723a2063616c6c657220646f6573206e6f742068617665207468652050757368657220726f6c6545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a7231582025d43ed63475875475cdf7fd1bd2c8ba8edd0fb7642d56c8d159c8bcd220762964736f6c634300050e0032

Deployed Bytecode Sourcemap

19544:1286:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19544:1286:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19603:50;;;:::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;19603:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13824:152;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13824:152:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12853:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14446:304;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14446:304:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;19704:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15157:210;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15157:210:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7140:77;;;:::i;:::-;;20287:140;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20287:140:0;;;;;;;;;;;;;;;;;:::i;:::-;;13005:110;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13005:110:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19913:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19660:37;;;:::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;19660:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15868:261;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15868:261:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13326:158;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13326:158:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7040:92;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7040:92:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;20679:142;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20679:142:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6923:109;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6923:109:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13545:134;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13545:134:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19603:50;;;;;;;;;;;;;;;;;;;:::o;13824:152::-;13890:4;13907:39;13916:12;:10;:12::i;:::-;13930:7;13939:6;13907:8;:39::i;:::-;13964:4;13957:11;;13824:152;;;;:::o;12853:91::-;12897:7;12924:12;;12917:19;;12853:91;:::o;14446:304::-;14535:4;14552:36;14562:6;14570:9;14581:6;14552:9;:36::i;:::-;14599:121;14608:6;14616:12;:10;:12::i;:::-;14630:89;14668:6;14630:89;;;;;;;;;;;;;;;;;:11;:19;14642:6;14630:19;;;;;;;;;;;;;;;:33;14650:12;:10;:12::i;:::-;14630:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;14599:8;:121::i;:::-;14738:4;14731:11;;14446:304;;;;;:::o;19704:35::-;19737:2;19704:35;:::o;15157:210::-;15237:4;15254:83;15263:12;:10;:12::i;:::-;15277:7;15286:50;15325:10;15286:11;:25;15298:12;:10;:12::i;:::-;15286:25;;;;;;;;;;;;;;;:34;15312:7;15286:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;15254:8;:83::i;:::-;15355:4;15348:11;;15157:210;;;;:::o;7140:77::-;7184:25;7198:10;7184:13;:25::i;:::-;7140:77::o;20287:140::-;6826:20;6835:10;6826:8;:20::i;:::-;6818:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20372:6;20359:10;:19;;;;20412:6;20394:25;;;;;;;;;;20287:140;:::o;13005:110::-;13062:7;13089:9;:18;13099:7;13089:18;;;;;;;;;;;;;;;;13082:25;;13005:110;;;:::o;19913:25::-;;;;:::o;19660:37::-;;;;;;;;;;;;;;;;;;;:::o;15868:261::-;15953:4;15970:129;15979:12;:10;:12::i;:::-;15993:7;16002:96;16041:15;16002:96;;;;;;;;;;;;;;;;;:11;:25;16014:12;:10;:12::i;:::-;16002:25;;;;;;;;;;;;;;;:34;16028:7;16002:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;15970:8;:129::i;:::-;16117:4;16110:11;;15868:261;;;;:::o;13326:158::-;13395:4;13412:42;13422:12;:10;:12::i;:::-;13436:9;13447:6;13412:9;:42::i;:::-;13472:4;13465:11;;13326:158;;;;:::o;7040:92::-;6826:20;6835:10;6826:8;:20::i;:::-;6818:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7105:19;7116:7;7105:10;:19::i;:::-;7040:92;:::o;20679:142::-;20740:7;20767:46;20806:6;20767:34;20790:10;;20767:18;20777:7;20767:9;:18::i;:::-;:22;;:34;;;;:::i;:::-;:38;;:46;;;;:::i;:::-;20760:53;;20679:142;;;:::o;6923:109::-;6979:4;7003:21;7016:7;7003:8;:12;;:21;;;;:::i;:::-;6996:28;;6923:109;;;:::o;13545:134::-;13617:7;13644:11;:18;13656:5;13644:18;;;;;;;;;;;;;;;:27;13663:7;13644:27;;;;;;;;;;;;;;;;13637:34;;13545:134;;;;:::o;8269:98::-;8314:15;8349:10;8342:17;;8269:98;:::o;18785:336::-;18896:1;18879:19;;:5;:19;;;;18871:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18977:1;18958:21;;:7;:21;;;;18950:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19059:6;19029:11;:18;19041:5;19029:18;;;;;;;;;;;;;;;:27;19048:7;19029:27;;;;;;;;;;;;;;;:36;;;;19097:7;19081:32;;19090:5;19081:32;;;19106:6;19081:32;;;;;;;;;;;;;;;;;;18785:336;;;:::o;16617:469::-;16733:1;16715:20;;:6;:20;;;;16707:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16817:1;16796:23;;:9;:23;;;;16788:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16890;16912:6;16890:71;;;;;;;;;;;;;;;;;:9;:17;16900:6;16890:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;16870:9;:17;16880:6;16870:17;;;;;;;;;;;;;;;:91;;;;16995:32;17020:6;16995:9;:20;17005:9;16995:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;16972:9;:20;16982:9;16972:20;;;;;;;;;;;;;;;:55;;;;17060:9;17043:35;;17052:6;17043:35;;;17071:6;17043:35;;;;;;;;;;;;;;;;;;16617:469;;;:::o;1780:190::-;1866:7;1899:1;1894;:6;;1902:12;1886:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;1886:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1926:9;1942:1;1938;:5;1926:17;;1961:1;1954:8;;;1780:190;;;;;:::o;857:179::-;915:7;935:9;951:1;947;:5;935:17;;976:1;971;:6;;963:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1027:1;1020:8;;;857:179;;;;:::o;7355:130::-;7415:24;7431:7;7415:8;:15;;:24;;;;:::i;:::-;7469:7;7455:22;;;;;;;;;;;;7355:130;:::o;7225:122::-;7282:21;7295:7;7282:8;:12;;:21;;;;:::i;:::-;7331:7;7319:20;;;;;;;;;;;;7225:122;:::o;2219:467::-;2277:7;2527:1;2522;:6;2518:47;;;2552:1;2545:8;;;;2518:47;2575:9;2591:1;2587;:5;2575:17;;2620:1;2615;2611;:5;;;;;;:10;2603:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2677:1;2670:8;;;2219:467;;;;;:::o;3152:132::-;3210:7;3237:39;3241:1;3244;3237:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3230:46;;3152:132;;;;:::o;6214:203::-;6286:4;6330:1;6311:21;;:7;:21;;;;6303:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6389:4;:11;;:20;6401:7;6389:20;;;;;;;;;;;;;;;;;;;;;;;;;6382:27;;6214:203;;;;:::o;5936:183::-;6016:18;6020:4;6026:7;6016:3;:18::i;:::-;6008:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6106:5;6083:4;:11;;:20;6095:7;6083:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;5936:183;;:::o;5678:178::-;5756:18;5760:4;5766:7;5756:3;:18::i;:::-;5755:19;5747:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5844:4;5821;:11;;:20;5833:7;5821:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;5678:178;;:::o;3812:343::-;3898:7;3997:1;3993;:5;4000:12;3985:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;3985:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4024:9;4040:1;4036;:5;;;;;;4024:17;;4146:1;4139:8;;;3812:343;;;;;:::o

Swarm Source

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