Contract 0x1EAA5D4Df7Ca128a9b4513590211B88962060DD7

Contract Overview

Balance:
0 Ether
Txn Hash
Method
Block
From
To
Value
0xc1238434b64a24864ad51c606ca35f7568090c4a5388a09231db93ac988f3a62Transfer60745832020-03-03 18:21:37999 days 37 mins ago0x3425853ce9055859b683fa7c6dde156f2430b6a1 IN  0x1eaa5d4df7ca128a9b4513590211b88962060dd70 Ether0.000056871.1
0x7df30fb71281b463cd10c4fb5bd2610d7fc7f7c95337dff2e62f1da025cec455Add Minter60744372020-03-03 17:45:06999 days 1 hr ago0xb29ae9a9bf7ca2984a6a09939e49d9cf46ab0c1d IN  0x1eaa5d4df7ca128a9b4513590211b88962060dd70 Ether0.0009290820
0x0e2d3f1e3950f1c22d636077848e56582f079b42283227ecefc807efc20f93fb0x6080604060744362020-03-03 17:44:50999 days 1 hr ago0xb29ae9a9bf7ca2984a6a09939e49d9cf46ab0c1d IN  Create: DAE0 Ether0.023977120
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DAE

Compiler Version
v0.5.0+commit.1d4f565a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// File: @openzeppelin/contracts/token/ERC20/IERC20.sol

pragma solidity ^0.5.0;

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

// File: @openzeppelin/contracts/token/ERC20/ERC20Detailed.sol

pragma solidity ^0.5.0;


/**
 * @dev Optional functions from the ERC20 standard.
 */
contract ERC20Detailed is IERC20 {
    string private _name;
    string private _symbol;
    uint8 private _decimals;

    /**
     * @dev Sets the values for `name`, `symbol`, and `decimals`. All three of
     * these values are immutable: they can only be set once during
     * construction.
     */
    constructor (string memory name, string memory symbol, uint8 decimals) public {
        _name = name;
        _symbol = symbol;
        _decimals = decimals;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei.
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view returns (uint8) {
        return _decimals;
    }
}

// File: @openzeppelin/contracts/GSN/Context.sol

pragma solidity ^0.5.0;

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

// File: @openzeppelin/contracts/math/SafeMath.sol

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

// File: @openzeppelin/contracts/token/ERC20/ERC20.sol

pragma solidity ^0.5.0;




/**
 * @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"));
    }
}

// File: @openzeppelin/contracts/access/Roles.sol

pragma solidity ^0.5.0;

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

// File: @openzeppelin/contracts/access/roles/MinterRole.sol

pragma solidity ^0.5.0;



contract MinterRole is Context {
    using Roles for Roles.Role;

    event MinterAdded(address indexed account);
    event MinterRemoved(address indexed account);

    Roles.Role private _minters;

    constructor () internal {
        _addMinter(_msgSender());
    }

    modifier onlyMinter() {
        require(isMinter(_msgSender()), "MinterRole: caller does not have the Minter role");
        _;
    }

    function isMinter(address account) public view returns (bool) {
        return _minters.has(account);
    }

    function addMinter(address account) public onlyMinter {
        _addMinter(account);
    }

    function renounceMinter() public {
        _removeMinter(_msgSender());
    }

    function _addMinter(address account) internal {
        _minters.add(account);
        emit MinterAdded(account);
    }

    function _removeMinter(address account) internal {
        _minters.remove(account);
        emit MinterRemoved(account);
    }
}

// File: @openzeppelin/contracts/token/ERC20/ERC20Mintable.sol

pragma solidity ^0.5.0;



/**
 * @dev Extension of {ERC20} that adds a set of accounts with the {MinterRole},
 * which have permission to mint (create) new tokens as they see fit.
 *
 * At construction, the deployer of the contract is the only minter.
 */
contract ERC20Mintable is ERC20, MinterRole {
    /**
     * @dev See {ERC20-_mint}.
     *
     * Requirements:
     *
     * - the caller must have the {MinterRole}.
     */
    function mint(address account, uint256 amount) public onlyMinter returns (bool) {
        _mint(account, amount);
        return true;
    }
}

// File: @openzeppelin/contracts/token/ERC20/ERC20Capped.sol

pragma solidity ^0.5.0;


/**
 * @dev Extension of {ERC20Mintable} that adds a cap to the supply of tokens.
 */
contract ERC20Capped is ERC20Mintable {
    uint256 private _cap;

    /**
     * @dev Sets the value of the `cap`. This value is immutable, it can only be
     * set once during construction.
     */
    constructor (uint256 cap) public {
        require(cap > 0, "ERC20Capped: cap is 0");
        _cap = cap;
    }

    /**
     * @dev Returns the cap on the token's total supply.
     */
    function cap() public view returns (uint256) {
        return _cap;
    }

    /**
     * @dev See {ERC20Mintable-mint}.
     *
     * Requirements:
     *
     * - `value` must not cause the total supply to go over the cap.
     */
    function _mint(address account, uint256 value) internal {
        require(totalSupply().add(value) <= _cap, "ERC20Capped: cap exceeded");
        super._mint(account, value);
    }
}

// File: contracts/DAE.sol

pragma solidity 0.5.0;




/**
 * @title DAE Token Contract
 *
 * @author @wafflemakr
 *
 *
 *  Name:           Drachmae
 *  Symbol:         DAE
 *  Decimals:       4
 *  Initial Supply: 4,200,000.000 (0x3425853Ce9055859b683FA7c6DDe156f2430b6a1)
 *  Max Supply:     420,000,000.0000
 *  Features:       Capped, Mintable
 *  Minters:        0x1cAb97Def5fb15a965E875765Fce94073CB980C4
 *
 */
contract DAE is ERC20Detailed, ERC20Mintable, ERC20Capped {
    constructor()
        public
        ERC20Detailed("Drachmae", "DAE", 4)
        ERC20Capped(420e6 * 10**uint256(4))
    {
        _mint(
            0x3425853Ce9055859b683FA7c6DDe156f2430b6a1,
            42e5 * 10**uint256(4)
        );
    }

}

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":"amount","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":"sender","type":"address"},{"name":"recipient","type":"address"},{"name":"amount","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":true,"inputs":[],"name":"cap","outputs":[{"name":"","type":"uint256"}],"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":"account","type":"address"},{"name":"amount","type":"uint256"}],"name":"mint","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addMinter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceMinter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"recipient","type":"address"},{"name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isMinter","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"MinterAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"MinterRemoved","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"}]

60806040523480156200001157600080fd5b50604080518082018252600881527f44726163686d616500000000000000000000000000000000000000000000000060208083019182528351808501909452600384527f44414500000000000000000000000000000000000000000000000000000000009084015281516503d1e382100093916004916200009591600091620005af565b508151620000ab906001906020850190620005af565b506002805460ff191660ff9290921691909117905550620000e99050620000da64010000000062000190810204565b64010000000062000195810204565b600081116200015957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f45524332304361707065643a2063617020697320300000000000000000000000604482015290519081900360640190fd5b6007556200018a733425853ce9055859b683fa7c6dde156f2430b6a16409c7652400640100000000620001e7810204565b62000651565b335b90565b620001b06006826401000000006200104d620002a382021704565b604051600160a060020a038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6007546200021782620002026401000000006200034a810204565b9064010000000062000d3b6200035082021704565b11156200028557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f45524332304361707065643a2063617020657863656564656400000000000000604482015290519081900360640190fd5b6200029f828264010000000062000f56620003cc82021704565b5050565b620002b88282640100000000620004ef810204565b156200032557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b60055490565b600082820183811015620003c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600160a060020a03821615156200044457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b60055462000461908264010000000062000d3b6200035082021704565b600555600160a060020a03821660009081526003602052604090205462000497908264010000000062000d3b6200035082021704565b600160a060020a03831660008181526003602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000600160a060020a03821615156200058f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f526f6c65733a206163636f756e7420697320746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620005f257805160ff191683800117855562000622565b8280016001018555821562000622579182015b828111156200062257825182559160200191906001019062000605565b506200063092915062000634565b5090565b6200019291905b808211156200063057600081556001016200063b565b6111a580620006616000396000f3fe6080604052600436106100e55763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146100ea578063095ea7b31461017457806318160ddd146101c157806323b872dd146101e8578063313ce5671461022b578063355274ea14610256578063395093511461026b57806340c10f19146102a457806370a08231146102dd57806395d89b4114610310578063983b2d5614610325578063986502751461035a578063a457c2d71461036f578063a9059cbb146103a8578063aa271e1a146103e1578063dd62ed3e14610414575b600080fd5b3480156100f657600080fd5b506100ff61044f565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610139578181015183820152602001610121565b50505050905090810190601f1680156101665780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561018057600080fd5b506101ad6004803603604081101561019757600080fd5b50600160a060020a0381351690602001356104e5565b604080519115158252519081900360200190f35b3480156101cd57600080fd5b506101d6610502565b60408051918252519081900360200190f35b3480156101f457600080fd5b506101ad6004803603606081101561020b57600080fd5b50600160a060020a03813581169160208101359091169060400135610508565b34801561023757600080fd5b506102406105e7565b6040805160ff9092168252519081900360200190f35b34801561026257600080fd5b506101d66105f0565b34801561027757600080fd5b506101ad6004803603604081101561028e57600080fd5b50600160a060020a0381351690602001356105f6565b3480156102b057600080fd5b506101ad600480360360408110156102c757600080fd5b50600160a060020a03813516906020013561064a565b3480156102e957600080fd5b506101d66004803603602081101561030057600080fd5b5035600160a060020a03166106e2565b34801561031c57600080fd5b506100ff6106fd565b34801561033157600080fd5b506103586004803603602081101561034857600080fd5b5035600160a060020a031661075d565b005b34801561036657600080fd5b506103586107f0565b34801561037b57600080fd5b506101ad6004803603604081101561039257600080fd5b50600160a060020a038135169060200135610802565b3480156103b457600080fd5b506101ad600480360360408110156103cb57600080fd5b50600160a060020a0381351690602001356108b4565b3480156103ed57600080fd5b506101ad6004803603602081101561040457600080fd5b5035600160a060020a03166108c8565b34801561042057600080fd5b506101d66004803603604081101561043757600080fd5b50600160a060020a03813581169160200135166108e1565b60008054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104db5780601f106104b0576101008083540402835291602001916104db565b820191906000526020600020905b8154815290600101906020018083116104be57829003601f168201915b5050505050905090565b60006104f96104f261090c565b8484610910565b50600192915050565b60055490565b6000610515848484610a7d565b6105dd8461052161090c565b6105d885606060405190810160405280602881526020017f45524332303a207472616e7366657220616d6f756e742065786365656473206181526020017f6c6c6f77616e6365000000000000000000000000000000000000000000000000815250600460008b600160a060020a0316600160a060020a0316815260200190815260200160002060006105b161090c565b600160a060020a03168152602081019190915260400160002054919063ffffffff610ca116565b610910565b5060019392505050565b60025460ff1690565b60075490565b60006104f961060361090c565b846105d8856004600061061461090c565b600160a060020a03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff610d3b16565b600061065c61065761090c565b6108c8565b15156106d8576040805160e560020a62461bcd02815260206004820152603060248201527f4d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766560448201527f20746865204d696e74657220726f6c6500000000000000000000000000000000606482015290519081900360840190fd5b6104f98383610d9f565b600160a060020a031660009081526003602052604090205490565b60018054604080516020601f600260001961010087891615020190951694909404938401819004810282018101909252828152606093909290918301828280156104db5780601f106104b0576101008083540402835291602001916104db565b61076861065761090c565b15156107e4576040805160e560020a62461bcd02815260206004820152603060248201527f4d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766560448201527f20746865204d696e74657220726f6c6500000000000000000000000000000000606482015290519081900360840190fd5b6107ed81610e1e565b50565b6108006107fb61090c565b610e66565b565b60006104f961080f61090c565b846105d885606060405190810160405280602581526020017f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7781526020017f207a65726f0000000000000000000000000000000000000000000000000000008152506004600061087d61090c565b600160a060020a03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff610ca116565b60006104f96108c161090c565b8484610a7d565b60006108db60068363ffffffff610eae16565b92915050565b600160a060020a03918216600090815260046020908152604080832093909416825291909152205490565b3390565b600160a060020a0383161515610995576040805160e560020a62461bcd028152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a0382161515610a1b576040805160e560020a62461bcd02815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a03808416600081815260046020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b600160a060020a0383161515610b03576040805160e560020a62461bcd02815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a0382161515610b89576040805160e560020a62461bcd02815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60408051606081018252602681527f45524332303a207472616e7366657220616d6f756e74206578636565647320626020808301919091527f616c616e6365000000000000000000000000000000000000000000000000000082840152600160a060020a038616600090815260039091529190912054610c1091839063ffffffff610ca116565b600160a060020a038085166000908152600360205260408082209390935590841681522054610c45908263ffffffff610d3b16565b600160a060020a0380841660008181526003602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115610d335760405160e560020a62461bcd0281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610cf8578181015183820152602001610ce0565b50505050905090810190601f168015610d255780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610d98576040805160e560020a62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600754610dba82610dae610502565b9063ffffffff610d3b16565b1115610e10576040805160e560020a62461bcd02815260206004820152601960248201527f45524332304361707065643a2063617020657863656564656400000000000000604482015290519081900360640190fd5b610e1a8282610f56565b5050565b610e2f60068263ffffffff61104d16565b604051600160a060020a038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b610e7760068263ffffffff6110d116565b604051600160a060020a038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b6000600160a060020a0382161515610f36576040805160e560020a62461bcd02815260206004820152602260248201527f526f6c65733a206163636f756e7420697320746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b600160a060020a0382161515610fb6576040805160e560020a62461bcd02815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600554610fc9908263ffffffff610d3b16565b600555600160a060020a038216600090815260036020526040902054610ff5908263ffffffff610d3b16565b600160a060020a03831660008181526003602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6110578282610eae565b156110ac576040805160e560020a62461bcd02815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6110db8282610eae565b1515611157576040805160e560020a62461bcd02815260206004820152602160248201527f526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c60448201527f6500000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a0316600090815260209190915260409020805460ff1916905556fea165627a7a72305820881664d6e87fc00be934d9d94ec5a30cdf6c59e782c4c1713d5ab5c96cc08d280029

Deployed ByteCode Sourcemap

23844:323:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3592:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3592:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;3592:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13790:152;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13790:152:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;13790:152:0;;;;;;;;;;;;;;;;;;;;;;;;;;;12811:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12811:91:0;;;;;;;;;;;;;;;;;;;;14414:304;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14414:304:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;14414:304:0;;;;;;;;;;;;;;;;;;4444:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4444:83:0;;;;;;;;;;;;;;;;;;;;;;;22966:75;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22966:75:0;;;;15127:210;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15127:210:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;15127:210:0;;;;;;;;;22224:143;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22224:143:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;22224:143:0;;;;;;;;;12965:110;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12965:110:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12965:110:0;-1:-1:-1;;;;;12965:110:0;;;3794:87;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3794:87:0;;;;21249:92;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21249:92:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21249:92:0;-1:-1:-1;;;;;21249:92:0;;;;;21349:79;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21349:79:0;;;;15840:261;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15840:261:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;15840:261:0;;;;;;;;;13288:158;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13288:158:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;13288:158:0;;;;;;;;;21132:109;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21132:109:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21132:109:0;-1:-1:-1;;;;;21132:109:0;;;13509:134;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13509:134:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;13509:134:0;;;;;;;;;;;3592:83;3662:5;3655:12;;;;;;;;-1:-1:-1;;3655:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3629:13;;3655:12;;3662:5;;3655:12;;3662:5;3655:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3592:83;:::o;13790:152::-;13856:4;13873:39;13882:12;:10;:12::i;:::-;13896:7;13905:6;13873:8;:39::i;:::-;-1:-1:-1;13930:4:0;13790:152;;;;:::o;12811:91::-;12882:12;;12811:91;:::o;14414:304::-;14503:4;14520:36;14530:6;14538:9;14549:6;14520:9;:36::i;:::-;14567:121;14576:6;14584:12;:10;:12::i;:::-;14598:89;14636:6;14598:89;;;;;;;;;;;;;;;;;;;;;;;:11;:19;14610:6;-1:-1:-1;;;;;14598:19:0;-1:-1:-1;;;;;14598:19:0;;;;;;;;;;;;:33;14618:12;:10;:12::i;:::-;-1:-1:-1;;;;;14598:33:0;;;;;;;;;;;;-1:-1:-1;14598:33:0;;;:89;;:37;:89;:::i;:::-;14567:8;:121::i;:::-;-1:-1:-1;14706:4:0;14414:304;;;;;:::o;4444:83::-;4510:9;;;;4444:83;:::o;22966:75::-;23029:4;;22966:75;:::o;15127:210::-;15207:4;15224:83;15233:12;:10;:12::i;:::-;15247:7;15256:50;15295:10;15256:11;:25;15268:12;:10;:12::i;:::-;-1:-1:-1;;;;;15256:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;15256:25:0;;;:34;;;;;;;;;;;:50;:38;:50;:::i;22224:143::-;22298:4;21029:22;21038:12;:10;:12::i;:::-;21029:8;:22::i;:::-;21021:83;;;;;;;-1:-1:-1;;;;;21021:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22315:22;22321:7;22330:6;22315:5;:22::i;12965:110::-;-1:-1:-1;;;;;13049:18:0;13022:7;13049:18;;;:9;:18;;;;;;;12965:110::o;3794:87::-;3866:7;3859:14;;;;;;;;-1:-1:-1;;3859:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3833:13;;3859:14;;3866:7;;3859:14;;3866:7;3859:14;;;;;;;;;;;;;;;;;;;;;;;;21249:92;21029:22;21038:12;:10;:12::i;21029:22::-;21021:83;;;;;;;-1:-1:-1;;;;;21021:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21314:19;21325:7;21314:10;:19::i;:::-;21249:92;:::o;21349:79::-;21393:27;21407:12;:10;:12::i;:::-;21393:13;:27::i;:::-;21349:79::o;15840:261::-;15925:4;15942:129;15951:12;:10;:12::i;:::-;15965:7;15974:96;16013:15;15974:96;;;;;;;;;;;;;;;;;;;;;;;:11;:25;15986:12;:10;:12::i;:::-;-1:-1:-1;;;;;15974:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;15974:25:0;;;:34;;;;;;;;;;;:96;;:38;:96;:::i;13288:158::-;13357:4;13374:42;13384:12;:10;:12::i;:::-;13398:9;13409:6;13374:9;:42::i;21132:109::-;21188:4;21212:21;:8;21225:7;21212:21;:12;:21;:::i;:::-;21205:28;21132:109;-1:-1:-1;;21132:109:0:o;13509:134::-;-1:-1:-1;;;;;13608:18:0;;;13581:7;13608:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;13509:134::o;5392:98::-;5472:10;5392:98;:::o;18771:338::-;-1:-1:-1;;;;;18865:19:0;;;;18857:68;;;;;-1:-1:-1;;;;;18857:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18944:21:0;;;;18936:68;;;;;-1:-1:-1;;;;;18936:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19017:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;19069:32;;;;;;;;;;;;;;;;;18771:338;;;:::o;16591:471::-;-1:-1:-1;;;;;16689:20:0;;;;16681:70;;;;;-1:-1:-1;;;;;16681:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16770:23:0;;;;16762:71;;;;;-1:-1:-1;;;;;16762:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16866;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16866:17:0;;-1:-1:-1;16866:17:0;;;:9;:17;;;;;;;;:71;;16888:6;;16866:71;:21;:71;:::i;:::-;-1:-1:-1;;;;;16846:17:0;;;;;;;:9;:17;;;;;;:91;;;;16971:20;;;;;;;:32;;16996:6;16971:32;:24;:32;:::i;:::-;-1:-1:-1;;;;;16948:20:0;;;;;;;:9;:20;;;;;;;;;:55;;;;17019:35;;;;;;;16948:20;;17019:35;;;;;;;;;;;;;16591:471;;;:::o;7572:192::-;7658:7;7694:12;7686:6;;;;7678:29;;;;-1:-1:-1;;;;;7678:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7678:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;7730:5:0;;;7572:192::o;6643:181::-;6701:7;6733:5;;;6757:6;;;;6749:46;;;;;-1:-1:-1;;;;;6749:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;6815:1;6643:181;-1:-1:-1;;;6643:181:0:o;23214:183::-;23317:4;;23289:24;23307:5;23289:13;:11;:13::i;:::-;:17;:24;:17;:24;:::i;:::-;:32;;23281:70;;;;;-1:-1:-1;;;;;23281:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;23362:27;23374:7;23383:5;23362:11;:27::i;:::-;23214:183;;:::o;21436:122::-;21493:21;:8;21506:7;21493:21;:12;:21;:::i;:::-;21530:20;;-1:-1:-1;;;;;21530:20:0;;;;;;;;21436:122;:::o;21566:130::-;21626:24;:8;21642:7;21626:24;:15;:24;:::i;:::-;21666:22;;-1:-1:-1;;;;;21666:22:0;;;;;;;;21566:130;:::o;20397:203::-;20469:4;-1:-1:-1;;;;;20494:21:0;;;;20486:68;;;;;-1:-1:-1;;;;;20486:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;20572:20:0;:11;:20;;;;;;;;;;;;;;;20397:203::o;17343:308::-;-1:-1:-1;;;;;17419:21:0;;;;17411:65;;;;;-1:-1:-1;;;;;17411:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;17504:12;;:24;;17521:6;17504:24;:16;:24;:::i;:::-;17489:12;:39;-1:-1:-1;;;;;17560:18:0;;;;;;:9;:18;;;;;;:30;;17583:6;17560:30;:22;:30;:::i;:::-;-1:-1:-1;;;;;17539:18:0;;;;;;:9;:18;;;;;;;;:51;;;;17606:37;;;;;;;17539:18;;;;17606:37;;;;;;;;;;17343:308;;:::o;19861:178::-;19939:18;19943:4;19949:7;19939:3;:18::i;:::-;19938:19;19930:63;;;;;-1:-1:-1;;;;;19930:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20004:20:0;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;20004:27:0;20027:4;20004:27;;;19861:178::o;20119:183::-;20199:18;20203:4;20209:7;20199:3;:18::i;:::-;20191:64;;;;;;;-1:-1:-1;;;;;20191:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20266:20:0;20289:5;20266:20;;;;;;;;;;;:28;;-1:-1:-1;;20266:28:0;;;20119:183::o

Swarm Source

bzzr://881664d6e87fc00be934d9d94ec5a30cdf6c59e782c4c1713d5ab5c96cc08d28
Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.