ETH Price: $1,942.13 (-5.16%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer57089312018-05-31 15:18:242833 days ago1527779904IN
0x7EBa66Ae...4E6A59323
0 ETH0.0024393741
Confirm57088582018-05-31 15:03:522833 days ago1527779032IN
0x7EBa66Ae...4E6A59323
0 ETH0.001547130
Transfer57088072018-05-31 14:49:412833 days ago1527778181IN
0x7EBa66Ae...4E6A59323
0 ETH0.0024367541
Presale57087752018-05-31 14:43:112833 days ago1527777791IN
0x7EBa66Ae...4E6A59323
0 ETH0.0015045435
Confirm57087722018-05-31 14:41:522833 days ago1527777712IN
0x7EBa66Ae...4E6A59323
0 ETH0.0014658630
Confirm57087672018-05-31 14:40:512833 days ago1527777651IN
0x7EBa66Ae...4E6A59323
0 ETH0.0014658630
Confirm57087662018-05-31 14:40:462833 days ago1527777646IN
0x7EBa66Ae...4E6A59323
0 ETH0.0009772420
Presale Vesting57087472018-05-31 14:36:102833 days ago1527777370IN
0x7EBa66Ae...4E6A59323
0 ETH0.0059769240
Confirm57087302018-05-31 14:32:142833 days ago1527777134IN
0x7EBa66Ae...4E6A59323
0 ETH0.001031420
Confirm57087302018-05-31 14:32:142833 days ago1527777134IN
0x7EBa66Ae...4E6A59323
0 ETH0.001031420
Confirm57087182018-05-31 14:28:212833 days ago1527776901IN
0x7EBa66Ae...4E6A59323
0 ETH0.0012892525
Confirm57086692018-05-31 14:14:032833 days ago1527776043IN
0x7EBa66Ae...4E6A59323
0 ETH0.0012892525
Confirm57086662018-05-31 14:13:212833 days ago1527776001IN
0x7EBa66Ae...4E6A59323
0 ETH0.001031420
Confirm57086542018-05-31 14:10:532833 days ago1527775853IN
0x7EBa66Ae...4E6A59323
0 ETH0.001031420
Presale Vesting57086112018-05-31 14:00:042833 days ago1527775204IN
0x7EBa66Ae...4E6A59323
0 ETH0.0037371725
Confirm57086032018-05-31 13:57:332833 days ago1527775053IN
0x7EBa66Ae...4E6A59323
0 ETH0.0010326820
Confirm57085802018-05-31 13:51:332833 days ago1527774693IN
0x7EBa66Ae...4E6A59323
0 ETH0.0010326820
Confirm57085732018-05-31 13:50:322833 days ago1527774632IN
0x7EBa66Ae...4E6A59323
0 ETH0.0010326820

Advanced mode:
Parent Transaction Hash Method Block
From
To
View All Internal Transactions
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TimeBankToken

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2018-05-30
*/

pragma solidity ^0.4.21;


contract EIP20Interface {
    function name() public view returns (string);
    
    function symbol() public view returns (string);
    
    function decimals() public view returns (uint8);
    
    function totalSupply() public view returns (uint256);

    /// @param _owner The address from which the balance will be retrieved
    /// @return The balance
    function balanceOf(address _owner) public view returns (uint256 balance);

    /// @notice send `_value` token to `_to` from `msg.sender`
    /// @param _to The address of the recipient
    /// @param _value The amount of token to be transferred
    /// @return Whether the transfer was successful or not
    function transfer(address _to, uint256 _value) public returns (bool success);

    /// @notice send `_value` token to `_to` from `_from` on the condition it is approved by `_from`
    /// @param _from The address of the sender
    /// @param _to The address of the recipient
    /// @param _value The amount of token to be transferred
    /// @return Whether the transfer was successful or not
    function transferFrom(address _from, address _to, uint256 _value) public returns (bool success);

    /// @notice `msg.sender` approves `_spender` to spend `_value` tokens
    /// @param _spender The address of the account able to transfer the tokens
    /// @param _value The amount of tokens to be approved for transfer
    /// @return Whether the approval was successful or not
    function approve(address _spender, uint256 _value) public returns (bool success);

    /// @param _owner The address of the account owning tokens
    /// @param _spender The address of the account able to transfer the tokens
    /// @return Amount of remaining tokens allowed to spent
    function allowance(address _owner, address _spender) public view returns (uint256 remaining);

    // solhint-disable-next-line no-simple-event-func-name
    event Transfer(address indexed _from, address indexed _to, uint256 _value);
    event Approval(address indexed _owner, address indexed _spender, uint256 _value);
}


contract EIP20 is EIP20Interface {

    uint256 constant private MAX_UINT256 = 2**256 - 1;
    mapping (address => uint256) public balances;
    mapping (address => mapping (address => uint256)) public allowed;
    /*
    NOTE:
    The following variables are OPTIONAL vanities. One does not have to include them.
    They allow one to customise the token contract & in no way influences the core functionality.
    Some wallets/interfaces might not even bother to look at this information.
    */
    string public tokenName;                   //fancy name: eg Simon Bucks
    uint8 public tokenDecimals;                //How many decimals to show.
    string public tokenSymbol;                 //An identifier: eg SBX
    uint256 public tokenTotalSupply;

    constructor(
        uint256 _initialAmount,
        string _tokenName,
        uint8 _decimalUnits,
        string _tokenSymbol
    ) public {
        balances[msg.sender] = _initialAmount;               // Give the creator all initial tokens
        tokenTotalSupply = _initialAmount;                        // Update total supply
        tokenName = _tokenName;                                   // Set the name for display purposes
        tokenDecimals = _decimalUnits;                            // Amount of decimals for display purposes
        tokenSymbol = _tokenSymbol;                               // Set the symbol for display purposes
    }
    
    function name() public view returns (string) {
        return tokenName;
    }
    
    function symbol() public view returns (string) {
        return tokenSymbol;
    }
    
    function decimals() public view returns (uint8) {
        return tokenDecimals;
    }
    
    function totalSupply() public view returns (uint256) {
        return tokenTotalSupply;
    }

    function transfer(address _to, uint256 _value) public returns (bool success) {
        require(balances[msg.sender] >= _value);
        balances[msg.sender] -= _value;
        balances[_to] += _value;
        emit Transfer(msg.sender, _to, _value); //solhint-disable-line indent, no-unused-vars
        return true;
    }

    function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) {
        uint256 allowance = allowed[_from][msg.sender];
        require(balances[_from] >= _value && allowance >= _value);
        balances[_to] += _value;
        balances[_from] -= _value;
        if (allowance < MAX_UINT256) {
            allowed[_from][msg.sender] -= _value;
        }
        emit Transfer(_from, _to, _value); //solhint-disable-line indent, no-unused-vars
        return true;
    }

    function balanceOf(address _owner) public view returns (uint256 balance) {
        return balances[_owner];
    }

    function approve(address _spender, uint256 _value) public returns (bool success) {
        allowed[msg.sender][_spender] = _value;
        emit Approval(msg.sender, _spender, _value); //solhint-disable-line indent, no-unused-vars
        return true;
    }

    function allowance(address _owner, address _spender) public view returns (uint256 remaining) {
        return allowed[_owner][_spender];
    }
}



/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {

  /**
  * @dev Multiplies two numbers, throws on overflow.
  */
  function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
    if (a == 0) {
      return 0;
    }
    c = a * b;
    assert(c / a == b);
    return c;
  }

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

  /**
  * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
  */
  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    assert(b <= a);
    return a - b;
  }

  /**
  * @dev Adds two numbers, throws on overflow.
  */
  function add(uint256 a, uint256 b) internal pure returns (uint256 c) {
    c = a + b;
    assert(c >= a);
    return c;
  }
}


contract TimeBankToken is EIP20 {
  using SafeMath for uint;

  struct Vesting {
    uint256 startTime; // vesting start time
    uint256 initReleaseAmount;
    uint256 amount;
    uint256 interval; // release N% of amount each interval.
    uint256 periods; // count of periods
    uint256 withdrawed; // already used amount of released part
  }

  mapping (address => Vesting[]) vestings;
  
  address[] managerList;
  mapping (address => bool) managers;
  mapping (bytes32 => mapping (address => bool)) confirms;
  
  /*
  at least <threshold> confirmations
  */
  uint majorityThreshold;
  uint managementThreshold;

  address coinbase;
  address master;
  bool public paused;

  function checkAddress(address _addr) internal pure returns (bool) {
    return _addr != address(0);
  }

  // 1 with 28 zeros
  constructor(address _master, address[] _managers, uint _majorityThreshold, uint _managementThreshold) EIP20(10000000000000000000000000000, "Time Bank Token", 18, "TB") public {
    require(checkAddress(_master));
    require(_managers.length >= _majorityThreshold);
    require(_managers.length >= _managementThreshold);
    
    paused = false;
    master = _master;
    coinbase = msg.sender;
    majorityThreshold = _majorityThreshold;
    managementThreshold = _managementThreshold;

    for (uint i=0; i<_managers.length; i++) {
      require(checkAddress(_managers[i]));
      managers[_managers[i]] = true;
    }
    managerList = _managers;

    // initial batch operations
    // internalPresaleVesting(0x0095F9DffeE386B650230eD3eC28891c1053aBE0, 10000, 60, 120, 240);
    // internalPresaleVesting(0x00D4fC2CC18B96c44D9755afB6D4e6804cF827ee, 20000, 60, 120, 240);
    // internalPresale(0x0092E41D42E834705fd07c9136Fd0b1028226bE3, 30000);
  }

  function pause() public isMaster isNotPaused {
    require(isEnoughConfirmed(msg.data, 1));
    paused = true;
  }

  function resume() public isMaster isPaused {
    require(isEnoughConfirmed(msg.data, 1));
    paused = false;
  }

  modifier isPaused {
    require(paused == true);
    _;
  }

  modifier isNotPaused {
    require(paused == false);
    _;
  }

  modifier isManager {
    require(managers[msg.sender]);
    _;
  }

  modifier isMaster {
    require(msg.sender == master);
    _;
  }

  modifier isNotCoinbase {
    require(msg.sender != coinbase);
    _;
  }

  function managersCount() public view returns (uint) {
    return managerList.length;
  }

  function isAddressManager(address _to) public view returns (bool) {
    return managers[_to];
  }

  function getMajorityThreshold() public view  returns (uint) {
    return majorityThreshold;
  }

  event MajorityThresholdChanged(uint oldThreshold, uint newThreshold);
  event ReplaceManager(address oldAddr, address newAddr);
  event RemoveManager(address manager);
  event AddManager(address manager);

  function setMajorityThreshold(uint _threshold) public isMaster isNotPaused {
    require(_threshold > 0);
    require(isEnoughConfirmed(msg.data, managementThreshold));
    uint oldThreshold = majorityThreshold;
    majorityThreshold = _threshold;
    removeConfirm(msg.data);
    emit MajorityThresholdChanged(oldThreshold, majorityThreshold);
  }

  function replaceManager(address _old, address _new) public isMaster isNotPaused {
    require(checkAddress(_old));
    require(checkAddress(_new));
    require(isEnoughConfirmed(msg.data, managementThreshold));
    internalRemoveManager(_old);
    internalAddManager(_new);
    rebuildManagerList();
    removeConfirm(msg.data);
    emit ReplaceManager(_old, _new);
  }

  function removeManager(address _manager) public isMaster isNotPaused {
    require(checkAddress(_manager));
    require(isEnoughConfirmed(msg.data, managementThreshold));
    require(managerList.length > managementThreshold);
    internalRemoveManager(_manager);
    rebuildManagerList();
    removeConfirm(msg.data);
    emit RemoveManager(_manager);
  }

  function internalRemoveManager(address _manager) internal {
    require(checkAddress(_manager));
    managers[_manager] = false;
  }

  function addManager(address _manager) public isMaster isNotPaused {
    require(checkAddress(_manager));
    require(isEnoughConfirmed(msg.data, managementThreshold));
    internalAddManager(_manager);
    rebuildManagerList();
    removeConfirm(msg.data);
    emit AddManager(_manager);
  }

  function internalAddManager(address _manager) internal {
    require(checkAddress(_manager));
    managers[_manager] = true;
    managerList.push(_manager);
  }

  mapping (address => bool) checked;

  function rebuildManagerList() internal {
    address[] memory res = new address[](managerList.length);
    for (uint k=0; k<managerList.length; k++) {
      checked[managerList[k]] = false;
    }
    uint j=0;
    for (uint i=0; i<managerList.length; i++) {
      address manager = managerList[i];
      if (managers[manager] && checked[manager] == false) {
        res[j] = manager;
        checked[manager] = true;
        j++;
      }
    }
    managerList = res;
    managerList.length = j;
  }

  function checkData(bytes data) internal pure returns (bool) {
    return data.length != 0;
  }

  event Confirm(address manager, bytes data);
  event Revoke(address manager, bytes data);

  /*
  manager use this function to confirm a operation
  confirm will not be call inside other functions, so it can be external to save some gas
  @param {bytes} data is the transaction's raw input
  */
  function confirm(bytes data) external isManager {
    checkData(data);
    bytes32 op = keccak256(data);
    if (confirms[op][msg.sender] == false) {
      confirms[op][msg.sender] = true;
    }
    emit Confirm(msg.sender, data);
  }

  /*
  manager use this function to revoke a confirm of the operation
  revoke will not be call inside other functions, so it can be external to save some gas
  @param {bytes} data is the transaction's raw input
  */
  function revoke(bytes data) external isManager {
    checkData(data);
    bytes32 op = keccak256(data);
    if (confirms[op][msg.sender] == true) {
      confirms[op][msg.sender] = false;
    }
    emit Revoke(msg.sender, data);
  }

  /*
  check a operation is confirmed or not
  */
  function isConfirmed(bytes data) public view isManager returns (bool) {
    bytes32 op = keccak256(data);
    return confirms[op][msg.sender];
  }

  function isConfirmedBy(bytes data, address manager) public view returns (bool) {
    bytes32 op = keccak256(data);
    return confirms[op][manager];
  } 

  function isMajorityConfirmed(bytes data) public view returns (bool) {
    return isEnoughConfirmed(data, majorityThreshold);
  }

  function isEnoughConfirmed(bytes data, uint count) internal view returns (bool) {
    bytes32 op = keccak256(data);
    uint confirmsCount = 0;
    for (uint i=0; i<managerList.length; i++) {
      if (confirms[op][managerList[i]] == true) {
        confirmsCount = confirmsCount.add(1);
      }
    }
    return confirmsCount >= count;
  }

  /*
  once the operation is executed, the confirm of the operation should be removed
  */
  function removeConfirm(bytes data) internal {
    bytes32 op = keccak256(data);
    for (uint i=0; i<managerList.length; i++) {
      confirms[op][managerList[i]] = false;
    }
  }

  /*
  sale coin with time locking
  only the manager can call this function
  and this operation should be confirmed
  */
  function presaleVesting(address _to, uint256 _startTime, uint256 _initReleaseAmount, uint256 _amount, uint256 _interval, uint256 _periods) public isManager isNotPaused {
    checkAddress(_to);
    require(isMajorityConfirmed(msg.data));
    internalPresaleVesting(_to, _startTime, _initReleaseAmount, _amount, _interval, _periods);
    removeConfirm(msg.data);
  }

  function batchPresaleVesting(address[] _to, uint256[] _startTime, uint256[] _initReleaseAmount, uint256[] _amount, uint256[] _interval, uint256[] _periods) public isManager isNotPaused {
    require(isMajorityConfirmed(msg.data));
    for (uint i=0; i<_to.length; i++) {
      internalPresaleVesting(_to[i], _startTime[i], _initReleaseAmount[i], _amount[i], _interval[i], _periods[i]);
    }
    removeConfirm(msg.data);
  }

  function internalPresaleVesting(address _to, uint256 _startTime, uint256 _initReleaseAmount, uint256 _amount, uint256 _interval, uint256 _periods) internal {
    require(balances[coinbase] >= _amount);
    require(_initReleaseAmount <= _amount);
    require(checkAddress(_to));
    vestings[_to].push(Vesting(
      _startTime, _initReleaseAmount, _amount, _interval, _periods, 0
    ));
    balances[coinbase] = balances[coinbase].sub(_amount);
    emit PresaleVesting(_to, _startTime, _amount, _interval, _periods);
  }

  /*
  sale coin without time locking
  only the manager can call this function
  and this operation should be confirmed
  */
  function presale(address _to, uint256 _value) public isManager isNotPaused {
    require(isMajorityConfirmed(msg.data));
    internalPresale(_to, _value);
    removeConfirm(msg.data);
  }

  function batchPresale(address[] _to, uint256[] _amount) public isManager isNotPaused {
    require(isMajorityConfirmed(msg.data));
    for (uint i=0; i<_to.length; i++) {
      internalPresale(_to[i], _amount[i]);
    }
    removeConfirm(msg.data);
  }

  function internalPresale(address _to, uint256 _value) internal {
    require(balances[coinbase] >= _value);
    require(checkAddress(_to));
    balances[_to] = balances[_to].add(_value);
    balances[coinbase] = balances[coinbase].sub(_value);
    emit Presale(_to, _value);
  }

  /*
  events
  */
  event Presale(address indexed to, uint256 value);
  event PresaleVesting(address indexed to, uint256 startTime, uint256 amount, uint256 interval, uint256 periods);

  /*
  math function used to calculate vesting curve
  */
  function vestingFunc(uint256 _currentTime, uint256 _startTime, uint256 _initReleaseAmount, uint256 _amount, uint256 _interval, uint256 _periods) public pure returns (uint256) {
    if (_currentTime < _startTime) {
      return 0;
    }
    uint256 t = _currentTime.sub(_startTime);
    uint256 end = _periods.mul(_interval);
    if (t >= end) {
      return _amount;
    }
    uint256 i_amount = _amount.sub(_initReleaseAmount).div(_periods);
    uint256 i = t.div(_interval);
    return i_amount.mul(i).add(_initReleaseAmount);
  }

  function queryWithdrawed(uint _idx) public view returns (uint256) {
    return vestings[msg.sender][_idx].withdrawed;
  }

  function queryVestingRemain(uint256 _currentTime, uint _idx) public view returns (uint256) {
    uint256 released = vestingFunc(
      _currentTime,
      vestings[msg.sender][_idx].startTime, vestings[msg.sender][_idx].initReleaseAmount, vestings[msg.sender][_idx].amount,
      vestings[msg.sender][_idx].interval, vestings[msg.sender][_idx].periods
    );
    return released.sub(vestings[msg.sender][_idx].withdrawed);
  }

  /*
  calculate the released amount of vesting coin
  it cannot be view, because this function relays on 'now'
  */
  function vestingReleased(uint256 _startTime, uint256 _initReleaseAmount, uint256 _amount, uint256 _interval, uint256 _periods) internal view returns (uint256) {
    return vestingFunc(now, _startTime, _initReleaseAmount, _amount, _interval, _periods);
  }

  /*
  withdraw all released vesting coin to balance
  */
  function withdrawVestings(address _to) internal {
    uint256 sum = 0;
    for (uint i=0; i<vestings[_to].length; i++) {
      if (vestings[_to][i].amount == vestings[_to][i].withdrawed) {
        continue;
      }

      uint256 released = vestingReleased(
        vestings[_to][i].startTime, vestings[_to][i].initReleaseAmount, vestings[_to][i].amount,
        vestings[_to][i].interval, vestings[_to][i].periods
      );
      uint256 remain = released.sub(vestings[_to][i].withdrawed);
      if (remain >= 0) {
        vestings[_to][i].withdrawed = released;
        sum = sum.add(remain);
      }
    }
    balances[_to] = balances[_to].add(sum);
  }

  /*
  sum of all vestings balance (regardless of released or not)
  each vesting is amount - withdrawed
  */
  function vestingsBalance(address _to) public view returns (uint256) {
    uint256 sum = 0;
    for (uint i=0; i<vestings[_to].length; i++) {
      sum = sum.add(vestings[_to][i].amount.sub(vestings[_to][i].withdrawed));
    }
    return sum;
  }

  /*
  sum of all remaining vestings balance (only the released part)
  released - withdrawed
  */
  function vestingsReleasedRemain(address _to) internal view returns (uint256) {
    uint256 sum = 0;
    for (uint i=0; i<vestings[_to].length; i++) {
      uint256 released = vestingReleased(
        vestings[_to][i].startTime, vestings[_to][i].initReleaseAmount, vestings[_to][i].amount,
        vestings[_to][i].interval, vestings[_to][i].periods
      );
      sum = sum.add(released.sub(vestings[_to][i].withdrawed));
    }
    return sum;
  }

  /*
  total balance
  sum of vestings balance (includes not released part) and unlocking coin balance
  */
  function balanceOf(address _to) public view returns (uint256) {
    uint256 vbalance = vestingsBalance(_to);
    return vbalance.add(super.balanceOf(_to));
  }

  /*
  sum of vestings balance and unlocking coin balance
  */
  function vestingsRemainBalance(address _to) internal view returns (uint256) {
    return vestingsReleasedRemain(_to).add(super.balanceOf(_to));
  }

  /*
  transfer <_value> coin from <msg.sender> to <_to> address
  1. check remain balance
  2. withdraw all vesting coin to balance
  3. call original ERC20 transafer function
  */
  function transfer(address _to, uint256 _value) public isNotCoinbase isNotPaused returns (bool) {
    checkAddress(_to);
    uint256 remain = vestingsRemainBalance(msg.sender);
    require(remain >= _value);
    withdrawVestings(msg.sender);
    return super.transfer(_to, _value);
  }

  /*
  transferFrom <_value> coin from <_from> to <_to> address
  1. check remain balance
  2. withdraw all vesting coin to balance
  3. call original ERC20 transafer function
  */
  function transferFrom(address _from, address _to, uint256 _value) public isNotPaused returns (bool) {
    checkAddress(_from);
    checkAddress(_to);
    uint256 remain = vestingsRemainBalance(_from);
    require(remain >= _value);
    withdrawVestings(_from);
    return super.transferFrom(_from, _to, _value);
  }

  /*
  approve <_value> coin from <_from> to <_to> address
  1. check remain balance
  2. withdraw all vesting coin to balance
  3. call original ERC20 transafer function
  */
  function approve(address _spender, uint256 _value) public isNotCoinbase isNotPaused returns (bool) {
    checkAddress(_spender);
    uint256 remain = vestingsRemainBalance(msg.sender);
    require(remain >= _value);
    withdrawVestings(msg.sender);
    return super.approve(_spender, _value);
  }

  function allowance(address _owner, address _spender) public view returns (uint256) {
    return super.allowance(_owner, _spender);
  }
}

Contract Security Audit

Contract ABI

API
[{"constant":false,"inputs":[{"name":"_old","type":"address"},{"name":"_new","type":"address"}],"name":"replaceManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"resume","outputs":[],"payable":false,"stateMutability":"nonpayable","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":false,"inputs":[{"name":"data","type":"bytes"}],"name":"revoke","outputs":[],"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":"_currentTime","type":"uint256"},{"name":"_startTime","type":"uint256"},{"name":"_initReleaseAmount","type":"uint256"},{"name":"_amount","type":"uint256"},{"name":"_interval","type":"uint256"},{"name":"_periods","type":"uint256"}],"name":"vestingFunc","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balances","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_manager","type":"address"}],"name":"addManager","outputs":[],"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":"tokenDecimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_threshold","type":"uint256"}],"name":"setMajorityThreshold","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address[]"},{"name":"_amount","type":"uint256[]"}],"name":"batchPresale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_idx","type":"uint256"}],"name":"queryWithdrawed","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"allowed","outputs":[{"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":"managersCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address[]"},{"name":"_startTime","type":"uint256[]"},{"name":"_initReleaseAmount","type":"uint256[]"},{"name":"_amount","type":"uint256[]"},{"name":"_interval","type":"uint256[]"},{"name":"_periods","type":"uint256[]"}],"name":"batchPresaleVesting","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tokenName","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_to","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenSymbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_to","type":"address"}],"name":"isAddressManager","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_startTime","type":"uint256"},{"name":"_initReleaseAmount","type":"uint256"},{"name":"_amount","type":"uint256"},{"name":"_interval","type":"uint256"},{"name":"_periods","type":"uint256"}],"name":"presaleVesting","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_to","type":"address"}],"name":"vestingsBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","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":"data","type":"bytes"}],"name":"isConfirmed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_manager","type":"address"}],"name":"removeManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getMajorityThreshold","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"data","type":"bytes"}],"name":"isMajorityConfirmed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_currentTime","type":"uint256"},{"name":"_idx","type":"uint256"}],"name":"queryVestingRemain","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"data","type":"bytes"}],"name":"confirm","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tokenTotalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"presale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"data","type":"bytes"},{"name":"manager","type":"address"}],"name":"isConfirmedBy","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_master","type":"address"},{"name":"_managers","type":"address[]"},{"name":"_majorityThreshold","type":"uint256"},{"name":"_managementThreshold","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"oldThreshold","type":"uint256"},{"indexed":false,"name":"newThreshold","type":"uint256"}],"name":"MajorityThresholdChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"oldAddr","type":"address"},{"indexed":false,"name":"newAddr","type":"address"}],"name":"ReplaceManager","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"manager","type":"address"}],"name":"RemoveManager","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"manager","type":"address"}],"name":"AddManager","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"manager","type":"address"},{"indexed":false,"name":"data","type":"bytes"}],"name":"Confirm","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"manager","type":"address"},{"indexed":false,"name":"data","type":"bytes"}],"name":"Revoke","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Presale","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"startTime","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"interval","type":"uint256"},{"indexed":false,"name":"periods","type":"uint256"}],"name":"PresaleVesting","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"}]

60806040523480156200001157600080fd5b5060405162004f0d38038062004f0d8339810180604052810190808051906020019092919080518201929190602001805190602001909291908051906020019092919050505060006b204fce5e3e250261100000006040805190810160405280600f81526020017f54696d652042616e6b20546f6b656e000000000000000000000000000000000081525060126040805190810160405280600281526020017f5442000000000000000000000000000000000000000000000000000000000000815250836000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550836005819055508260029080519060200190620001369291906200038a565b5081600360006101000a81548160ff021916908360ff16021790555080600490805190602001906200016a9291906200038a565b5050505050620001898562000351640100000000026401000000009004565b15156200019557600080fd5b82845110151515620001a657600080fd5b81845110151515620001b757600080fd5b6000600d60146101000a81548160ff02191690831515021790555084600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600a8190555081600b81905550600090505b83518110156200032d57620002a384828151811015156200028457fe5b9060200190602002015162000351640100000000026401000000009004565b1515620002af57600080fd5b6001600860008684815181101515620002c457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808060010191505062000267565b83600790805190602001906200034592919062000411565b5050505050506200050e565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614159050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620003cd57805160ff1916838001178555620003fe565b82800160010185558215620003fe579182015b82811115620003fd578251825591602001919060010190620003e0565b5b5090506200040d9190620004a0565b5090565b8280548282559060005260206000209081019282156200048d579160200282015b828111156200048c5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019062000432565b5b5090506200049c9190620004c8565b5090565b620004c591905b80821115620004c1576000816000905550600101620004a7565b5090565b90565b6200050b91905b808211156200050757600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101620004cf565b5090565b90565b6149ef806200051e6000396000f3006080604052600436106101d8576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806301d8715f146101dd578063046f7da21461024057806306fdde0314610257578063095ea7b3146102e75780630b467b9b1461034c57806318160ddd1461038757806323b872dd146103b2578063246275471461043757806327e235e3146104aa5780632d06177a14610501578063313ce567146105445780633b97e856146105755780633d4ba37a146105a65780635a778cf9146105d35780635bfdab261461067c5780635c658165146106bd5780635c975abb146107345780636308ae65146107635780636b5396dc1461078e5780636c02a9311461094357806370a08231146109d35780637b61c32014610a2a5780637c2b606a14610aba5780638456cb5914610b155780638d01229514610b2c57806395d89b4114610ba1578063a4bad0ae14610c31578063a9059cbb14610c88578063aa95484514610ced578063ac18de4314610d6e578063b43716a014610db1578063cb1e438914610ddc578063dd62ed3e14610e5d578063eb1fa69014610ed4578063f2ddc77214610f1f578063f7abab9e14610f5a578063f8a34b2614610f85578063fafd6bcb14610fd2575b600080fd5b3480156101e957600080fd5b5061023e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611073565b005b34801561024c57600080fd5b50610255611254565b005b34801561026357600080fd5b5061026c611338565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102ac578082015181840152602081019050610291565b50505050905090810190601f1680156102d95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102f357600080fd5b50610332600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113da565b604051808215151515815260200191505060405180910390f35b34801561035857600080fd5b5061038560048036038101908080359060200190820180359060200191909192939192939050505061149c565b005b34801561039357600080fd5b5061039c6116bf565b6040518082815260200191505060405180910390f35b3480156103be57600080fd5b5061041d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506116c9565b604051808215151515815260200191505060405180910390f35b34801561044357600080fd5b5061049460048036038101908080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019092919050505061173a565b6040518082815260200191505060405180910390f35b3480156104b657600080fd5b506104eb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611800565b6040518082815260200191505060405180910390f35b34801561050d57600080fd5b50610542600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611818565b005b34801561055057600080fd5b506105596119a7565b604051808260ff1660ff16815260200191505060405180910390f35b34801561058157600080fd5b5061058a6119be565b604051808260ff1660ff16815260200191505060405180910390f35b3480156105b257600080fd5b506105d1600480360381019080803590602001909291905050506119d1565b005b3480156105df57600080fd5b5061067a6004803603810190808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050611b37565b005b34801561068857600080fd5b506106a760048036038101908080359060200190929190505050611c8e565b6040518082815260200191505060405180910390f35b3480156106c957600080fd5b5061071e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cf5565b6040518082815260200191505060405180910390f35b34801561074057600080fd5b50610749611d1a565b604051808215151515815260200191505060405180910390f35b34801561076f57600080fd5b50610778611d2d565b6040518082815260200191505060405180910390f35b34801561079a57600080fd5b50610941600480360381019080803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050611d3a565b005b34801561094f57600080fd5b50610958611ef5565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561099857808201518184015260208101905061097d565b50505050905090810190601f1680156109c55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156109df57600080fd5b50610a14600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f93565b6040518082815260200191505060405180910390f35b348015610a3657600080fd5b50610a3f611fc4565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a7f578082015181840152602081019050610a64565b50505050905090810190601f168015610aac5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610ac657600080fd5b50610afb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612062565b604051808215151515815260200191505060405180910390f35b348015610b2157600080fd5b50610b2a6120b8565b005b348015610b3857600080fd5b50610b9f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019092919050505061219c565b005b348015610bad57600080fd5b50610bb66122b9565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610bf6578082015181840152602081019050610bdb565b50505050905090810190601f168015610c235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610c3d57600080fd5b50610c72600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061235b565b6040518082815260200191505060405180910390f35b348015610c9457600080fd5b50610cd3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506124aa565b604051808215151515815260200191505060405180910390f35b348015610cf957600080fd5b50610d54600480360381019080803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061256c565b604051808215151515815260200191505060405180910390f35b348015610d7a57600080fd5b50610daf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061269a565b005b348015610dbd57600080fd5b50610dc661283e565b6040518082815260200191505060405180910390f35b348015610de857600080fd5b50610e43600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050612848565b604051808215151515815260200191505060405180910390f35b348015610e6957600080fd5b50610ebe600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061285d565b6040518082815260200191505060405180910390f35b348015610ee057600080fd5b50610f096004803603810190808035906020019092919080359060200190929190505050612871565b6040518082815260200191505060405180910390f35b348015610f2b57600080fd5b50610f58600480360381019080803590602001908201803590602001919091929391929390505050612ace565b005b348015610f6657600080fd5b50610f6f612cf1565b6040518082815260200191505060405180910390f35b348015610f9157600080fd5b50610fd0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612cf7565b005b348015610fde57600080fd5b50611059600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612e02565b604051808215151515815260200191505060405180910390f35b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156110cf57600080fd5b60001515600d60149054906101000a900460ff1615151415156110f157600080fd5b6110fa82612ed9565b151561110557600080fd5b61110e81612ed9565b151561111957600080fd5b6111586000368080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050600b54612f12565b151561116357600080fd5b61116c82613071565b611175816130e0565b61117d6131b5565b6111b96000368080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505061348a565b7fd220e07888d0f77e9de72a8091a24508f2e353caeb84535ef03a5d51369ee93e8282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112b057600080fd5b60011515600d60149054906101000a900460ff1615151415156112d257600080fd5b6113106000368080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050506001612f12565b151561131b57600080fd5b6000600d60146101000a81548160ff021916908315150217905550565b606060028054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113d05780601f106113a5576101008083540402835291602001916113d0565b820191906000526020600020905b8154815290600101906020018083116113b357829003601f168201915b5050505050905090565b600080600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415151561143a57600080fd5b60001515600d60149054906101000a900460ff16151514151561145c57600080fd5b61146584612ed9565b5061146f336135c0565b905082811015151561148057600080fd5b611489336135ec565b6114938484613a88565b91505092915050565b6000600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156114f657600080fd5b61153183838080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050613b7a565b50828260405180838380828437820191505092505050604051809103902090506001151560096000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141561163557600060096000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7f29bae56ce9ae5ab0e825fdf15a46c9741be5c31407c09950829f7d12f73564ad338484604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a1505050565b6000600554905090565b60008060001515600d60149054906101000a900460ff1615151415156116ee57600080fd5b6116f785612ed9565b5061170184612ed9565b5061170b856135c0565b905082811015151561171c57600080fd5b611725856135ec565b611730858585613b88565b9150509392505050565b6000806000806000898b101561175357600094506117f2565b6117668a8c613e1f90919063ffffffff16565b935061177b8787613e3890919063ffffffff16565b9250828410151561178e578794506117f2565b6117b3866117a58b8b613e1f90919063ffffffff16565b613e7090919063ffffffff16565b91506117c88785613e7090919063ffffffff16565b90506117ef896117e18385613e3890919063ffffffff16565b613e8690919063ffffffff16565b94505b505050509695505050505050565b60006020528060005260406000206000915090505481565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561187457600080fd5b60001515600d60149054906101000a900460ff16151514151561189657600080fd5b61189f81612ed9565b15156118aa57600080fd5b6118e96000368080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050600b54612f12565b15156118f457600080fd5b6118fd816130e0565b6119056131b5565b6119416000368080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505061348a565b7f3630096a7f9a158ab9fae41e86bfe31fd2202585a26a9668242672566dae028d81604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6000600360009054906101000a900460ff16905090565b600360009054906101000a900460ff1681565b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a2f57600080fd5b60001515600d60149054906101000a900460ff161515141515611a5157600080fd5b600082111515611a6057600080fd5b611a9f6000368080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050600b54612f12565b1515611aaa57600080fd5b600a54905081600a81905550611af26000368080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505061348a565b7f54f7348cdd7784993530bea78eaac4850e302c25150d79711738c4b926161dda81600a54604051808381526020018281526020019250505060405180910390a15050565b6000600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611b9157600080fd5b60001515600d60149054906101000a900460ff161515141515611bb357600080fd5b611bef6000368080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050612848565b1515611bfa57600080fd5b600090505b8251811015611c4d57611c408382815181101515611c1957fe5b906020019060200201518383815181101515611c3157fe5b90602001906020020151613ea2565b8080600101915050611bff565b611c896000368080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505061348a565b505050565b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481101515611cdc57fe5b9060005260206000209060060201600501549050919050565b6001602052816000526040600020602052806000526040600020600091509150505481565b600d60149054906101000a900460ff1681565b6000600780549050905090565b6000600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611d9457600080fd5b60001515600d60149054906101000a900460ff161515141515611db657600080fd5b611df26000368080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050612848565b1515611dfd57600080fd5b600090505b8651811015611eb057611ea38782815181101515611e1c57fe5b906020019060200201518783815181101515611e3457fe5b906020019060200201518784815181101515611e4c57fe5b906020019060200201518785815181101515611e6457fe5b906020019060200201518786815181101515611e7c57fe5b906020019060200201518787815181101515611e9457fe5b906020019060200201516140e1565b8080600101915050611e02565b611eec6000368080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505061348a565b50505050505050565b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611f8b5780601f10611f6057610100808354040283529160200191611f8b565b820191906000526020600020905b815481529060010190602001808311611f6e57829003601f168201915b505050505081565b600080611f9f8361235b565b9050611fbc611fad84614390565b82613e8690919063ffffffff16565b915050919050565b60048054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561205a5780601f1061202f5761010080835404028352916020019161205a565b820191906000526020600020905b81548152906001019060200180831161203d57829003601f168201915b505050505081565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561211457600080fd5b60001515600d60149054906101000a900460ff16151514151561213657600080fd5b6121746000368080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050506001612f12565b151561217f57600080fd5b6001600d60146101000a81548160ff021916908315150217905550565b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156121f457600080fd5b60001515600d60149054906101000a900460ff16151514151561221657600080fd5b61221f86612ed9565b5061225c6000368080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050612848565b151561226757600080fd5b6122758686868686866140e1565b6122b16000368080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505061348a565b505050505050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156123515780601f1061232657610100808354040283529160200191612351565b820191906000526020600020905b81548152906001019060200180831161233457829003601f168201915b5050505050905090565b6000806000809150600090505b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490508110156124a057612491612482600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110151561240457fe5b906000526020600020906006020160050154600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208481548110151561246257fe5b906000526020600020906006020160020154613e1f90919063ffffffff16565b83613e8690919063ffffffff16565b91508080600101915050612368565b8192505050919050565b600080600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415151561250a57600080fd5b60001515600d60149054906101000a900460ff16151514151561252c57600080fd5b61253584612ed9565b5061253f336135c0565b905082811015151561255057600080fd5b612559336135ec565b61256384846143d8565b91505092915050565b600080600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156125c757600080fd5b826040518082805190602001908083835b6020831015156125fd57805182526020820191506020810190506020830392506125d8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020905060096000826000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16915050919050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156126f657600080fd5b60001515600d60149054906101000a900460ff16151514151561271857600080fd5b61272181612ed9565b151561272c57600080fd5b61276b6000368080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050600b54612f12565b151561277657600080fd5b600b5460078054905011151561278b57600080fd5b61279481613071565b61279c6131b5565b6127d86000368080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505061348a565b7f1e25ed4cabec84d314dc176241019653f237da01f2bdd3a10cb0f38b33da676381604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6000600a54905090565b600061285682600a54612f12565b9050919050565b6000612869838361452e565b905092915050565b600080612a5384600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020858154811015156128c457fe5b906000526020600020906006020160000154600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208681548110151561292257fe5b906000526020600020906006020160010154600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208781548110151561298057fe5b906000526020600020906006020160020154600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020888154811015156129de57fe5b906000526020600020906006020160030154600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002089815481101515612a3c57fe5b90600052602060002090600602016004015461173a565b9050612ac5600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002084815481101515612aa457fe5b90600052602060002090600602016005015482613e1f90919063ffffffff16565b91505092915050565b6000600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515612b2857600080fd5b612b6383838080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050613b7a565b50828260405180838380828437820191505092505050604051809103902090506000151560096000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415612c6757600160096000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7f38c05f29d828729711b9543dbd38ccdca2ad37ac7051ea119b9403c1dccb7fec338484604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a1505050565b60055481565b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515612d4f57600080fd5b60001515600d60149054906101000a900460ff161515141515612d7157600080fd5b612dad6000368080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050612848565b1515612db857600080fd5b612dc28282613ea2565b612dfe6000368080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505061348a565b5050565b600080836040518082805190602001908083835b602083101515612e3b5780518252602082019150602081019050602083039250612e16565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020905060096000826000191660001916815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1691505092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600080600080856040518082805190602001908083835b602083101515612f4e5780518252602082019150602081019050602083039250612f29565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020925060009150600090505b60078054905081101561306257600115156009600085600019166000191681526020019081526020016000206000600784815481101515612fc357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141561305557613052600183613e8690919063ffffffff16565b91505b8080600101915050612f86565b84821015935050505092915050565b61307a81612ed9565b151561308557600080fd5b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6130e981612ed9565b15156130f457600080fd5b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060078190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60606000806000806007805490506040519080825280602002602001820160405280156131f15781602001602082028038833980820191505090505b509450600093505b6007805490508410156132a4576000600e600060078781548110151561321b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555083806001019450506131f9565b60009250600091505b60078054905082101561345d576007828154811015156132c957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561339f575060001515600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b15613450578085848151811015156133b357fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555082806001019350505b81806001019250506132ad565b84600790805190602001906134739291906148a5565b5082600781613482919061492f565b505050505050565b600080826040518082805190602001908083835b6020831015156134c3578051825260208201915060208101905060208303925061349e565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209150600090505b6007805490508110156135bb576000600960008460001916600019168152602001908152602001600020600060078481548110151561353257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806001019150506134f7565b505050565b60006135e56135ce83614390565b6135d7846145b5565b613e8690919063ffffffff16565b9050919050565b60008060008060009350600092505b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490508310156139ee57600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110151561369157fe5b906000526020600020906006020160050154600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020848154811015156136ef57fe5b906000526020600020906006020160020154141561370c576139e1565b6138ea600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208481548110151561375b57fe5b906000526020600020906006020160000154600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020858154811015156137b957fe5b906000526020600020906006020160010154600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208681548110151561381757fe5b906000526020600020906006020160020154600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208781548110151561387557fe5b906000526020600020906006020160030154600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020888154811015156138d357fe5b90600052602060002090600602016004015461488a565b915061395c600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208481548110151561393b57fe5b90600052602060002090600602016005015483613e1f90919063ffffffff16565b90506000811015156139e05781600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020848154811015156139b557fe5b9060005260206000209060060201600501819055506139dd8185613e8690919063ffffffff16565b93505b5b82806001019350506135fb565b613a3f846000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e8690919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600080825114159050919050565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015613c585750828110155b1515613c6357600080fd5b826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811015613dae5782600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a360019150509392505050565b6000828211151515613e2d57fe5b818303905092915050565b600080831415613e4b5760009050613e6a565b8183029050818382811515613e5c57fe5b04141515613e6657fe5b8090505b92915050565b60008183811515613e7d57fe5b04905092915050565b60008183019050828110151515613e9957fe5b80905092915050565b80600080600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515613f1157600080fd5b613f1a82612ed9565b1515613f2557600080fd5b613f76816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e8690919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061402b81600080600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e1f90919063ffffffff16565b600080600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167f10fcc92ce3ae296b6d2813de054ab2cf2d6dd59a1eed235681bc8bf6c36a5cb7826040518082815260200191505060405180910390a25050565b82600080600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561415057600080fd5b82841115151561415f57600080fd5b61416886612ed9565b151561417357600080fd5b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060c060405190810160405280878152602001868152602001858152602001848152602001838152602001600081525090806001815401808255809150509060018203906000526020600020906006020160009091929091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a082015181600501555050506142be83600080600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e1f90919063ffffffff16565b600080600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff167f2d4afe38387afa0f5d58486162a04c4e854134e75bf89e68f2a4ad38894dedac868585856040518085815260200184815260200183815260200182815260200194505050505060405180910390a2505050505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561442757600080fd5b816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008060008060009250600091505b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905082101561487f576147ec600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110151561465d57fe5b906000526020600020906006020160000154600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020848154811015156146bb57fe5b906000526020600020906006020160010154600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208581548110151561471957fe5b906000526020600020906006020160020154600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208681548110151561477757fe5b906000526020600020906006020160030154600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020878154811015156147d557fe5b90600052602060002090600602016004015461488a565b9050614870614861600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208481548110151561484057fe5b90600052602060002090600602016005015483613e1f90919063ffffffff16565b84613e8690919063ffffffff16565b925081806001019250506145c4565b829350505050919050565b600061489a42878787878761173a565b905095945050505050565b82805482825590600052602060002090810192821561491e579160200282015b8281111561491d5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906148c5565b5b50905061492b919061495b565b5090565b81548183558181111561495657818360005260206000209182019101614955919061499e565b5b505050565b61499b91905b8082111561499757600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101614961565b5090565b90565b6149c091905b808211156149bc5760008160009055506001016149a4565b5090565b905600a165627a7a72305820c0dcfc92348d5a37eafd74a4811f533ec0fe460d035b32fd9848b55d124ae8f90029000000000000000000000000a5ae2048af02cde6720b30b7ac17c9cb26092eb20000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000004000000000000000000000000b6e44f6e5551718d1fd2adaf8a210fc4fd8e74f0000000000000000000000000b8da7ec01033007ab396d27b45253882484f93fa000000000000000000000000f28f8eb05252bc1e2a689cb8db9ee7aff5c8310c0000000000000000000000009fec6f021616e4fddd65d03faa6da1bbde9029c5

Deployed Bytecode

0x6080604052600436106101d8576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806301d8715f146101dd578063046f7da21461024057806306fdde0314610257578063095ea7b3146102e75780630b467b9b1461034c57806318160ddd1461038757806323b872dd146103b2578063246275471461043757806327e235e3146104aa5780632d06177a14610501578063313ce567146105445780633b97e856146105755780633d4ba37a146105a65780635a778cf9146105d35780635bfdab261461067c5780635c658165146106bd5780635c975abb146107345780636308ae65146107635780636b5396dc1461078e5780636c02a9311461094357806370a08231146109d35780637b61c32014610a2a5780637c2b606a14610aba5780638456cb5914610b155780638d01229514610b2c57806395d89b4114610ba1578063a4bad0ae14610c31578063a9059cbb14610c88578063aa95484514610ced578063ac18de4314610d6e578063b43716a014610db1578063cb1e438914610ddc578063dd62ed3e14610e5d578063eb1fa69014610ed4578063f2ddc77214610f1f578063f7abab9e14610f5a578063f8a34b2614610f85578063fafd6bcb14610fd2575b600080fd5b3480156101e957600080fd5b5061023e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611073565b005b34801561024c57600080fd5b50610255611254565b005b34801561026357600080fd5b5061026c611338565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102ac578082015181840152602081019050610291565b50505050905090810190601f1680156102d95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102f357600080fd5b50610332600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113da565b604051808215151515815260200191505060405180910390f35b34801561035857600080fd5b5061038560048036038101908080359060200190820180359060200191909192939192939050505061149c565b005b34801561039357600080fd5b5061039c6116bf565b6040518082815260200191505060405180910390f35b3480156103be57600080fd5b5061041d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506116c9565b604051808215151515815260200191505060405180910390f35b34801561044357600080fd5b5061049460048036038101908080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019092919050505061173a565b6040518082815260200191505060405180910390f35b3480156104b657600080fd5b506104eb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611800565b6040518082815260200191505060405180910390f35b34801561050d57600080fd5b50610542600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611818565b005b34801561055057600080fd5b506105596119a7565b604051808260ff1660ff16815260200191505060405180910390f35b34801561058157600080fd5b5061058a6119be565b604051808260ff1660ff16815260200191505060405180910390f35b3480156105b257600080fd5b506105d1600480360381019080803590602001909291905050506119d1565b005b3480156105df57600080fd5b5061067a6004803603810190808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050611b37565b005b34801561068857600080fd5b506106a760048036038101908080359060200190929190505050611c8e565b6040518082815260200191505060405180910390f35b3480156106c957600080fd5b5061071e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cf5565b6040518082815260200191505060405180910390f35b34801561074057600080fd5b50610749611d1a565b604051808215151515815260200191505060405180910390f35b34801561076f57600080fd5b50610778611d2d565b6040518082815260200191505060405180910390f35b34801561079a57600080fd5b50610941600480360381019080803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050611d3a565b005b34801561094f57600080fd5b50610958611ef5565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561099857808201518184015260208101905061097d565b50505050905090810190601f1680156109c55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156109df57600080fd5b50610a14600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f93565b6040518082815260200191505060405180910390f35b348015610a3657600080fd5b50610a3f611fc4565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a7f578082015181840152602081019050610a64565b50505050905090810190601f168015610aac5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610ac657600080fd5b50610afb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612062565b604051808215151515815260200191505060405180910390f35b348015610b2157600080fd5b50610b2a6120b8565b005b348015610b3857600080fd5b50610b9f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019092919050505061219c565b005b348015610bad57600080fd5b50610bb66122b9565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610bf6578082015181840152602081019050610bdb565b50505050905090810190601f168015610c235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610c3d57600080fd5b50610c72600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061235b565b6040518082815260200191505060405180910390f35b348015610c9457600080fd5b50610cd3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506124aa565b604051808215151515815260200191505060405180910390f35b348015610cf957600080fd5b50610d54600480360381019080803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061256c565b604051808215151515815260200191505060405180910390f35b348015610d7a57600080fd5b50610daf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061269a565b005b348015610dbd57600080fd5b50610dc661283e565b6040518082815260200191505060405180910390f35b348015610de857600080fd5b50610e43600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050612848565b604051808215151515815260200191505060405180910390f35b348015610e6957600080fd5b50610ebe600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061285d565b6040518082815260200191505060405180910390f35b348015610ee057600080fd5b50610f096004803603810190808035906020019092919080359060200190929190505050612871565b6040518082815260200191505060405180910390f35b348015610f2b57600080fd5b50610f58600480360381019080803590602001908201803590602001919091929391929390505050612ace565b005b348015610f6657600080fd5b50610f6f612cf1565b6040518082815260200191505060405180910390f35b348015610f9157600080fd5b50610fd0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612cf7565b005b348015610fde57600080fd5b50611059600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612e02565b604051808215151515815260200191505060405180910390f35b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156110cf57600080fd5b60001515600d60149054906101000a900460ff1615151415156110f157600080fd5b6110fa82612ed9565b151561110557600080fd5b61110e81612ed9565b151561111957600080fd5b6111586000368080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050600b54612f12565b151561116357600080fd5b61116c82613071565b611175816130e0565b61117d6131b5565b6111b96000368080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505061348a565b7fd220e07888d0f77e9de72a8091a24508f2e353caeb84535ef03a5d51369ee93e8282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112b057600080fd5b60011515600d60149054906101000a900460ff1615151415156112d257600080fd5b6113106000368080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050506001612f12565b151561131b57600080fd5b6000600d60146101000a81548160ff021916908315150217905550565b606060028054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113d05780601f106113a5576101008083540402835291602001916113d0565b820191906000526020600020905b8154815290600101906020018083116113b357829003601f168201915b5050505050905090565b600080600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415151561143a57600080fd5b60001515600d60149054906101000a900460ff16151514151561145c57600080fd5b61146584612ed9565b5061146f336135c0565b905082811015151561148057600080fd5b611489336135ec565b6114938484613a88565b91505092915050565b6000600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156114f657600080fd5b61153183838080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050613b7a565b50828260405180838380828437820191505092505050604051809103902090506001151560096000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141561163557600060096000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7f29bae56ce9ae5ab0e825fdf15a46c9741be5c31407c09950829f7d12f73564ad338484604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a1505050565b6000600554905090565b60008060001515600d60149054906101000a900460ff1615151415156116ee57600080fd5b6116f785612ed9565b5061170184612ed9565b5061170b856135c0565b905082811015151561171c57600080fd5b611725856135ec565b611730858585613b88565b9150509392505050565b6000806000806000898b101561175357600094506117f2565b6117668a8c613e1f90919063ffffffff16565b935061177b8787613e3890919063ffffffff16565b9250828410151561178e578794506117f2565b6117b3866117a58b8b613e1f90919063ffffffff16565b613e7090919063ffffffff16565b91506117c88785613e7090919063ffffffff16565b90506117ef896117e18385613e3890919063ffffffff16565b613e8690919063ffffffff16565b94505b505050509695505050505050565b60006020528060005260406000206000915090505481565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561187457600080fd5b60001515600d60149054906101000a900460ff16151514151561189657600080fd5b61189f81612ed9565b15156118aa57600080fd5b6118e96000368080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050600b54612f12565b15156118f457600080fd5b6118fd816130e0565b6119056131b5565b6119416000368080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505061348a565b7f3630096a7f9a158ab9fae41e86bfe31fd2202585a26a9668242672566dae028d81604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6000600360009054906101000a900460ff16905090565b600360009054906101000a900460ff1681565b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a2f57600080fd5b60001515600d60149054906101000a900460ff161515141515611a5157600080fd5b600082111515611a6057600080fd5b611a9f6000368080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050600b54612f12565b1515611aaa57600080fd5b600a54905081600a81905550611af26000368080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505061348a565b7f54f7348cdd7784993530bea78eaac4850e302c25150d79711738c4b926161dda81600a54604051808381526020018281526020019250505060405180910390a15050565b6000600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611b9157600080fd5b60001515600d60149054906101000a900460ff161515141515611bb357600080fd5b611bef6000368080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050612848565b1515611bfa57600080fd5b600090505b8251811015611c4d57611c408382815181101515611c1957fe5b906020019060200201518383815181101515611c3157fe5b90602001906020020151613ea2565b8080600101915050611bff565b611c896000368080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505061348a565b505050565b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481101515611cdc57fe5b9060005260206000209060060201600501549050919050565b6001602052816000526040600020602052806000526040600020600091509150505481565b600d60149054906101000a900460ff1681565b6000600780549050905090565b6000600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611d9457600080fd5b60001515600d60149054906101000a900460ff161515141515611db657600080fd5b611df26000368080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050612848565b1515611dfd57600080fd5b600090505b8651811015611eb057611ea38782815181101515611e1c57fe5b906020019060200201518783815181101515611e3457fe5b906020019060200201518784815181101515611e4c57fe5b906020019060200201518785815181101515611e6457fe5b906020019060200201518786815181101515611e7c57fe5b906020019060200201518787815181101515611e9457fe5b906020019060200201516140e1565b8080600101915050611e02565b611eec6000368080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505061348a565b50505050505050565b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611f8b5780601f10611f6057610100808354040283529160200191611f8b565b820191906000526020600020905b815481529060010190602001808311611f6e57829003601f168201915b505050505081565b600080611f9f8361235b565b9050611fbc611fad84614390565b82613e8690919063ffffffff16565b915050919050565b60048054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561205a5780601f1061202f5761010080835404028352916020019161205a565b820191906000526020600020905b81548152906001019060200180831161203d57829003601f168201915b505050505081565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561211457600080fd5b60001515600d60149054906101000a900460ff16151514151561213657600080fd5b6121746000368080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050506001612f12565b151561217f57600080fd5b6001600d60146101000a81548160ff021916908315150217905550565b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156121f457600080fd5b60001515600d60149054906101000a900460ff16151514151561221657600080fd5b61221f86612ed9565b5061225c6000368080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050612848565b151561226757600080fd5b6122758686868686866140e1565b6122b16000368080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505061348a565b505050505050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156123515780601f1061232657610100808354040283529160200191612351565b820191906000526020600020905b81548152906001019060200180831161233457829003601f168201915b5050505050905090565b6000806000809150600090505b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490508110156124a057612491612482600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110151561240457fe5b906000526020600020906006020160050154600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208481548110151561246257fe5b906000526020600020906006020160020154613e1f90919063ffffffff16565b83613e8690919063ffffffff16565b91508080600101915050612368565b8192505050919050565b600080600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415151561250a57600080fd5b60001515600d60149054906101000a900460ff16151514151561252c57600080fd5b61253584612ed9565b5061253f336135c0565b905082811015151561255057600080fd5b612559336135ec565b61256384846143d8565b91505092915050565b600080600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156125c757600080fd5b826040518082805190602001908083835b6020831015156125fd57805182526020820191506020810190506020830392506125d8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020905060096000826000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16915050919050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156126f657600080fd5b60001515600d60149054906101000a900460ff16151514151561271857600080fd5b61272181612ed9565b151561272c57600080fd5b61276b6000368080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050600b54612f12565b151561277657600080fd5b600b5460078054905011151561278b57600080fd5b61279481613071565b61279c6131b5565b6127d86000368080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505061348a565b7f1e25ed4cabec84d314dc176241019653f237da01f2bdd3a10cb0f38b33da676381604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6000600a54905090565b600061285682600a54612f12565b9050919050565b6000612869838361452e565b905092915050565b600080612a5384600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020858154811015156128c457fe5b906000526020600020906006020160000154600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208681548110151561292257fe5b906000526020600020906006020160010154600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208781548110151561298057fe5b906000526020600020906006020160020154600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020888154811015156129de57fe5b906000526020600020906006020160030154600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002089815481101515612a3c57fe5b90600052602060002090600602016004015461173a565b9050612ac5600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002084815481101515612aa457fe5b90600052602060002090600602016005015482613e1f90919063ffffffff16565b91505092915050565b6000600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515612b2857600080fd5b612b6383838080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050613b7a565b50828260405180838380828437820191505092505050604051809103902090506000151560096000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415612c6757600160096000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7f38c05f29d828729711b9543dbd38ccdca2ad37ac7051ea119b9403c1dccb7fec338484604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a1505050565b60055481565b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515612d4f57600080fd5b60001515600d60149054906101000a900460ff161515141515612d7157600080fd5b612dad6000368080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050612848565b1515612db857600080fd5b612dc28282613ea2565b612dfe6000368080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505061348a565b5050565b600080836040518082805190602001908083835b602083101515612e3b5780518252602082019150602081019050602083039250612e16565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020905060096000826000191660001916815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1691505092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600080600080856040518082805190602001908083835b602083101515612f4e5780518252602082019150602081019050602083039250612f29565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020925060009150600090505b60078054905081101561306257600115156009600085600019166000191681526020019081526020016000206000600784815481101515612fc357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141561305557613052600183613e8690919063ffffffff16565b91505b8080600101915050612f86565b84821015935050505092915050565b61307a81612ed9565b151561308557600080fd5b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6130e981612ed9565b15156130f457600080fd5b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060078190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60606000806000806007805490506040519080825280602002602001820160405280156131f15781602001602082028038833980820191505090505b509450600093505b6007805490508410156132a4576000600e600060078781548110151561321b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555083806001019450506131f9565b60009250600091505b60078054905082101561345d576007828154811015156132c957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561339f575060001515600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b15613450578085848151811015156133b357fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555082806001019350505b81806001019250506132ad565b84600790805190602001906134739291906148a5565b5082600781613482919061492f565b505050505050565b600080826040518082805190602001908083835b6020831015156134c3578051825260208201915060208101905060208303925061349e565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209150600090505b6007805490508110156135bb576000600960008460001916600019168152602001908152602001600020600060078481548110151561353257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806001019150506134f7565b505050565b60006135e56135ce83614390565b6135d7846145b5565b613e8690919063ffffffff16565b9050919050565b60008060008060009350600092505b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490508310156139ee57600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110151561369157fe5b906000526020600020906006020160050154600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020848154811015156136ef57fe5b906000526020600020906006020160020154141561370c576139e1565b6138ea600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208481548110151561375b57fe5b906000526020600020906006020160000154600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020858154811015156137b957fe5b906000526020600020906006020160010154600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208681548110151561381757fe5b906000526020600020906006020160020154600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208781548110151561387557fe5b906000526020600020906006020160030154600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020888154811015156138d357fe5b90600052602060002090600602016004015461488a565b915061395c600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208481548110151561393b57fe5b90600052602060002090600602016005015483613e1f90919063ffffffff16565b90506000811015156139e05781600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020848154811015156139b557fe5b9060005260206000209060060201600501819055506139dd8185613e8690919063ffffffff16565b93505b5b82806001019350506135fb565b613a3f846000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e8690919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600080825114159050919050565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015613c585750828110155b1515613c6357600080fd5b826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811015613dae5782600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a360019150509392505050565b6000828211151515613e2d57fe5b818303905092915050565b600080831415613e4b5760009050613e6a565b8183029050818382811515613e5c57fe5b04141515613e6657fe5b8090505b92915050565b60008183811515613e7d57fe5b04905092915050565b60008183019050828110151515613e9957fe5b80905092915050565b80600080600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515613f1157600080fd5b613f1a82612ed9565b1515613f2557600080fd5b613f76816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e8690919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061402b81600080600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e1f90919063ffffffff16565b600080600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167f10fcc92ce3ae296b6d2813de054ab2cf2d6dd59a1eed235681bc8bf6c36a5cb7826040518082815260200191505060405180910390a25050565b82600080600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561415057600080fd5b82841115151561415f57600080fd5b61416886612ed9565b151561417357600080fd5b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060c060405190810160405280878152602001868152602001858152602001848152602001838152602001600081525090806001815401808255809150509060018203906000526020600020906006020160009091929091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a082015181600501555050506142be83600080600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e1f90919063ffffffff16565b600080600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff167f2d4afe38387afa0f5d58486162a04c4e854134e75bf89e68f2a4ad38894dedac868585856040518085815260200184815260200183815260200182815260200194505050505060405180910390a2505050505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561442757600080fd5b816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008060008060009250600091505b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905082101561487f576147ec600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110151561465d57fe5b906000526020600020906006020160000154600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020848154811015156146bb57fe5b906000526020600020906006020160010154600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208581548110151561471957fe5b906000526020600020906006020160020154600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208681548110151561477757fe5b906000526020600020906006020160030154600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020878154811015156147d557fe5b90600052602060002090600602016004015461488a565b9050614870614861600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208481548110151561484057fe5b90600052602060002090600602016005015483613e1f90919063ffffffff16565b84613e8690919063ffffffff16565b925081806001019250506145c4565b829350505050919050565b600061489a42878787878761173a565b905095945050505050565b82805482825590600052602060002090810192821561491e579160200282015b8281111561491d5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906148c5565b5b50905061492b919061495b565b5090565b81548183558181111561495657818360005260206000209182019101614955919061499e565b5b505050565b61499b91905b8082111561499757600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101614961565b5090565b90565b6149c091905b808211156149bc5760008160009055506001016149a4565b5090565b905600a165627a7a72305820c0dcfc92348d5a37eafd74a4811f533ec0fe460d035b32fd9848b55d124ae8f90029

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

000000000000000000000000a5ae2048af02cde6720b30b7ac17c9cb26092eb20000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000004000000000000000000000000b6e44f6e5551718d1fd2adaf8a210fc4fd8e74f0000000000000000000000000b8da7ec01033007ab396d27b45253882484f93fa000000000000000000000000f28f8eb05252bc1e2a689cb8db9ee7aff5c8310c0000000000000000000000009fec6f021616e4fddd65d03faa6da1bbde9029c5

-----Decoded View---------------
Arg [0] : _master (address): 0xa5aE2048Af02CDE6720b30B7aC17C9cb26092eB2
Arg [1] : _managers (address[]): 0xB6e44f6E5551718D1fd2AdAf8a210Fc4Fd8E74F0,0xB8DA7ec01033007ab396d27b45253882484F93fa,0xF28f8EB05252bc1E2A689CB8dB9eE7AFf5c8310c,0x9fEc6F021616e4FDDd65d03fAA6da1BBde9029C5
Arg [2] : _majorityThreshold (uint256): 3
Arg [3] : _managementThreshold (uint256): 1

-----Encoded View---------------
9 Constructor Arguments found :
Arg [0] : 000000000000000000000000a5ae2048af02cde6720b30b7ac17c9cb26092eb2
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [5] : 000000000000000000000000b6e44f6e5551718d1fd2adaf8a210fc4fd8e74f0
Arg [6] : 000000000000000000000000b8da7ec01033007ab396d27b45253882484f93fa
Arg [7] : 000000000000000000000000f28f8eb05252bc1e2a689cb8db9ee7aff5c8310c
Arg [8] : 0000000000000000000000009fec6f021616e4fddd65d03faa6da1bbde9029c5


Swarm Source

bzzr://c0dcfc92348d5a37eafd74a4811f533ec0fe460d035b32fd9848b55d124ae8f9

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
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.