ETH Price: $3,103.12 (-0.78%)
Gas: 4 Gwei

Contract

0x7Be1A4D7ea5b1a9e74762F388a06912c3eA0935B
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Pause101797102020-06-01 11:26:491447 days ago1591010809IN
MESG: ATD Contract
0 ETH0.0013550730
Distribute100628132020-05-14 7:01:081466 days ago1589439668IN
MESG: ATD Contract
0 ETH0.0050031334
Distribute100563562020-05-13 7:02:191467 days ago1589353339IN
MESG: ATD Contract
0 ETH0.0053268636.2
Distribute100499132020-05-12 7:01:051468 days ago1589266865IN
MESG: ATD Contract
0 ETH0.0043262329.4
Distribute100434752020-05-11 7:01:131469 days ago1589180473IN
MESG: ATD Contract
0 ETH0.001854112.6
Distribute100369902020-05-10 7:00:571470 days ago1589094057IN
MESG: ATD Contract
0 ETH0.0027664318.8
Distribute100305832020-05-09 7:03:111471 days ago1589007791IN
MESG: ATD Contract
0 ETH0.0022425815.24
Distribute100240652020-05-08 7:03:221472 days ago1588921402IN
MESG: ATD Contract
0 ETH0.002442716.6
Distribute100176492020-05-07 7:03:351473 days ago1588835015IN
MESG: ATD Contract
0 ETH0.0017069511.6
Distribute100112262020-05-06 7:01:521474 days ago1588748512IN
MESG: ATD Contract
0 ETH0.0020100813.66
Distribute100047762020-05-05 7:07:351475 days ago1588662455IN
MESG: ATD Contract
0 ETH0.0015951110.84
Distribute100047682020-05-05 7:06:051475 days ago1588662365IN
MESG: ATD Contract
0 ETH0.0015656810.64
Distribute99982412020-05-04 7:03:541476 days ago1588575834IN
MESG: ATD Contract
0 ETH0.001406769.56
Distribute99916802020-05-03 7:01:251477 days ago1588489285IN
MESG: ATD Contract
0 ETH0.001447969.84
Distribute99853002020-05-02 7:00:471478 days ago1588402847IN
MESG: ATD Contract
0 ETH0.00107427.3
Distribute99788672020-05-01 7:00:511479 days ago1588316451IN
MESG: ATD Contract
0 ETH0.001118347.6
Distribute99724922020-04-30 7:00:521480 days ago1588230052IN
MESG: ATD Contract
0 ETH0.0034609923.52
Distribute99659852020-04-29 7:02:531481 days ago1588143773IN
MESG: ATD Contract
0 ETH0.001957113.3
Distribute99594972020-04-28 7:04:081482 days ago1588057448IN
MESG: ATD Contract
0 ETH0.001112467.56
Distribute99530732020-04-27 7:01:261483 days ago1587970886IN
MESG: ATD Contract
0 ETH0.001059487.2
Distribute99466702020-04-26 7:01:071484 days ago1587884467IN
MESG: ATD Contract
0 ETH0.001088917.4
Distribute99402182020-04-25 7:10:571485 days ago1587798657IN
MESG: ATD Contract
0 ETH0.001206638.2
Distribute99337512020-04-24 7:00:531486 days ago1587711653IN
MESG: ATD Contract
0 ETH0.001324359
Distribute99273322020-04-23 7:00:581487 days ago1587625258IN
MESG: ATD Contract
0 ETH0.001088917.4
Distribute99208112020-04-22 7:00:531488 days ago1587538853IN
MESG: ATD Contract
0 ETH0.001350849.18
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ATD

Compiler Version
v0.5.2+commit.1df8f40c

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

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

pragma solidity >=0.5.0 <0.6.0;

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

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

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

    function totalSupply() external view returns (uint256);

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

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

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

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

/**
 * @title ERC20Detailed token
 * @dev The decimals are only for visualization purposes.
 * All the operations are done using the smallest and indivisible token unit,
 * just as on Ethereum all the operations are done in wei.
 */
contract ERC20Detailed is IERC20 {
    string private _name;
    string private _symbol;
    uint8 private _decimals;

    constructor (string memory name, string memory symbol, uint8 decimals) public {
        _name = name;
        _symbol = symbol;
        _decimals = decimals;
    }

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

    /**
     * @return the symbol of the token.
     */
    function symbol() public view returns (string memory) {
        return _symbol;
    }

    /**
     * @return the number of decimals of the token.
     */
    function decimals() public view returns (uint8) {
        return _decimals;
    }
}

contract SignerRole {
    using Roles for Roles.Role;

    event SignerAdded(address indexed account);
    event SignerRemoved(address indexed account);

    Roles.Role private _signers;

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

    modifier onlySigner() {
        require(isSigner(msg.sender));
        _;
    }

    function isSigner(address account) public view returns (bool) {
        return _signers.has(account);
    }

    function addSigner(address account) public onlySigner {
        _addSigner(account);
    }

    function renounceSigner() public {
        _removeSigner(msg.sender);
    }

    function _addSigner(address account) internal {
        _signers.add(account);
        emit SignerAdded(account);
    }

    function _removeSigner(address account) internal {
        _signers.remove(account);
        emit SignerRemoved(account);
    }
}

contract PauserRole {
    using Roles for Roles.Role;

    event PauserAdded(address indexed account);
    event PauserRemoved(address indexed account);

    Roles.Role private _pausers;

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

    modifier onlyPauser() {
        require(isPauser(msg.sender));
        _;
    }

    function isPauser(address account) public view returns (bool) {
        return _pausers.has(account);
    }

    function addPauser(address account) public onlyPauser {
        _addPauser(account);
    }

    function renouncePauser() public {
        _removePauser(msg.sender);
    }

    function _addPauser(address account) internal {
        _pausers.add(account);
        emit PauserAdded(account);
    }

    function _removePauser(address account) internal {
        _pausers.remove(account);
        emit PauserRemoved(account);
    }
}

/**
 * @title Pausable
 * @dev Base contract which allows children to implement an emergency stop mechanism.
 */
contract Pausable is PauserRole {
    event Paused(address account);
    event Unpaused(address account);

    bool private _paused;

    constructor () internal {
        _paused = false;
    }

    /**
     * @return true if the contract is paused, false otherwise.
     */
    function paused() public view returns (bool) {
        return _paused;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is not paused.
     */
    modifier whenNotPaused() {
        require(!_paused);
        _;
    }

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

    /**
     * @dev called by the owner to pause, triggers stopped state
     */
    function pause() public onlyPauser whenNotPaused {
        _paused = true;
        emit Paused(msg.sender);
    }

    /**
     * @dev called by the owner to unpause, returns to normal state
     */
    function unpause() public onlyPauser whenPaused {
        _paused = false;
        emit Unpaused(msg.sender);
    }
}

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

contract DistributionConfigurable is PauserRole {

  /**
    Structures
   */

  struct DistributionConfig {
    address lockedWallet;
    address unlockWallet;
    uint256 ratioDTV;
    uint256 ratioDecimals;
  }

  /**
    State variables
   */

  DistributionConfig[] public distributionConfigs;

  /**
    Events
   */

  event DistributionConfigAdded(
    address indexed lockedWallet,
    address indexed unlockWallet,
    uint256 ratioDTV,
    uint256 ratioDecimals
  );

  event DistributionConfigEdited(
    uint256 indexed index,
    address indexed lockedWallet,
    address indexed unlockWallet,
    uint256 previousRatioDTV,
    uint256 previousRatioDecimals,
    uint256 ratioDTV,
    uint256 ratioDecimals
  );

  event DistributionConfigDeleted(
    uint256 indexed index,
    address indexed lockedWallet,
    address indexed unlockWallet,
    uint256 ratioDTV,
    uint256 ratioDecimals
  );

  /**
    External views
   */

  function distributionConfigsLength()
    external view
    returns (uint256 length)
  {
    return distributionConfigs.length;
  }

  /**
    Public
   */

  function addDistributionConfig(
    address lockedWallet,
    address unlockWallet,
    uint256 ratioDTV,
    uint256 ratioDecimals
  ) public onlyPauser {
    require(lockedWallet != address(0), "lockedWallet address cannot be zero");
    require(unlockWallet != address(0), "unlockWallet address cannot be zero");
    require(lockedWallet != unlockWallet, "lockedWallet and unlockWallet addresses cannot be the same");
    require(ratioDTV > 0, "ratioDTV cannot be zero");
    require(ratioDecimals > 0, "ratioDecimals cannot be zero");
    distributionConfigs.push(DistributionConfig({
      lockedWallet: lockedWallet,
      unlockWallet: unlockWallet,
      ratioDTV: ratioDTV,
      ratioDecimals: ratioDecimals
    }));
    emit DistributionConfigAdded(
      lockedWallet,
      unlockWallet,
      ratioDTV,
      ratioDecimals
    );
  }

  function editDistributionConfig(
    uint256 index,
    uint256 ratioDTV,
    uint256 ratioDecimals
  ) public onlyPauser {
    require(index < distributionConfigs.length, "index is out of bound");
    require(ratioDTV > 0, "ratioDTV cannot be zero");
    require(ratioDecimals > 0, "ratioDecimals cannot be zero");
    emit DistributionConfigEdited(
      index,
      distributionConfigs[index].lockedWallet,
      distributionConfigs[index].unlockWallet,
      distributionConfigs[index].ratioDTV,
      distributionConfigs[index].ratioDecimals,
      ratioDTV,
      ratioDecimals
    );
    distributionConfigs[index].ratioDTV = ratioDTV;
    distributionConfigs[index].ratioDecimals = ratioDecimals;
  }

  function deleteDistributionConfig(
    uint256 index
  ) public onlyPauser {
    require(index < distributionConfigs.length, "index is out of bound");
    emit DistributionConfigDeleted(
      index,
      distributionConfigs[index].lockedWallet,
      distributionConfigs[index].unlockWallet,
      distributionConfigs[index].ratioDTV,
      distributionConfigs[index].ratioDecimals
    );
    // Replace the element to delete and shift elements of the array.
    for (uint i = index; i<distributionConfigs.length-1; i++){
      distributionConfigs[i] = distributionConfigs[i+1];
    }
    distributionConfigs.length--;
  }

}

/**
 * @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(account != address(0));
        require(!has(role, account));

        role.bearer[account] = true;
    }

    /**
     * @dev remove an account's access to this role
     */
    function remove(Role storage role, address account) internal {
        require(account != address(0));
        require(has(role, account));

        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));
        return role.bearer[account];
    }
}

/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable {
    address private _owner;

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

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

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

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

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

    /**
     * @dev Allows the current owner to 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 OwnershipTransferred(_owner, address(0));
        _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));
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

contract ATD is Ownable, Pausable, SignerRole, DistributionConfigurable {
  using SafeMath for uint256;

  /**
    State variables
   */

  ERC20Detailed public token;

  /**
    Constructor
   */

  constructor(
    ERC20Detailed _token
  ) public {
    token = _token;
  }

  /**
    Events
   */

  event Distributed(
    uint256 indexed date,
    address indexed lockedWallet,
    address indexed unlockWallet,
    uint256 ratioDTV,
    uint256 ratioDecimals,
    uint256 dailyTradedVolume,
    uint256 amount
  );

  event TotalDistributed(
    uint256 indexed date,
    uint256 dailyTradedVolume,
    uint256 amount
  );

  /**
    Publics
   */

  function distribute(
    uint256 dailyTradedVolume
  ) public whenNotPaused onlySigner {
    require(
      dailyTradedVolume.div(10 ** uint256(token.decimals())) > 0,
      "dailyTradedVolume is not in token unit"
    );
    uint256 total = 0;
    for (uint256 i = 0; i < distributionConfigs.length; i++) {
      DistributionConfig storage dc = distributionConfigs[i];
      uint256 amount = dailyTradedVolume.mul(dc.ratioDTV).div(10 ** dc.ratioDecimals);
      token.transferFrom(dc.lockedWallet, dc.unlockWallet, amount);
      total = total.add(amount);
      emit Distributed(
        now,
        dc.lockedWallet,
        dc.unlockWallet,
        dc.ratioDTV,
        dc.ratioDecimals,
        dailyTradedVolume,
        amount
      );
    }
    emit TotalDistributed(now, dailyTradedVolume, total);
  }

  function destroy() public onlyOwner {
    selfdestruct(msg.sender);
  }

  function removePauser(address account) public onlyOwner {
    _removePauser(account);
  }

  function removeSigner(address account) public onlyOwner {
    _removeSigner(account);
  }

}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"removeSigner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isPauser","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"removePauser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"distributionConfigs","outputs":[{"name":"lockedWallet","type":"address"},{"name":"unlockWallet","type":"address"},{"name":"ratioDTV","type":"uint256"},{"name":"ratioDecimals","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renouncePauser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"index","type":"uint256"},{"name":"ratioDTV","type":"uint256"},{"name":"ratioDecimals","type":"uint256"}],"name":"editDistributionConfig","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isSigner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addPauser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"destroy","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"index","type":"uint256"}],"name":"deleteDistributionConfig","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"dailyTradedVolume","type":"uint256"}],"name":"distribute","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"distributionConfigsLength","outputs":[{"name":"length","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"lockedWallet","type":"address"},{"name":"unlockWallet","type":"address"},{"name":"ratioDTV","type":"uint256"},{"name":"ratioDecimals","type":"uint256"}],"name":"addDistributionConfig","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceSigner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addSigner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_token","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"date","type":"uint256"},{"indexed":true,"name":"lockedWallet","type":"address"},{"indexed":true,"name":"unlockWallet","type":"address"},{"indexed":false,"name":"ratioDTV","type":"uint256"},{"indexed":false,"name":"ratioDecimals","type":"uint256"},{"indexed":false,"name":"dailyTradedVolume","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Distributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"date","type":"uint256"},{"indexed":false,"name":"dailyTradedVolume","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TotalDistributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"lockedWallet","type":"address"},{"indexed":true,"name":"unlockWallet","type":"address"},{"indexed":false,"name":"ratioDTV","type":"uint256"},{"indexed":false,"name":"ratioDecimals","type":"uint256"}],"name":"DistributionConfigAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"index","type":"uint256"},{"indexed":true,"name":"lockedWallet","type":"address"},{"indexed":true,"name":"unlockWallet","type":"address"},{"indexed":false,"name":"previousRatioDTV","type":"uint256"},{"indexed":false,"name":"previousRatioDecimals","type":"uint256"},{"indexed":false,"name":"ratioDTV","type":"uint256"},{"indexed":false,"name":"ratioDecimals","type":"uint256"}],"name":"DistributionConfigEdited","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"index","type":"uint256"},{"indexed":true,"name":"lockedWallet","type":"address"},{"indexed":true,"name":"unlockWallet","type":"address"},{"indexed":false,"name":"ratioDTV","type":"uint256"},{"indexed":false,"name":"ratioDecimals","type":"uint256"}],"name":"DistributionConfigDeleted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"SignerAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"SignerRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"PauserAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"PauserRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

60806040523480156200001157600080fd5b5060405160208062002411833981018060405260208110156200003357600080fd5b8101908080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36200011a3362000197640100000000026401000000009004565b6000600260006101000a81548160ff0219169083151502179055506200014f3362000201640100000000026401000000009004565b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050620003c3565b620001bb8160016200026b6401000000000262001e0d179091906401000000009004565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b620002258160036200026b6401000000000262001e0d179091906401000000009004565b8073ffffffffffffffffffffffffffffffffffffffff167f47d1c22a25bb3a5d4e481b9b1e6944c2eade3181a0a20b495ed61d35b5323f2460405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515620002a857600080fd5b620002c382826200032e640100000000026401000000009004565b151515620002d057600080fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156200036c57600080fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61203e80620003d36000396000f3fe608060405234801561001057600080fd5b506004361061016a576000357c01000000000000000000000000000000000000000000000000000000009004806383197ef0116100e05780639c3e91d8116100995780639c3e91d814610500578063cf802e1e1461051e578063e5c8b03d14610596578063eb12d61e146105a0578063f2fde38b146105e4578063fc0c546a146106285761016a565b806383197ef0146104245780638456cb591461042e5780638d8e0acc146104385780638da5cb5b146104665780638f32d59b146104b057806391c05b0b146104d25761016a565b80636e1cd95f116101325780636e1cd95f1461027f5780636ef8d66d1461032e578063715018a614610338578063763b40b5146103425780637df73e271461038457806382dc1ec4146103e05761016a565b80630e316ab71461016f5780633f4ba83a146101b357806346fbf68e146101bd5780635c975abb146102195780636b2c0f551461023b575b600080fd5b6101b16004803603602081101561018557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610672565b005b6101bb610691565b005b6101ff600480360360208110156101d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610740565b604051808215151515815260200191505060405180910390f35b61022161075d565b604051808215151515815260200191505060405180910390f35b61027d6004803603602081101561025157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610774565b005b6102ab6004803603602081101561029557600080fd5b8101908080359060200190929190505050610793565b604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200194505050505060405180910390f35b610336610812565b005b61034061081d565b005b6103826004803603606081101561035857600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506108ef565b005b6103c66004803603602081101561039a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bfc565b604051808215151515815260200191505060405180910390f35b610422600480360360208110156103f657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c19565b005b61042c610c39565b005b610436610c65565b005b6104646004803603602081101561044e57600080fd5b8101908080359060200190929190505050610d15565b005b61046e611032565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104b861105b565b604051808215151515815260200191505060405180910390f35b6104fe600480360360208110156104e857600080fd5b81019080803590602001909291905050506110b2565b005b610508611534565b6040518082815260200191505060405180910390f35b6105946004803603608081101561053457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050611541565b005b61059e61196f565b005b6105e2600480360360208110156105b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061197a565b005b610626600480360360208110156105fa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061199a565b005b6106306119b9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61067a61105b565b151561068557600080fd5b61068e816119df565b50565b61069a33610740565b15156106a557600080fd5b600260009054906101000a900460ff1615156106c057600080fd5b6000600260006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6000610756826001611a3990919063ffffffff16565b9050919050565b6000600260009054906101000a900460ff16905090565b61077c61105b565b151561078757600080fd5b61079081611acd565b50565b6004818154811015156107a257fe5b90600052602060002090600402016000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020154908060030154905084565b61081b33611acd565b565b61082561105b565b151561083057600080fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6108f833610740565b151561090357600080fd5b6004805490508310151561097f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f696e646578206973206f7574206f6620626f756e64000000000000000000000081525060200191505060405180910390fd5b6000821115156109f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f726174696f4454562063616e6e6f74206265207a65726f00000000000000000081525060200191505060405180910390fd5b600081111515610a6f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f726174696f446563696d616c732063616e6e6f74206265207a65726f0000000081525060200191505060405180910390fd5b600483815481101515610a7e57fe5b906000526020600020906004020160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600484815481101515610ad557fe5b906000526020600020906004020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16847fee0eb5daf1e44595fa4c3dd68a2a475100c6c08435bed80599cfc2a0a353018e600487815481101515610b4e57fe5b906000526020600020906004020160020154600488815481101515610b6f57fe5b90600052602060002090600402016003015487876040518085815260200184815260200183815260200182815260200194505050505060405180910390a481600484815481101515610bbd57fe5b90600052602060002090600402016002018190555080600484815481101515610be257fe5b906000526020600020906004020160030181905550505050565b6000610c12826003611a3990919063ffffffff16565b9050919050565b610c2233610740565b1515610c2d57600080fd5b610c3681611b27565b50565b610c4161105b565b1515610c4c57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff16ff5b610c6e33610740565b1515610c7957600080fd5b600260009054906101000a900460ff16151515610c9557600080fd5b6001600260006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b610d1e33610740565b1515610d2957600080fd5b60048054905081101515610da5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f696e646578206973206f7574206f6620626f756e64000000000000000000000081525060200191505060405180910390fd5b600481815481101515610db457fe5b906000526020600020906004020160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600482815481101515610e0b57fe5b906000526020600020906004020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16827fe9a043fd2807c21031fdccbb069758a045a57a96d8db6a60a0248cfad3bfb082600485815481101515610e8457fe5b906000526020600020906004020160020154600486815481101515610ea557fe5b906000526020600020906004020160030154604051808381526020018281526020019250505060405180910390a460008190505b60016004805490500381101561101857600460018201815481101515610efb57fe5b9060005260206000209060040201600482815481101515610f1857fe5b90600052602060002090600402016000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060028201548160020155600382015481600301559050508080600101915050610ed9565b50600480548091906001900361102e9190611ebd565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b600260009054906101000a900460ff161515156110ce57600080fd5b6110d733610bfc565b15156110e257600080fd5b60006111bb600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b15801561116b57600080fd5b505afa15801561117f573d6000803e3d6000fd5b505050506040513d602081101561119557600080fd5b810190808051906020019092919050505060ff16600a0a83611b8190919063ffffffff16565b111515611213576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180611fed6026913960400191505060405180910390fd5b600080905060008090505b6004805490508110156114ef57600060048281548110151561123c57fe5b90600052602060002090600402019050600061127e8260030154600a0a611270846002015488611bab90919063ffffffff16565b611b8190919063ffffffff16565b9050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd8360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168460010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156113c157600080fd5b505af11580156113d5573d6000803e3d6000fd5b505050506040513d60208110156113eb57600080fd5b8101908080519060200190929190505050506114108185611be990919063ffffffff16565b93508160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16427f4f8320e5423e7a248869328eacf23c5ccd0ca7ccc8b8223a149a74dec878ba8b856002015486600301548a876040518085815260200184815260200183815260200182815260200194505050505060405180910390a45050808060010191505061121e565b50427f47b6f7bd4d0829ff106b9f4d34205081e7cb05f95d22e5534608e5193954b3cd8383604051808381526020018281526020019250505060405180910390a25050565b6000600480549050905090565b61154a33610740565b151561155557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141515156115dd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611fca6023913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515611665576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611fa76023913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141515156116ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180611f6d603a913960400191505060405180910390fd5b600082111515611764576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f726174696f4454562063616e6e6f74206265207a65726f00000000000000000081525060200191505060405180910390fd5b6000811115156117dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f726174696f446563696d616c732063616e6e6f74206265207a65726f0000000081525060200191505060405180910390fd5b60046080604051908101604052808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020155606082015181600301555050508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f92e3a88d0298e1bab0fe2d47a7e225ed413ca154b371fbfda18c9b22a55b459d8484604051808381526020018281526020019250505060405180910390a350505050565b611978336119df565b565b61198333610bfc565b151561198e57600080fd5b61199781611c0a565b50565b6119a261105b565b15156119ad57600080fd5b6119b681611c64565b50565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6119f3816003611d5e90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f3525e22824a8a7df2c9a6029941c824cf95b6447f1e13d5128fd3826d35afe8b60405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515611a7657600080fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611ae1816001611d5e90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e60405160405180910390a250565b611b3b816001611e0d90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b60008082111515611b9157600080fd5b60008284811515611b9e57fe5b0490508091505092915050565b600080831415611bbe5760009050611be3565b60008284029050828482811515611bd157fe5b04141515611bde57600080fd5b809150505b92915050565b6000808284019050838110151515611c0057600080fd5b8091505092915050565b611c1e816003611e0d90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f47d1c22a25bb3a5d4e481b9b1e6944c2eade3181a0a20b495ed61d35b5323f2460405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611ca057600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611d9a57600080fd5b611da48282611a39565b1515611daf57600080fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611e4957600080fd5b611e538282611a39565b151515611e5f57600080fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b815481835581811115611eea57600402816004028360005260206000209182019101611ee99190611eef565b5b505050565b611f6991905b80821115611f6557600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556002820160009055600382016000905550600401611ef5565b5090565b9056fe6c6f636b656457616c6c657420616e6420756e6c6f636b57616c6c6574206164647265737365732063616e6e6f74206265207468652073616d65756e6c6f636b57616c6c657420616464726573732063616e6e6f74206265207a65726f6c6f636b656457616c6c657420616464726573732063616e6e6f74206265207a65726f6461696c79547261646564566f6c756d65206973206e6f7420696e20746f6b656e20756e6974a165627a7a72305820db542f69bfa89b7357f96c0f8be4897b08498574526f0bd5f341766cb6d85c6f0029000000000000000000000000420167d87d35c3a249b32ef6225872fbd9ab85d2

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061016a576000357c01000000000000000000000000000000000000000000000000000000009004806383197ef0116100e05780639c3e91d8116100995780639c3e91d814610500578063cf802e1e1461051e578063e5c8b03d14610596578063eb12d61e146105a0578063f2fde38b146105e4578063fc0c546a146106285761016a565b806383197ef0146104245780638456cb591461042e5780638d8e0acc146104385780638da5cb5b146104665780638f32d59b146104b057806391c05b0b146104d25761016a565b80636e1cd95f116101325780636e1cd95f1461027f5780636ef8d66d1461032e578063715018a614610338578063763b40b5146103425780637df73e271461038457806382dc1ec4146103e05761016a565b80630e316ab71461016f5780633f4ba83a146101b357806346fbf68e146101bd5780635c975abb146102195780636b2c0f551461023b575b600080fd5b6101b16004803603602081101561018557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610672565b005b6101bb610691565b005b6101ff600480360360208110156101d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610740565b604051808215151515815260200191505060405180910390f35b61022161075d565b604051808215151515815260200191505060405180910390f35b61027d6004803603602081101561025157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610774565b005b6102ab6004803603602081101561029557600080fd5b8101908080359060200190929190505050610793565b604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200194505050505060405180910390f35b610336610812565b005b61034061081d565b005b6103826004803603606081101561035857600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506108ef565b005b6103c66004803603602081101561039a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bfc565b604051808215151515815260200191505060405180910390f35b610422600480360360208110156103f657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c19565b005b61042c610c39565b005b610436610c65565b005b6104646004803603602081101561044e57600080fd5b8101908080359060200190929190505050610d15565b005b61046e611032565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104b861105b565b604051808215151515815260200191505060405180910390f35b6104fe600480360360208110156104e857600080fd5b81019080803590602001909291905050506110b2565b005b610508611534565b6040518082815260200191505060405180910390f35b6105946004803603608081101561053457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050611541565b005b61059e61196f565b005b6105e2600480360360208110156105b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061197a565b005b610626600480360360208110156105fa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061199a565b005b6106306119b9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61067a61105b565b151561068557600080fd5b61068e816119df565b50565b61069a33610740565b15156106a557600080fd5b600260009054906101000a900460ff1615156106c057600080fd5b6000600260006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6000610756826001611a3990919063ffffffff16565b9050919050565b6000600260009054906101000a900460ff16905090565b61077c61105b565b151561078757600080fd5b61079081611acd565b50565b6004818154811015156107a257fe5b90600052602060002090600402016000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020154908060030154905084565b61081b33611acd565b565b61082561105b565b151561083057600080fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6108f833610740565b151561090357600080fd5b6004805490508310151561097f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f696e646578206973206f7574206f6620626f756e64000000000000000000000081525060200191505060405180910390fd5b6000821115156109f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f726174696f4454562063616e6e6f74206265207a65726f00000000000000000081525060200191505060405180910390fd5b600081111515610a6f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f726174696f446563696d616c732063616e6e6f74206265207a65726f0000000081525060200191505060405180910390fd5b600483815481101515610a7e57fe5b906000526020600020906004020160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600484815481101515610ad557fe5b906000526020600020906004020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16847fee0eb5daf1e44595fa4c3dd68a2a475100c6c08435bed80599cfc2a0a353018e600487815481101515610b4e57fe5b906000526020600020906004020160020154600488815481101515610b6f57fe5b90600052602060002090600402016003015487876040518085815260200184815260200183815260200182815260200194505050505060405180910390a481600484815481101515610bbd57fe5b90600052602060002090600402016002018190555080600484815481101515610be257fe5b906000526020600020906004020160030181905550505050565b6000610c12826003611a3990919063ffffffff16565b9050919050565b610c2233610740565b1515610c2d57600080fd5b610c3681611b27565b50565b610c4161105b565b1515610c4c57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff16ff5b610c6e33610740565b1515610c7957600080fd5b600260009054906101000a900460ff16151515610c9557600080fd5b6001600260006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b610d1e33610740565b1515610d2957600080fd5b60048054905081101515610da5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f696e646578206973206f7574206f6620626f756e64000000000000000000000081525060200191505060405180910390fd5b600481815481101515610db457fe5b906000526020600020906004020160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600482815481101515610e0b57fe5b906000526020600020906004020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16827fe9a043fd2807c21031fdccbb069758a045a57a96d8db6a60a0248cfad3bfb082600485815481101515610e8457fe5b906000526020600020906004020160020154600486815481101515610ea557fe5b906000526020600020906004020160030154604051808381526020018281526020019250505060405180910390a460008190505b60016004805490500381101561101857600460018201815481101515610efb57fe5b9060005260206000209060040201600482815481101515610f1857fe5b90600052602060002090600402016000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060028201548160020155600382015481600301559050508080600101915050610ed9565b50600480548091906001900361102e9190611ebd565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b600260009054906101000a900460ff161515156110ce57600080fd5b6110d733610bfc565b15156110e257600080fd5b60006111bb600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b15801561116b57600080fd5b505afa15801561117f573d6000803e3d6000fd5b505050506040513d602081101561119557600080fd5b810190808051906020019092919050505060ff16600a0a83611b8190919063ffffffff16565b111515611213576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180611fed6026913960400191505060405180910390fd5b600080905060008090505b6004805490508110156114ef57600060048281548110151561123c57fe5b90600052602060002090600402019050600061127e8260030154600a0a611270846002015488611bab90919063ffffffff16565b611b8190919063ffffffff16565b9050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd8360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168460010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156113c157600080fd5b505af11580156113d5573d6000803e3d6000fd5b505050506040513d60208110156113eb57600080fd5b8101908080519060200190929190505050506114108185611be990919063ffffffff16565b93508160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16427f4f8320e5423e7a248869328eacf23c5ccd0ca7ccc8b8223a149a74dec878ba8b856002015486600301548a876040518085815260200184815260200183815260200182815260200194505050505060405180910390a45050808060010191505061121e565b50427f47b6f7bd4d0829ff106b9f4d34205081e7cb05f95d22e5534608e5193954b3cd8383604051808381526020018281526020019250505060405180910390a25050565b6000600480549050905090565b61154a33610740565b151561155557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141515156115dd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611fca6023913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515611665576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611fa76023913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141515156116ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180611f6d603a913960400191505060405180910390fd5b600082111515611764576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f726174696f4454562063616e6e6f74206265207a65726f00000000000000000081525060200191505060405180910390fd5b6000811115156117dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f726174696f446563696d616c732063616e6e6f74206265207a65726f0000000081525060200191505060405180910390fd5b60046080604051908101604052808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020155606082015181600301555050508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f92e3a88d0298e1bab0fe2d47a7e225ed413ca154b371fbfda18c9b22a55b459d8484604051808381526020018281526020019250505060405180910390a350505050565b611978336119df565b565b61198333610bfc565b151561198e57600080fd5b61199781611c0a565b50565b6119a261105b565b15156119ad57600080fd5b6119b681611c64565b50565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6119f3816003611d5e90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f3525e22824a8a7df2c9a6029941c824cf95b6447f1e13d5128fd3826d35afe8b60405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515611a7657600080fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611ae1816001611d5e90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e60405160405180910390a250565b611b3b816001611e0d90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b60008082111515611b9157600080fd5b60008284811515611b9e57fe5b0490508091505092915050565b600080831415611bbe5760009050611be3565b60008284029050828482811515611bd157fe5b04141515611bde57600080fd5b809150505b92915050565b6000808284019050838110151515611c0057600080fd5b8091505092915050565b611c1e816003611e0d90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f47d1c22a25bb3a5d4e481b9b1e6944c2eade3181a0a20b495ed61d35b5323f2460405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611ca057600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611d9a57600080fd5b611da48282611a39565b1515611daf57600080fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611e4957600080fd5b611e538282611a39565b151515611e5f57600080fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b815481835581811115611eea57600402816004028360005260206000209182019101611ee99190611eef565b5b505050565b611f6991905b80821115611f6557600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556002820160009055600382016000905550600401611ef5565b5090565b9056fe6c6f636b656457616c6c657420616e6420756e6c6f636b57616c6c6574206164647265737365732063616e6e6f74206265207468652073616d65756e6c6f636b57616c6c657420616464726573732063616e6e6f74206265207a65726f6c6f636b656457616c6c657420616464726573732063616e6e6f74206265207a65726f6461696c79547261646564566f6c756d65206973206e6f7420696e20746f6b656e20756e6974a165627a7a72305820db542f69bfa89b7357f96c0f8be4897b08498574526f0bd5f341766cb6d85c6f0029

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000420167d87d35c3a249b32ef6225872fbd9ab85d2

-----Decoded View---------------
Arg [0] : _token (address): 0x420167D87d35c3A249b32Ef6225872fBD9aB85D2

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000420167d87d35c3a249b32ef6225872fbd9ab85d2


Deployed Bytecode Sourcemap

13369:1810:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13369:1810:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15083:91;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15083:91:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;4822:118;;;:::i;:::-;;3096:109;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3096:109:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4075:78;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14986:91;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14986:91:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;7106:47;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7106:47:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3313:77;;;:::i;:::-;;12599:140;;;:::i;:::-;;8881:728;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8881:728:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2164:109;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2164:109:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3213:92;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3213:92:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;14907:73;;;:::i;:::-;;4611:116;;;:::i;:::-;;9615:640;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9615:640:0;;;;;;;;;;;;;;;;;:::i;:::-;;11886:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12221:92;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14067:834;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14067:834:0;;;;;;;;;;;;;;;;;:::i;:::-;;7836:135;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8005:870;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;8005:870:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2381:77;;;:::i;:::-;;2281:92;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2281:92:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;12916:109;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12916:109:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;13516:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15083:91;12098:9;:7;:9::i;:::-;12090:18;;;;;;;;15146:22;15160:7;15146:13;:22::i;:::-;15083:91;:::o;4822:118::-;3047:20;3056:10;3047:8;:20::i;:::-;3039:29;;;;;;;;4491:7;;;;;;;;;;;4483:16;;;;;;;;4891:5;4881:7;;:15;;;;;;;;;;;;;;;;;;4912:20;4921:10;4912:20;;;;;;;;;;;;;;;;;;;;;;4822:118::o;3096:109::-;3152:4;3176:21;3189:7;3176:8;:12;;:21;;;;:::i;:::-;3169:28;;3096:109;;;:::o;4075:78::-;4114:4;4138:7;;;;;;;;;;;4131:14;;4075:78;:::o;14986:91::-;12098:9;:7;:9::i;:::-;12090:18;;;;;;;;15049:22;15063:7;15049:13;:22::i;:::-;14986:91;:::o;7106:47::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3313:77::-;3357:25;3371:10;3357:13;:25::i;:::-;3313:77::o;12599:140::-;12098:9;:7;:9::i;:::-;12090:18;;;;;;;;12698:1;12661:40;;12682:6;;;;;;;;;;;12661:40;;;;;;;;;;;;12729:1;12712:6;;:19;;;;;;;;;;;;;;;;;;12599:140::o;8881:728::-;3047:20;3056:10;3047:8;:20::i;:::-;3039:29;;;;;;;;9030:19;:26;;;;9022:5;:34;9014:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9108:1;9097:8;:12;9089:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9168:1;9152:13;:17;9144:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9309:19;9329:5;9309:26;;;;;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;9214:273;;9261:19;9281:5;9261:26;;;;;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;9214:273;;9247:5;9214:273;9357:19;9377:5;9357:26;;;;;;;;;;;;;;;;;;;;:35;;;9401:19;9421:5;9401:26;;;;;;;;;;;;;;;;;;;;:40;;;9450:8;9467:13;9214:273;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9532:8;9494:19;9514:5;9494:26;;;;;;;;;;;;;;;;;;;;:35;;:46;;;;9590:13;9547:19;9567:5;9547:26;;;;;;;;;;;;;;;;;;;;:40;;:56;;;;8881:728;;;:::o;2164:109::-;2220:4;2244:21;2257:7;2244:8;:12;;:21;;;;:::i;:::-;2237:28;;2164:109;;;:::o;3213:92::-;3047:20;3056:10;3047:8;:20::i;:::-;3039:29;;;;;;;;3278:19;3289:7;3278:10;:19::i;:::-;3213:92;:::o;14907:73::-;12098:9;:7;:9::i;:::-;12090:18;;;;;;;;14963:10;14950:24;;;4611:116;3047:20;3056:10;3047:8;:20::i;:::-;3039:29;;;;;;;;4312:7;;;;;;;;;;;4311:8;4303:17;;;;;;;;4681:4;4671:7;;:14;;;;;;;;;;;;;;;;;;4701:18;4708:10;4701:18;;;;;;;;;;;;;;;;;;;;;;4611:116::o;9615:640::-;3047:20;3056:10;3047:8;:20::i;:::-;3039:29;;;;;;;;9715:19;:26;;;;9707:5;:34;9699:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9875:19;9895:5;9875:26;;;;;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;9779:235;;9827:19;9847:5;9827:26;;;;;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;9779:235;;9813:5;9779:235;9923:19;9943:5;9923:26;;;;;;;;;;;;;;;;;;;;:35;;;9967:19;9987:5;9967:26;;;;;;;;;;;;;;;;;;;;:40;;;9779:235;;;;;;;;;;;;;;;;;;;;;;;;10097:6;10106:5;10097:14;;10092:123;10142:1;10115:19;:26;;;;:28;10113:1;:30;10092:123;;;10183:19;10205:1;10203;:3;10183:24;;;;;;;;;;;;;;;;;;;;10158:19;10178:1;10158:22;;;;;;;;;;;;;;;;;;;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10145:3;;;;;;;10092:123;;;;10221:19;:28;;;;;;;;;;;;:::i;:::-;;9615:640;:::o;11886:79::-;11924:7;11951:6;;;;;;;;;;;11944:13;;11886:79;:::o;12221:92::-;12261:4;12299:6;;;;;;;;;;;12285:20;;:10;:20;;;12278:27;;12221:92;:::o;14067:834::-;4312:7;;;;;;;;;;;4311:8;4303:17;;;;;;;;2115:20;2124:10;2115:8;:20::i;:::-;2107:29;;;;;;;;14236:1;14179:54;14215:5;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14215:16:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14215:16:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14215:16:0;;;;;;;;;;;;;;;;14207:25;;14201:2;:31;14179:17;:21;;:54;;;;:::i;:::-;:58;14163:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14300:13;14316:1;14300:17;;14329:9;14341:1;14329:13;;14324:513;14348:19;:26;;;;14344:1;:30;14324:513;;;14390:29;14422:19;14442:1;14422:22;;;;;;;;;;;;;;;;;;;;14390:54;;14453:14;14470:62;14515:2;:16;;;14509:2;:22;14470:34;14492:2;:11;;;14470:17;:21;;:34;;;;:::i;:::-;:38;;:62;;;;:::i;:::-;14453:79;;14541:5;;;;;;;;;;;:18;;;14560:2;:15;;;;;;;;;;;;14577:2;:15;;;;;;;;;;;;14594:6;14541:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14541:60:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14541:60:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14541:60:0;;;;;;;;;;;;;;;;;14618:17;14628:6;14618:5;:9;;:17;;;;:::i;:::-;14610:25;;14711:2;:15;;;;;;;;;;;;14649:180;;14685:2;:15;;;;;;;;;;;;14649:180;;14671:3;14649:180;14737:2;:11;;;14759:2;:16;;;14786:17;14814:6;14649:180;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14324:513;;14376:3;;;;;;;14324:513;;;;14865:3;14848:47;14870:17;14889:5;14848:47;;;;;;;;;;;;;;;;;;;;;;;;2147:1;14067:834;:::o;7836:135::-;7906:14;7939:19;:26;;;;7932:33;;7836:135;:::o;8005:870::-;3047:20;3056:10;3047:8;:20::i;:::-;3039:29;;;;;;;;8203:1;8179:26;;:12;:26;;;;8171:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8284:1;8260:26;;:12;:26;;;;8252:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8357:12;8341:28;;:12;:28;;;;8333:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8458:1;8447:8;:12;8439:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8518:1;8502:13;:17;8494:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8559:19;8584:161;;;;;;;;;8626:12;8584:161;;;;;;8661:12;8584:161;;;;;;8692:8;8584:161;;;;8724:13;8584:161;;;8559:187;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;8559:187:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8811:12;8758:111;;8790:12;8758:111;;;8832:8;8849:13;8758:111;;;;;;;;;;;;;;;;;;;;;;;;8005:870;;;;:::o;2381:77::-;2425:25;2439:10;2425:13;:25::i;:::-;2381:77::o;2281:92::-;2115:20;2124:10;2115:8;:20::i;:::-;2107:29;;;;;;;;2346:19;2357:7;2346:10;:19::i;:::-;2281:92;:::o;12916:109::-;12098:9;:7;:9::i;:::-;12090:18;;;;;;;;12989:28;13008:8;12989:18;:28::i;:::-;12916:109;:::o;13516:26::-;;;;;;;;;;;;;:::o;2596:130::-;2656:24;2672:7;2656:8;:15;;:24;;;;:::i;:::-;2710:7;2696:22;;;;;;;;;;;;2596:130;:::o;11058:165::-;11130:4;11174:1;11155:21;;:7;:21;;;;11147:30;;;;;;;;11195:4;:11;;:20;11207:7;11195:20;;;;;;;;;;;;;;;;;;;;;;;;;11188:27;;11058:165;;;;:::o;3528:130::-;3588:24;3604:7;3588:8;:15;;:24;;;;:::i;:::-;3642:7;3628:22;;;;;;;;;;;;3528:130;:::o;3398:122::-;3455:21;3468:7;3455:8;:12;;:21;;;;:::i;:::-;3504:7;3492:20;;;;;;;;;;;;3398:122;:::o;5725:303::-;5783:7;5882:1;5878;:5;5870:14;;;;;;;;5895:9;5911:1;5907;:5;;;;;;;;5895:17;;6019:1;6012:8;;;5725:303;;;;:::o;5159:433::-;5217:7;5466:1;5461;:6;5457:47;;;5491:1;5484:8;;;;5457:47;5516:9;5532:1;5528;:5;5516:17;;5561:1;5556;5552;:5;;;;;;;;:10;5544:19;;;;;;;;5583:1;5576:8;;;5159:433;;;;;:::o;6400:150::-;6458:7;6478:9;6494:1;6490;:5;6478:17;;6519:1;6514;:6;;6506:15;;;;;;;;6541:1;6534:8;;;6400:150;;;;:::o;2466:122::-;2523:21;2536:7;2523:8;:12;;:21;;;;:::i;:::-;2572:7;2560:20;;;;;;;;;;;;2466:122;:::o;13175:187::-;13269:1;13249:22;;:8;:22;;;;13241:31;;;;;;;;13317:8;13288:38;;13309:6;;;;;;;;;;;13288:38;;;;;;;;;;;;13346:8;13337:6;;:17;;;;;;;;;;;;;;;;;;13175:187;:::o;10775:189::-;10874:1;10855:21;;:7;:21;;;;10847:30;;;;;;;;10896:18;10900:4;10906:7;10896:3;:18::i;:::-;10888:27;;;;;;;;10951:5;10928:4;:11;;:20;10940:7;10928:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;10775:189;;:::o;10510:186::-;10606:1;10587:21;;:7;:21;;;;10579:30;;;;;;;;10629:18;10633:4;10639:7;10629:3;:18::i;:::-;10628:19;10620:28;;;;;;;;10684:4;10661;:11;;:20;10673:7;10661:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;10510:186;;:::o;13369:1810::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

bzzr://db542f69bfa89b7357f96c0f8be4897b08498574526f0bd5f341766cb6d85c6f

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

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.