Contract 0xC3c221fE28c33814c28c822b631fd76047eF1a63

Token Contract 
 

Contract Overview

MilliMeter: MM Token
Balance:
0 Ether

EtherValue:
$0.00

Token:
 
Txn Hash
Method
Block
From
To
Value
0x483d8dd814fb7b873a631c5e359b9d28307e656c213e11e98a265772f444f01eTransfer160576962022-11-27 0:20:112 days 18 hrs agoMEXC: Mexc.com IN  MilliMeter: MM Token0 Ether0.0007442118
0xfbab62f1ffa10a3869103096260278e59e1f93cc87d649378d37b428151be45dTransfer160572332022-11-26 22:47:112 days 20 hrs agoMEXC: Mexc.com IN  MilliMeter: MM Token0 Ether0.0009935617
0xe69b5804e2fbf99db6f973bef850c10a15da1d3811bccf805bd84aec12686e25Transfer160503882022-11-25 23:50:113 days 19 hrs agoMEXC: Mexc.com IN  MilliMeter: MM Token0 Ether0.0007111417.20032803
0x3fdf9e236a47d666ced25f0279fbbbf67cbc951e645acf73112dee86f494dff2Transfer159616772022-11-13 14:24:1116 days 4 hrs agoMEXC: Mexc.com IN  MilliMeter: MM Token0 Ether0.0012273421
0x2674cbea7433d5d8a37f8962752aa4b01aca9e4970d5ae2a52e524b606edda09Transfer159547822022-11-12 15:19:1117 days 3 hrs agoMEXC: Mexc.com IN  MilliMeter: MM Token0 Ether0.0012273421
0x4d014bcd4de4bad809d25b4b9fc8ac2ac41a9391ad4764b1d19d1222d663b683Transfer158632872022-10-30 20:32:2329 days 22 hrs agoMEXC: Mexc.com IN  MilliMeter: MM Token0 Ether0.0009351216
0x596470b740a9f2f456f7737d8cafce417ef8f90b4ba3dc2587813a47b676bb62Transfer158483112022-10-28 18:20:1132 days 52 mins agoMEXC: Mexc.com IN  MilliMeter: MM Token0 Ether0.0017533530
0x2b2d98c214fd4760cd98e533d2caf8de63a31e1e97430fb791d4d63b509913aaTransfer157988912022-10-21 20:33:1138 days 22 hrs agoMEXC: Mexc.com IN  MilliMeter: MM Token0 Ether0.0020451535
0xa49b4b9f4388bfafb442f8fab3140ed18637f88615012528a29e6eff61c128a8Transfer157403512022-10-13 16:21:1147 days 2 hrs agoMEXC: Mexc.com IN  MilliMeter: MM Token0 Ether0.0024027241.11094861
0x6483df7fcfb3d27766efc85d3676539b247c0e76ef7e392d3bbbe58448a41b07Approve157372702022-10-13 6:00:5947 days 13 hrs ago0xc24d30475eca133302192b502085a3cc124b0b9b IN  MilliMeter: MM Token0 Ether0.00060273 12.94767129
0x17980e8d8bbf04253ecd6a5c12f8eac033edd21917871070d6ead19e49089a8eTransfer157031632022-10-08 11:46:2352 days 7 hrs agoMEXC: Mexc.com IN  MilliMeter: MM Token0 Ether0.0006613216
0xa65122b1c11b002eaf882bb007c4b2529b5158157d094ca073d010697d58cac6Transfer157030332022-10-08 11:20:1152 days 7 hrs agoMEXC: Mexc.com IN  MilliMeter: MM Token0 Ether0.0009933617
0x5a7aebf9e2c8d45e208d9632b53265a4b1f534a684118267385238fc60a9f0b9Transfer156813282022-10-05 10:32:1155 days 8 hrs agoMEXC: Mexc.com IN  MilliMeter: MM Token0 Ether0.0007013412
0xd16f795ab58c15b2fe50f0b9386d0f4c634139791adecb79b8fd22174349361cTransfer156774232022-10-04 21:23:2355 days 21 hrs agoMEXC: Mexc.com IN  MilliMeter: MM Token0 Ether0.0013442323
0x2617f8000361716a4d20c5eefc6c6f0835ad5d47af81c0a8838523a6831772b1Transfer156771772022-10-04 20:33:2355 days 22 hrs agoMEXC: Mexc.com IN  MilliMeter: MM Token0 Ether0.0017533530
0x82d44fdb394d50375cd8da1f3241ff2959e6198a90bb71bec0e445cfcbd1bafdTransfer156700582022-10-03 20:38:1156 days 22 hrs agoMEXC: Mexc.com IN  MilliMeter: MM Token0 Ether0.0009919924
0x378aea722643a679723dbf580671871e21661182dec7ec93a8d5628b3e81f269Transfer156696742022-10-03 19:21:1156 days 23 hrs agoMEXC: Mexc.com IN  MilliMeter: MM Token0 Ether0.0015776927
0x28d6d2b53a1553d8b857625253322dfbcd85eec622f948f9ea8226ac1d02fc47Transfer156694362022-10-03 18:33:1157 days 39 mins agoMEXC: Mexc.com IN  MilliMeter: MM Token0 Ether0.0011986529
0x9f3638091dd256333a13e1d595a9d8c53319915b46d59ef9dd601448a2633fc8Transfer156686542022-10-03 15:55:1157 days 3 hrs agoMEXC: Mexc.com IN  MilliMeter: MM Token0 Ether0.0021040236
0x4cd42df927fc86af573476c100c1bed0f2dc5b4baed6c7383f796071eb5debb8Approve156648252022-10-03 3:04:3557 days 16 hrs ago0x55aeb56136091e9dce99c91f4e2592fdb7c07ef2 IN  MilliMeter: MM Token0 Ether0.001163825
0xb54182e70a5d62efc17c7c89f252f9302f9a3cc3395a5fb23da344c9aadd163bTransfer156602562022-10-02 11:47:2358 days 7 hrs agoMEXC: Mexc.com IN  MilliMeter: MM Token0 Ether0.0006428911
0x8c1804337db37941fc849f85610cb30c7cbb3e83dda1d04564da6d4968737eb9Transfer156585182022-10-02 5:58:2358 days 13 hrs agoMEXC: Mexc.com IN  MilliMeter: MM Token0 Ether0.0006428911
0x0a805108c56c6ab691b5f037648909ab9d8e1150896385d8223b277eb19f8bfcTransfer156572752022-10-02 1:49:1158 days 17 hrs agoMEXC: Mexc.com IN  MilliMeter: MM Token0 Ether0.0007126912.19420659
0x1743f38ca219fc39bba7b5bca65e427e37b645863cc555ed54f24ffca6e715cbTransfer153595852022-08-17 15:42:22104 days 3 hrs ago0x299c5245652684be0802509785841d93ca8492a4 IN  MilliMeter: MM Token0 Ether0.0006530312.16776618
0x6d82f8b5a7fb5146ca51ad905dc6751312bd238bab4a28bff9d1022e880798feTransfer153595522022-08-17 15:34:58104 days 3 hrs ago0x2de81b83b74502fadbb402d56b1c5fd54cc4c759 IN  MilliMeter: MM Token0 Ether0.00056455 9.30311423
[ Download CSV Export 

OVERVIEW

The MM Platform claims to protect the global value of E-data, allowing users to quickly share and protect their own value and copyright.

View more zero value Internal Transactions in Advanced View mode
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MilliMeter

Compiler Version
v0.5.4+commit.9549d8ff

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

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

pragma solidity ^0.5.4;

// File: node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol

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

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

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

    function totalSupply() external view returns (uint256);

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

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

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

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

// File: node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol

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

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

        return c;
    }

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

        return c;
    }

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

        return c;
    }

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

        return c;
    }

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

// File: node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20.sol

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

    mapping (address => uint256) internal _balances;

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

    uint256 private _totalSupply;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// File: contracts\MilliMeter.sol

contract MilliMeter is ERC20 {
    string public constant name = "MilliMeter"; // solium-disable-line uppercase
    string public constant symbol = "MM"; // solium-disable-line uppercase
    uint8 public constant decimals = 18; // solium-disable-line uppercase
    uint256 public constant initialSupply = 2000000000 * (10 ** uint256(decimals));
    
    constructor() public {
        super._mint(msg.sender, initialSupply);
        owner = msg.sender;
    }

    //ownership
    address public owner;

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

    modifier onlyOwner() {
        require(msg.sender == owner, "Not owner");
        _;
    }

  /**
   * @dev Allows the current owner to relinquish control of the contract.
   * @notice Renouncing to ownership will leave the contract without an owner.
   * It will not be possible to call the functions with the `onlyOwner`
   * modifier anymore.
   */
    function renounceOwnership() public onlyOwner {
        emit OwnershipRenounced(owner);
        owner = address(0);
    }

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

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

    //pausable
    event Pause();
    event Unpause();

    bool public paused = false;
    
    /**
    * @dev Modifier to make a function callable only when the contract is not paused.
    */
    modifier whenNotPaused() {
        require(!paused, "Paused by owner");
        _;
    }

    /**
    * @dev Modifier to make a function callable only when the contract is paused.
    */
    modifier whenPaused() {
        require(paused, "Not paused now");
        _;
    }

    /**
    * @dev called by the owner to pause, triggers stopped state
    */
    function pause() public onlyOwner whenNotPaused {
        paused = true;
        emit Pause();
    }

    /**
    * @dev called by the owner to unpause, returns to normal state
    */
    function unpause() public onlyOwner whenPaused {
        paused = false;
        emit Unpause();
    }

    //freezable
    event Frozen(address target);
    event Unfrozen(address target);

    mapping(address => bool) internal freezes;

    modifier whenNotFrozen() {
        require(!freezes[msg.sender], "Sender account is locked.");
        _;
    }

    function freeze(address _target) public onlyOwner {
        freezes[_target] = true;
        emit Frozen(_target);
    }

    function unfreeze(address _target) public onlyOwner {
        freezes[_target] = false;
        emit Unfrozen(_target);
    }

    function isFrozen(address _target) public view returns (bool) {
        return freezes[_target];
    }

    function transfer(
        address _to,
        uint256 _value
    )
      public
      whenNotFrozen
      whenNotPaused
      returns (bool)
    {
        releaseLock(msg.sender);
        return super.transfer(_to, _value);
    }

    function transferFrom(
        address _from,
        address _to,
        uint256 _value
    )
      public
      whenNotPaused
      returns (bool)
    {
        require(!freezes[_from], "From account is locked.");
        releaseLock(_from);
        return super.transferFrom(_from, _to, _value);
    }

    //mintable
    event Mint(address indexed to, uint256 amount);

    function mint(
        address _to,
        uint256 _amount
    )
      public
      onlyOwner
      returns (bool)
    {
        super._mint(_to, _amount);
        emit Mint(_to, _amount);
        return true;
    }

    //burnable
    event Burn(address indexed burner, uint256 value);

    function burn(address _who, uint256 _value) public onlyOwner {
        require(_value <= super.balanceOf(_who), "Balance is too small.");

        _burn(_who, _value);
        emit Burn(_who, _value);
    }

    //lockable
    struct LockInfo {
        uint256 releaseTime;
        uint256 balance;
    }
    mapping(address => LockInfo[]) internal lockInfo;

    event Lock(address indexed holder, uint256 value, uint256 releaseTime);
    event Unlock(address indexed holder, uint256 value);

    function balanceOf(address _holder) public view returns (uint256 balance) {
        uint256 lockedBalance = 0;
        for(uint256 i = 0; i < lockInfo[_holder].length ; i++ ) {
            lockedBalance = lockedBalance.add(lockInfo[_holder][i].balance);
        }
        return super.balanceOf(_holder).add(lockedBalance);
    }

    function releaseLock(address _holder) internal {

        for(uint256 i = 0; i < lockInfo[_holder].length ; i++ ) {
            if (lockInfo[_holder][i].releaseTime <= now) {
                _balances[_holder] = _balances[_holder].add(lockInfo[_holder][i].balance);
                emit Unlock(_holder, lockInfo[_holder][i].balance);
                lockInfo[_holder][i].balance = 0;

                if (i != lockInfo[_holder].length - 1) {
                    lockInfo[_holder][i] = lockInfo[_holder][lockInfo[_holder].length - 1];
                    i--;
                }
                lockInfo[_holder].length--;

            }
        }
    }
    function lockCount(address _holder) public view returns (uint256) {
        return lockInfo[_holder].length;
    }
    function lockState(address _holder, uint256 _idx) public view returns (uint256, uint256) {
        return (lockInfo[_holder][_idx].releaseTime, lockInfo[_holder][_idx].balance);
    }

    function lock(address _holder, uint256 _amount, uint256 _releaseTime) public onlyOwner {
        require(super.balanceOf(_holder) >= _amount, "Balance is too small.");
        _balances[_holder] = _balances[_holder].sub(_amount);
        lockInfo[_holder].push(
            LockInfo(_releaseTime, _amount)
        );
        emit Lock(_holder, _amount, _releaseTime);
    }

    function lockAfter(address _holder, uint256 _amount, uint256 _afterTime) public onlyOwner {
        require(super.balanceOf(_holder) >= _amount, "Balance is too small.");
        _balances[_holder] = _balances[_holder].sub(_amount);
        lockInfo[_holder].push(
            LockInfo(now + _afterTime, _amount)
        );
        emit Lock(_holder, _amount, now + _afterTime);
    }

    function unlock(address _holder, uint256 i) public onlyOwner {
        require(i < lockInfo[_holder].length, "No lock information.");

        _balances[_holder] = _balances[_holder].add(lockInfo[_holder][i].balance);
        emit Unlock(_holder, lockInfo[_holder][i].balance);
        lockInfo[_holder][i].balance = 0;

        if (i != lockInfo[_holder].length - 1) {
            lockInfo[_holder][i] = lockInfo[_holder][lockInfo[_holder].length - 1];
        }
        lockInfo[_holder].length--;
    }

    function transferWithLock(address _to, uint256 _value, uint256 _releaseTime) public onlyOwner returns (bool) {
        require(_to != address(0), "wrong address");
        require(_value <= super.balanceOf(owner), "Not enough balance");

        _balances[owner] = _balances[owner].sub(_value);
        lockInfo[_to].push(
            LockInfo(_releaseTime, _value)
        );
        emit Transfer(owner, _to, _value);
        emit Lock(_to, _value, _releaseTime);

        return true;
    }

    function transferWithLockAfter(address _to, uint256 _value, uint256 _afterTime) public onlyOwner returns (bool) {
        require(_to != address(0), "wrong address");
        require(_value <= super.balanceOf(owner), "Not enough balance");

        _balances[owner] = _balances[owner].sub(_value);
        lockInfo[_to].push(
            LockInfo(now + _afterTime, _value)
        );
        emit Transfer(owner, _to, _value);
        emit Lock(_to, _value, now + _afterTime);

        return true;
    }

    function currentTime() public view returns (uint256) {
        return now;
    }

    function afterTime(uint256 _value) public view returns (uint256) {
        return now + _value;
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[{"name":"_value","type":"uint256"}],"name":"afterTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"initialSupply","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":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"mint","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_target","type":"address"}],"name":"unfreeze","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_holder","type":"address"},{"name":"_idx","type":"uint256"}],"name":"lockState","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_holder","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_holder","type":"address"},{"name":"i","type":"uint256"}],"name":"unlock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_holder","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_afterTime","type":"uint256"}],"name":"lockAfter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_target","type":"address"}],"name":"freeze","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_afterTime","type":"uint256"}],"name":"transferWithLockAfter","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_who","type":"address"},{"name":"_value","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"currentTime","outputs":[{"name":"","type":"uint256"}],"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"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_releaseTime","type":"uint256"}],"name":"transferWithLock","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_holder","type":"address"}],"name":"lockCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_holder","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_releaseTime","type":"uint256"}],"name":"lock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_target","type":"address"}],"name":"isFrozen","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"target","type":"address"}],"name":"Frozen","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"target","type":"address"}],"name":"Unfrozen","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"burner","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"holder","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"releaseTime","type":"uint256"}],"name":"Lock","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"holder","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Unlock","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"}]

60806040526000600360146101000a81548160ff0219169083151502179055503480156200002c57600080fd5b506200005a33601260ff16600a0a637735940002620000a16401000000000262003d6c176401000000009004565b33600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000238565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515620000de57600080fd5b6200010381600254620002166401000000000262003d4b179091906401000000009004565b6002819055506200016a816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620002166401000000000262003d4b179091906401000000009004565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008082840190508381101515156200022e57600080fd5b8091505092915050565b61445380620002486000396000f3fe608060405234801561001057600080fd5b506004361061020d576000357c0100000000000000000000000000000000000000000000000000000000900480638456cb591161012c578063a9059cbb116100bf578063df0345861161008e578063df03458614610a7b578063e2ab691d14610ad3578063e583983614610b2b578063f2fde38b14610b875761020d565b8063a9059cbb1461090f578063d18e81b314610975578063dd62ed3e14610993578063de6baccb14610a0b5761020d565b8063927a4a7b116100fb578063927a4a7b1461076857806395d89b41146107d85780639dc29fac1461085b578063a457c2d7146108a95761020d565b80638456cb59146106785780638a57af6b146106825780638d1fdf2f146106da5780638da5cb5b1461071e5761020d565b80633f4ba83a116101a45780635c975abb116101735780635c975abb146105a657806370a08231146105c8578063715018a6146106205780637eee288d1461062a5761020d565b80633f4ba83a1461048957806340c10f191461049357806345c8b1a6146104f957806346cf1bb51461053d5761020d565b806323b872dd116101e057806323b872dd1461035b578063313ce567146103e1578063378dc3dc1461040557806339509351146104235761020d565b806304859ceb1461021257806306fdde0314610254578063095ea7b3146102d757806318160ddd1461033d575b600080fd5b61023e6004803603602081101561022857600080fd5b8101908080359060200190929190505050610bcb565b6040518082815260200191505060405180910390f35b61025c610bd7565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561029c578082015181840152602081019050610281565b50505050905090810190601f1680156102c95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610323600480360360408110156102ed57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c10565b604051808215151515815260200191505060405180910390f35b610345610d3d565b6040518082815260200191505060405180910390f35b6103c76004803603606081101561037157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d47565b604051808215151515815260200191505060405180910390f35b6103e9610ead565b604051808260ff1660ff16815260200191505060405180910390f35b61040d610eb2565b6040518082815260200191505060405180910390f35b61046f6004803603604081101561043957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ec3565b604051808215151515815260200191505060405180910390f35b6104916110fa565b005b6104df600480360360408110156104a957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061128c565b604051808215151515815260200191505060405180910390f35b61053b6004803603602081101561050f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113b5565b005b6105896004803603604081101561055357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611538565b604051808381526020018281526020019250505060405180910390f35b6105ae611602565b604051808215151515815260200191505060405180910390f35b61060a600480360360208110156105de57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611615565b6040518082815260200191505060405180910390f35b61062861170f565b005b6106766004803603604081101561064057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061187d565b005b610680611daf565b005b6106d86004803603606081101561069857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050611f42565b005b61071c600480360360208110156106f057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061220f565b005b610726612392565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107be6004803603606081101561077e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291905050506123b8565b604051808215151515815260200191505060405180910390f35b6107e061281f565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610820578082015181840152602081019050610805565b50505050905090810190601f16801561084d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6108a76004803603604081101561087157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612858565b005b6108f5600480360360408110156108bf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506129f9565b604051808215151515815260200191505060405180910390f35b61095b6004803603604081101561092557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612c30565b604051808215151515815260200191505060405180910390f35b61097d612d94565b6040518082815260200191505060405180910390f35b6109f5600480360360408110156109a957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d9c565b6040518082815260200191505060405180910390f35b610a6160048036036060811015610a2157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050612e23565b604051808215151515815260200191505060405180910390f35b610abd60048036036020811015610a9157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613286565b6040518082815260200191505060405180910390f35b610b2960048036036060811015610ae957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291905050506132d2565b005b610b6d60048036036020811015610b4157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061359b565b604051808215151515815260200191505060405180910390f35b610bc960048036036020811015610b9d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506135f1565b005b60008142019050919050565b6040805190810160405280600a81526020017f4d696c6c694d657465720000000000000000000000000000000000000000000081525081565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610c4d57600080fd5b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600254905090565b6000600360149054906101000a900460ff16151515610dce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f506175736564206279206f776e6572000000000000000000000000000000000081525060200191505060405180910390fd5b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610e90576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f46726f6d206163636f756e74206973206c6f636b65642e00000000000000000081525060200191505060405180910390fd5b610e99846136c2565b610ea4848484613b43565b90509392505050565b601281565b601260ff16600a0a63773594000281565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610f0057600080fd5b610f8f82600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d4b90919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156111bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600360149054906101000a900460ff161515611243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420706175736564206e6f7700000000000000000000000000000000000081525060200191505060405180910390fd5b6000600360146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611353576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b61135d8383613d6c565b8273ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885836040518082815260200191505060405180910390a26001905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561147a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f4feb53e305297ab8fb8f3420c95ea04737addc254a7270d8fc4605d2b9c61dba81604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b600080600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110151561158757fe5b906000526020600020906002020160000154600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020848154811015156115e557fe5b906000526020600020906002020160010154915091509250929050565b600360149054906101000a900460ff1681565b6000806000905060008090505b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490508110156116eb576116dc600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811015156116bb57fe5b90600052602060002090600202016001015483613d4b90919063ffffffff16565b91508080600101915050611622565b50611707816116f985613ec0565b613d4b90919063ffffffff16565b915050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a26000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611942576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050811015156119fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4e6f206c6f636b20696e666f726d6174696f6e2e00000000000000000000000081525060200191505060405180910390fd5b611aa9600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481101515611a4a57fe5b9060005260206000209060020201600101546000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d4b90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167f6381d9813cabeb57471b5a7e05078e64845ccdb563146a6911d536f24ce960f1600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002083815481101515611b6f57fe5b9060005260206000209060020201600101546040518082815260200191505060405180910390a26000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481101515611be457fe5b9060005260206000209060020201600101819055506001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490500381141515611d5857600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905003815481101515611cd857fe5b9060005260206000209060020201600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481101515611d3257fe5b906000526020600020906002020160008201548160000155600182015481600101559050505b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480919060019003611daa91906143c6565b505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e74576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600360149054906101000a900460ff16151515611ef9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f506175736564206279206f776e6572000000000000000000000000000000000081525060200191505060405180910390fd5b6001600360146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612007576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8161201184613ec0565b10151515612087576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f42616c616e636520697320746f6f20736d616c6c2e000000000000000000000081525060200191505060405180910390fd5b6120d8826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613f0890919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060408051908101604052808342018152602001848152509080600181540180825580915050906001820390600052602060002090600202016000909192909190915060008201518160000155602082015181600101555050508273ffffffffffffffffffffffffffffffffffffffff167f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b83834201604051808381526020018281526020019250505060405180910390a2505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156122d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f8a5c4736a33c7b7f29a2c34ea9ff9608afc5718d56f6fd6dcbd2d3711a1a491381604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561247f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151515612524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f77726f6e6720616464726573730000000000000000000000000000000000000081525060200191505060405180910390fd5b61254f600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613ec0565b83111515156125c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4e6f7420656e6f7567682062616c616e6365000000000000000000000000000081525060200191505060405180910390fd5b61263983600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613f0890919063ffffffff16565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060408051908101604052808442018152602001858152509080600181540180825580915050906001820390600052602060002090600202016000909192909190915060008201518160000155602082015181600101555050508373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff167f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b84844201604051808381526020018281526020019250505060405180910390a2600190509392505050565b6040805190810160405280600281526020017f4d4d00000000000000000000000000000000000000000000000000000000000081525081565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561291d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b61292682613ec0565b811115151561299d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f42616c616e636520697320746f6f20736d616c6c2e000000000000000000000081525060200191505060405180910390fd5b6129a78282613f2a565b8173ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5826040518082815260200191505060405180910390a25050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515612a3657600080fd5b612ac582600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613f0890919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515612cf4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f53656e646572206163636f756e74206973206c6f636b65642e0000000000000081525060200191505060405180910390fd5b600360149054906101000a900460ff16151515612d79576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f506175736564206279206f776e6572000000000000000000000000000000000081525060200191505060405180910390fd5b612d82336136c2565b612d8c838361407e565b905092915050565b600042905090565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612eea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151515612f8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f77726f6e6720616464726573730000000000000000000000000000000000000081525060200191505060405180910390fd5b612fba600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613ec0565b8311151515613031576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4e6f7420656e6f7567682062616c616e6365000000000000000000000000000081525060200191505060405180910390fd5b6130a483600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613f0890919063ffffffff16565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040805190810160405280848152602001858152509080600181540180825580915050906001820390600052602060002090600202016000909192909190915060008201518160000155602082015181600101555050508373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff167f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b8484604051808381526020018281526020019250505060405180910390a2600190509392505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613397576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b816133a184613ec0565b10151515613417576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f42616c616e636520697320746f6f20736d616c6c2e000000000000000000000081525060200191505060405180910390fd5b613468826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613f0890919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040805190810160405280838152602001848152509080600181540180825580915050906001820390600052602060002090600202016000909192909190915060008201518160000155602082015181600101555050508273ffffffffffffffffffffffffffffffffffffffff167f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b8383604051808381526020018281526020019250505060405180910390a2505050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156136b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6136bf81614095565b50565b60008090505b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050811015613b3f5742600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110151561375f57fe5b906000526020600020906002020160000154111515613b3257613826600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811015156137c757fe5b9060005260206000209060020201600101546000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d4b90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167f6381d9813cabeb57471b5a7e05078e64845ccdb563146a6911d536f24ce960f1600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838154811015156138ec57fe5b9060005260206000209060020201600101546040518082815260200191505060405180910390a26000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110151561396157fe5b9060005260206000209060020201600101819055506001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490500381141515613ade57600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905003815481101515613a5557fe5b9060005260206000209060020201600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481101515613aaf57fe5b906000526020600020906002020160008201548160000155600182015481600101559050508080600190039150505b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480919060019003613b3091906143c6565b505b80806001019150506136c8565b5050565b6000613bd482600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613f0890919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613c5f8484846141fa565b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600190509392505050565b6000808284019050838110151515613d6257600080fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515613da857600080fd5b613dbd81600254613d4b90919063ffffffff16565b600281905550613e14816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d4b90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000828211151515613f1957600080fd5b600082840390508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515613f6657600080fd5b613f7b81600254613f0890919063ffffffff16565b600281905550613fd2816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613f0890919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600061408b3384846141fa565b6001905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561413a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f416c7265616479206f776e65720000000000000000000000000000000000000081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561423657600080fd5b614287816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613f0890919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061431a816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d4b90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b8154818355818111156143f3576002028160020283600052602060002091820191016143f291906143f8565b5b505050565b61442491905b80821115614420576000808201600090556001820160009055506002016143fe565b5090565b9056fea165627a7a723058208677c4fdc6d943c68d86b4b7344e6e212569bb1e6d908c160ed3457e30a6e35b0029

Deployed ByteCode Sourcemap

10721:8695:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10721:8695:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19310:103;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19310:103:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10757:42;;;:::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;10757:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5704:244;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5704:244:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3863:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14321:317;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14321:317:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10915:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10990:78;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7235:323;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7235:323:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13316:105;;;:::i;:::-;;14717:227;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14717:227:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13823:128;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13823:128:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;16679:185;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16679:185:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;12602:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15541:335;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15541:335:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11780:124;;;:::i;:::-;;17659:516;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17659:516:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13120:103;;;:::i;:::-;;17260:391;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17260:391:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13692:123;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13692:123:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;11213:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;18696:516;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18696:516:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10839:36;;;:::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;10839:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15026:211;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15026:211:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8078:333;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8078:333:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14071:242;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14071:242:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;19220:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4615:131;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4615:131:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18183:505;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18183:505:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;16557:116;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16557:116:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16872:380;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16872:380:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13959:104;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13959:104:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12074:111;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12074:111:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;19310:103;19366:7;19399:6;19393:3;:12;19386:19;;19310:103;;;:::o;10757:42::-;;;;;;;;;;;;;;;;;;;;:::o;5704:244::-;5769:4;5813:1;5794:21;;:7;:21;;;;5786:30;;;;;;;;5861:5;5829:8;:20;5838:10;5829:20;;;;;;;;;;;;;;;:29;5850:7;5829:29;;;;;;;;;;;;;;;:37;;;;5903:7;5882:36;;5891:10;5882:36;;;5912:5;5882:36;;;;;;;;;;;;;;;;;;5936:4;5929:11;;5704:244;;;;:::o;3863:91::-;3907:7;3934:12;;3927:19;;3863:91;:::o;14321:317::-;14472:4;12790:6;;;;;;;;;;;12789:7;12781:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14503:7;:14;14511:5;14503:14;;;;;;;;;;;;;;;;;;;;;;;;;14502:15;14494:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14556:18;14568:5;14556:11;:18::i;:::-;14592:38;14611:5;14618:3;14623:6;14592:18;:38::i;:::-;14585:45;;14321:317;;;;;:::o;10915:35::-;10948:2;10915:35;:::o;10990:78::-;10948:2;11050:17;;11044:2;:23;11030:10;:38;10990:78;:::o;7235:323::-;7315:4;7359:1;7340:21;;:7;:21;;;;7332:30;;;;;;;;7407:45;7441:10;7407:8;:20;7416:10;7407:20;;;;;;;;;;;;;;;:29;7428:7;7407:29;;;;;;;;;;;;;;;;:33;;:45;;;;:::i;:::-;7375:8;:20;7384:10;7375:20;;;;;;;;;;;;;;;:29;7396:7;7375:29;;;;;;;;;;;;;;;:77;;;;7489:7;7468:60;;7477:10;7468:60;;;7498:8;:20;7507:10;7498:20;;;;;;;;;;;;;;;:29;7519:7;7498:29;;;;;;;;;;;;;;;;7468:60;;;;;;;;;;;;;;;;;;7546:4;7539:11;;7235:323;;;;:::o;13316:105::-;11467:5;;;;;;;;;;;11453:19;;:10;:19;;;11445:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12985:6;;;;;;;;;;;12977:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13383:5;13374:6;;:14;;;;;;;;;;;;;;;;;;13404:9;;;;;;;;;;13316:105::o;14717:227::-;14833:4;11467:5;;;;;;;;;;;11453:19;;:10;:19;;;11445:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14855:25;14867:3;14872:7;14855:11;:25::i;:::-;14901:3;14896:18;;;14906:7;14896:18;;;;;;;;;;;;;;;;;;14932:4;14925:11;;14717:227;;;;:::o;13823:128::-;11467:5;;;;;;;;;;;11453:19;;:10;:19;;;11445:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13905:5;13886:7;:16;13894:7;13886:16;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;13926:17;13935:7;13926:17;;;;;;;;;;;;;;;;;;;;;;13823:128;:::o;16679:185::-;16750:7;16759;16787:8;:17;16796:7;16787:17;;;;;;;;;;;;;;;16805:4;16787:23;;;;;;;;;;;;;;;;;;;;:35;;;16824:8;:17;16833:7;16824:17;;;;;;;;;;;;;;;16842:4;16824:23;;;;;;;;;;;;;;;;;;;;:31;;;16779:77;;;;16679:185;;;;;:::o;12602:26::-;;;;;;;;;;;;;:::o;15541:335::-;15598:15;15626:21;15650:1;15626:25;;15666:9;15678:1;15666:13;;15662:146;15685:8;:17;15694:7;15685:17;;;;;;;;;;;;;;;:24;;;;15681:1;:28;15662:146;;;15749:47;15767:8;:17;15776:7;15767:17;;;;;;;;;;;;;;;15785:1;15767:20;;;;;;;;;;;;;;;;;;;;:28;;;15749:13;:17;;:47;;;;:::i;:::-;15733:63;;15712:3;;;;;;;15662:146;;;;15825:43;15854:13;15825:24;15841:7;15825:15;:24::i;:::-;:28;;:43;;;;:::i;:::-;15818:50;;;15541:335;;;:::o;11780:124::-;11467:5;;;;;;;;;;;11453:19;;:10;:19;;;11445:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11861:5;;;;;;;;;;;11842:25;;;;;;;;;;;;11894:1;11878:5;;:18;;;;;;;;;;;;;;;;;;11780:124::o;17659:516::-;11467:5;;;;;;;;;;;11453:19;;:10;:19;;;11445:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17743:8;:17;17752:7;17743:17;;;;;;;;;;;;;;;:24;;;;17739:1;:28;17731:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17826:52;17849:8;:17;17858:7;17849:17;;;;;;;;;;;;;;;17867:1;17849:20;;;;;;;;;;;;;;;;;;;;:28;;;17826:9;:18;17836:7;17826:18;;;;;;;;;;;;;;;;:22;;:52;;;;:::i;:::-;17805:9;:18;17815:7;17805:18;;;;;;;;;;;;;;;:73;;;;17901:7;17894:45;;;17910:8;:17;17919:7;17910:17;;;;;;;;;;;;;;;17928:1;17910:20;;;;;;;;;;;;;;;;;;;;:28;;;17894:45;;;;;;;;;;;;;;;;;;17981:1;17950:8;:17;17959:7;17950:17;;;;;;;;;;;;;;;17968:1;17950:20;;;;;;;;;;;;;;;;;;;;:28;;:32;;;;18031:1;18004:8;:17;18013:7;18004:17;;;;;;;;;;;;;;;:24;;;;:28;17999:1;:33;;17995:136;;;18072:8;:17;18081:7;18072:17;;;;;;;;;;;;;;;18117:1;18090:8;:17;18099:7;18090:17;;;;;;;;;;;;;;;:24;;;;:28;18072:47;;;;;;;;;;;;;;;;;;;;18049:8;:17;18058:7;18049:17;;;;;;;;;;;;;;;18067:1;18049:20;;;;;;;;;;;;;;;;;;;;:70;;;;;;;;;;;;;;;;;;;17995:136;18141:8;:17;18150:7;18141:17;;;;;;;;;;;;;;;:26;;;;;;;;;;;;:::i;:::-;;17659:516;;:::o;13120:103::-;11467:5;;;;;;;;;;;11453:19;;:10;:19;;;11445:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12790:6;;;;;;;;;;;12789:7;12781:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13188:4;13179:6;;:13;;;;;;;;;;;;;;;;;;13208:7;;;;;;;;;;13120:103::o;17260:391::-;11467:5;;;;;;;;;;;11453:19;;:10;:19;;;11445:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17397:7;17369:24;17385:7;17369:15;:24::i;:::-;:35;;17361:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17462:31;17485:7;17462:9;:18;17472:7;17462:18;;;;;;;;;;;;;;;;:22;;:31;;;;:::i;:::-;17441:9;:18;17451:7;17441:18;;;;;;;;;;;;;;;:52;;;;17504:8;:17;17513:7;17504:17;;;;;;;;;;;;;;;17541:35;;;;;;;;;17556:10;17550:3;:16;17541:35;;;;17568:7;17541:35;;;17504:83;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;17504:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17608:7;17603:40;;;17617:7;17632:10;17626:3;:16;17603:40;;;;;;;;;;;;;;;;;;;;;;;;17260:391;;;:::o;13692:123::-;11467:5;;;;;;;;;;;11453:19;;:10;:19;;;11445:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13772:4;13753:7;:16;13761:7;13753:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;13792:15;13799:7;13792:15;;;;;;;;;;;;;;;;;;;;;;13692:123;:::o;11213:20::-;;;;;;;;;;;;;:::o;18696:516::-;18802:4;11467:5;;;;;;;;;;;11453:19;;:10;:19;;;11445:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18842:1;18827:17;;:3;:17;;;;18819:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18891:22;18907:5;;;;;;;;;;;18891:15;:22::i;:::-;18881:6;:32;;18873:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18968:28;18989:6;18968:9;:16;18978:5;;;;;;;;;;;18968:16;;;;;;;;;;;;;;;;:20;;:28;;;;:::i;:::-;18949:9;:16;18959:5;;;;;;;;;;;18949:16;;;;;;;;;;;;;;;:47;;;;19007:8;:13;19016:3;19007:13;;;;;;;;;;;;;;;19040:34;;;;;;;;;19055:10;19049:3;:16;19040:34;;;;19067:6;19040:34;;;19007:78;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;19007:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19117:3;19101:28;;19110:5;;;;;;;;;;;19101:28;;;19122:6;19101:28;;;;;;;;;;;;;;;;;;19150:3;19145:35;;;19155:6;19169:10;19163:3;:16;19145:35;;;;;;;;;;;;;;;;;;;;;;;;19200:4;19193:11;;18696:516;;;;;:::o;10839:36::-;;;;;;;;;;;;;;;;;;;;:::o;15026:211::-;11467:5;;;;;;;;;;;11453:19;;:10;:19;;;11445:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15116:21;15132:4;15116:15;:21::i;:::-;15106:6;:31;;15098:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15176:19;15182:4;15188:6;15176:5;:19::i;:::-;15216:4;15211:18;;;15222:6;15211:18;;;;;;;;;;;;;;;;;;15026:211;;:::o;8078:333::-;8163:4;8207:1;8188:21;;:7;:21;;;;8180:30;;;;;;;;8255:50;8289:15;8255:8;:20;8264:10;8255:20;;;;;;;;;;;;;;;:29;8276:7;8255:29;;;;;;;;;;;;;;;;:33;;:50;;;;:::i;:::-;8223:8;:20;8232:10;8223:20;;;;;;;;;;;;;;;:29;8244:7;8223:29;;;;;;;;;;;;;;;:82;;;;8342:7;8321:60;;8330:10;8321:60;;;8351:8;:20;8360:10;8351:20;;;;;;;;;;;;;;;:29;8372:7;8351:29;;;;;;;;;;;;;;;;8321:60;;;;;;;;;;;;;;;;;;8399:4;8392:11;;8078:333;;;;:::o;14071:242::-;14215:4;13615:7;:19;13623:10;13615:19;;;;;;;;;;;;;;;;;;;;;;;;;13614:20;13606:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12790:6;;;;;;;;;;;12789:7;12781:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14237:23;14249:10;14237:11;:23::i;:::-;14278:27;14293:3;14298:6;14278:14;:27::i;:::-;14271:34;;14071:242;;;;:::o;19220:82::-;19264:7;19291:3;19284:10;;19220:82;:::o;4615:131::-;4687:7;4714:8;:15;4723:5;4714:15;;;;;;;;;;;;;;;:24;4730:7;4714:24;;;;;;;;;;;;;;;;4707:31;;4615:131;;;;:::o;18183:505::-;18286:4;11467:5;;;;;;;;;;;11453:19;;:10;:19;;;11445:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18326:1;18311:17;;:3;:17;;;;18303:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18375:22;18391:5;;;;;;;;;;;18375:15;:22::i;:::-;18365:6;:32;;18357:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18452:28;18473:6;18452:9;:16;18462:5;;;;;;;;;;;18452:16;;;;;;;;;;;;;;;;:20;;:28;;;;:::i;:::-;18433:9;:16;18443:5;;;;;;;;;;;18433:16;;;;;;;;;;;;;;;:47;;;;18491:8;:13;18500:3;18491:13;;;;;;;;;;;;;;;18524:30;;;;;;;;;18533:12;18524:30;;;;18547:6;18524:30;;;18491:74;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;18491:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18597:3;18581:28;;18590:5;;;;;;;;;;;18581:28;;;18602:6;18581:28;;;;;;;;;;;;;;;;;;18630:3;18625:31;;;18635:6;18643:12;18625:31;;;;;;;;;;;;;;;;;;;;;;;;18676:4;18669:11;;18183:505;;;;;:::o;16557:116::-;16614:7;16641:8;:17;16650:7;16641:17;;;;;;;;;;;;;;;:24;;;;16634:31;;16557:116;;;:::o;16872:380::-;11467:5;;;;;;;;;;;11453:19;;:10;:19;;;11445:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17006:7;16978:24;16994:7;16978:15;:24::i;:::-;:35;;16970:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17071:31;17094:7;17071:9;:18;17081:7;17071:18;;;;;;;;;;;;;;;;:22;;:31;;;;:::i;:::-;17050:9;:18;17060:7;17050:18;;;;;;;;;;;;;;;:52;;;;17113:8;:17;17122:7;17113:17;;;;;;;;;;;;;;;17150:31;;;;;;;;;17159:12;17150:31;;;;17173:7;17150:31;;;17113:79;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;17113:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17213:7;17208:36;;;17222:7;17231:12;17208:36;;;;;;;;;;;;;;;;;;;;;;;;16872:380;;;:::o;13959:104::-;14015:4;14039:7;:16;14047:7;14039:16;;;;;;;;;;;;;;;;;;;;;;;;;14032:23;;13959:104;;;:::o;12074:111::-;11467:5;;;;;;;;;;;11453:19;;:10;:19;;;11445:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12148:29;12167:9;12148:18;:29::i;:::-;12074:111;:::o;15884:667::-;15948:9;15960:1;15948:13;;15944:600;15967:8;:17;15976:7;15967:17;;;;;;;;;;;;;;;:24;;;;15963:1;:28;15944:600;;;16055:3;16019:8;:17;16028:7;16019:17;;;;;;;;;;;;;;;16037:1;16019:20;;;;;;;;;;;;;;;;;;;;:32;;;:39;;16015:518;;;16100:52;16123:8;:17;16132:7;16123:17;;;;;;;;;;;;;;;16141:1;16123:20;;;;;;;;;;;;;;;;;;;;:28;;;16100:9;:18;16110:7;16100:18;;;;;;;;;;;;;;;;:22;;:52;;;;:::i;:::-;16079:9;:18;16089:7;16079:18;;;;;;;;;;;;;;;:73;;;;16183:7;16176:45;;;16192:8;:17;16201:7;16192:17;;;;;;;;;;;;;;;16210:1;16192:20;;;;;;;;;;;;;;;;;;;;:28;;;16176:45;;;;;;;;;;;;;;;;;;16271:1;16240:8;:17;16249:7;16240:17;;;;;;;;;;;;;;;16258:1;16240:20;;;;;;;;;;;;;;;;;;;;:28;;:32;;;;16329:1;16302:8;:17;16311:7;16302:17;;;;;;;;;;;;;;;:24;;;;:28;16297:1;:33;;16293:178;;;16378:8;:17;16387:7;16378:17;;;;;;;;;;;;;;;16423:1;16396:8;:17;16405:7;16396:17;;;;;;;;;;;;;;;:24;;;;:28;16378:47;;;;;;;;;;;;;;;;;;;;16355:8;:17;16364:7;16355:17;;;;;;;;;;;;;;;16373:1;16355:20;;;;;;;;;;;;;;;;;;;;:70;;;;;;;;;;;;;;;;;;;16448:3;;;;;;;;16293:178;16489:8;:17;16498:7;16489:17;;;;;;;;;;;;;;;:26;;;;;;;;;;;;:::i;:::-;;16015:518;15994:3;;;;;;;15944:600;;;;15884:667;:::o;6421:299::-;6500:4;6546:37;6577:5;6546:8;:14;6555:4;6546:14;;;;;;;;;;;;;;;:26;6561:10;6546:26;;;;;;;;;;;;;;;;:30;;:37;;;;:::i;:::-;6517:8;:14;6526:4;6517:14;;;;;;;;;;;;;;;:26;6532:10;6517:26;;;;;;;;;;;;;;;:66;;;;6594:26;6604:4;6610:2;6614:5;6594:9;:26::i;:::-;6651:10;6636:54;;6645:4;6636:54;;;6663:8;:14;6672:4;6663:14;;;;;;;;;;;;;;;:26;6678:10;6663:26;;;;;;;;;;;;;;;;6636:54;;;;;;;;;;;;;;;;;;6708:4;6701:11;;6421:299;;;;;:::o;2467:150::-;2525:7;2545:9;2561:1;2557;:5;2545:17;;2586:1;2581;:6;;2573:15;;;;;;;;2608:1;2601:8;;;2467:150;;;;:::o;9247:269::-;9341:1;9322:21;;:7;:21;;;;9314:30;;;;;;;;9372:23;9389:5;9372:12;;:16;;:23;;;;:::i;:::-;9357:12;:38;;;;9427:29;9450:5;9427:9;:18;9437:7;9427:18;;;;;;;;;;;;;;;;:22;;:29;;;;:::i;:::-;9406:9;:18;9416:7;9406:18;;;;;;;;;;;;;;;:50;;;;9493:7;9472:36;;9489:1;9472:36;;;9502:5;9472:36;;;;;;;;;;;;;;;;;;9247:269;;:::o;4170:106::-;4225:7;4252:9;:16;4262:5;4252:16;;;;;;;;;;;;;;;;4245:23;;4170:106;;;:::o;2231:150::-;2289:7;2322:1;2317;:6;;2309:15;;;;;;;;2335:9;2351:1;2347;:5;2335:17;;2372:1;2365:8;;;2231:150;;;;:::o;9750:269::-;9844:1;9825:21;;:7;:21;;;;9817:30;;;;;;;;9875:23;9892:5;9875:12;;:16;;:23;;;;:::i;:::-;9860:12;:38;;;;9930:29;9953:5;9930:9;:18;9940:7;9930:18;;;;;;;;;;;;;;;;:22;;:29;;;;:::i;:::-;9909:9;:18;9919:7;9909:18;;;;;;;;;;;;;;;:50;;;;10001:1;9975:36;;9984:7;9975:36;;;10005:5;9975:36;;;;;;;;;;;;;;;;;;9750:269;;:::o;4917:140::-;4978:4;4995:32;5005:10;5017:2;5021:5;4995:9;:32::i;:::-;5045:4;5038:11;;4917:140;;;;:::o;12328:206::-;12424:1;12403:23;;:9;:23;;;;12395:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12488:9;12460:38;;12481:5;;;;;;;;;;;12460:38;;;;;;;;;;;;12517:9;12509:5;;:17;;;;;;;;;;;;;;;;;;12328:206;:::o;8633:262::-;8735:1;8721:16;;:2;:16;;;;8713:25;;;;;;;;8769:26;8789:5;8769:9;:15;8779:4;8769:15;;;;;;;;;;;;;;;;:19;;:26;;;;:::i;:::-;8751:9;:15;8761:4;8751:15;;;;;;;;;;;;;;;:44;;;;8822:24;8840:5;8822:9;:13;8832:2;8822:13;;;;;;;;;;;;;;;;:17;;:24;;;;:::i;:::-;8806:9;:13;8816:2;8806:13;;;;;;;;;;;;;;;:40;;;;8877:2;8862:25;;8871:4;8862:25;;;8881:5;8862:25;;;;;;;;;;;;;;;;;;8633:262;;;:::o;10721:8695::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

bzzr://8677c4fdc6d943c68d86b4b7344e6e212569bb1e6d908c160ed3457e30a6e35b
Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.

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.