ETH Price: $3,446.37 (-2.55%)
Gas: 3 Gwei

Contract

0x995020804986274763dF9deb0296B754f2659cA1
 
Transaction Hash
Method
Block
From
To
Approve202011492024-06-30 1:13:2322 days ago1719710003IN
Ether Tulips: Old ETHT Token
0 ETH0.000080662.59710782
Approve202011442024-06-30 1:12:2322 days ago1719709943IN
Ether Tulips: Old ETHT Token
0 ETH0.000072882.57882162
Approve202011392024-06-30 1:11:2322 days ago1719709883IN
Ether Tulips: Old ETHT Token
0 ETH0.000122442.54245896
Approve201362272024-06-20 23:30:4731 days ago1718926247IN
Ether Tulips: Old ETHT Token
0 ETH0.000121984.31645734
Approve200977722024-06-15 14:25:1137 days ago1718461511IN
Ether Tulips: Old ETHT Token
0 ETH0.000152965.41270487
Approve199047992024-05-19 15:12:4764 days ago1716131567IN
Ether Tulips: Old ETHT Token
0 ETH0.000128034.53061445
Approve198696982024-05-14 17:24:5969 days ago1715707499IN
Ether Tulips: Old ETHT Token
0 ETH0.000413648.58877232
Approve198369442024-05-10 3:26:1173 days ago1715311571IN
Ether Tulips: Old ETHT Token
0 ETH0.000084783
Approve198357512024-05-09 23:25:3573 days ago1715297135IN
Ether Tulips: Old ETHT Token
0 ETH0.00017563.64615353
Approve198357462024-05-09 23:24:3573 days ago1715297075IN
Ether Tulips: Old ETHT Token
0 ETH0.00018773.89753305
Approve197503092024-04-28 0:41:4785 days ago1714264907IN
Ether Tulips: Old ETHT Token
0 ETH0.000136694.83705365
Approve197130712024-04-22 19:37:3591 days ago1713814655IN
Ether Tulips: Old ETHT Token
0 ETH0.0002906910.28618756
Transfer196669512024-04-16 8:47:5997 days ago1713257279IN
Ether Tulips: Old ETHT Token
0 ETH0.0011023413.90380078
Transfer196598072024-04-15 8:45:1198 days ago1713170711IN
Ether Tulips: Old ETHT Token
0 ETH0.0002802111.40745938
Transfer196598002024-04-15 8:43:4798 days ago1713170627IN
Ether Tulips: Old ETHT Token
0 ETH0.0002684910.93045339
Transfer196597722024-04-15 8:38:1198 days ago1713170291IN
Ether Tulips: Old ETHT Token
0 ETH0.0003067112.4862494
Approve196535782024-04-14 11:49:1199 days ago1713095351IN
Ether Tulips: Old ETHT Token
0 ETH0.000275379.74401619
Approve196464382024-04-13 11:45:35100 days ago1713008735IN
Ether Tulips: Old ETHT Token
0 ETH0.0002936710.39579574
Approve195940872024-04-06 3:45:11107 days ago1712375111IN
Ether Tulips: Old ETHT Token
0 ETH0.0005344711.09760171
Approve195186132024-03-26 12:27:47118 days ago1711456067IN
Ether Tulips: Old ETHT Token
0 ETH0.0007414826.23705014
Approve195061312024-03-24 18:19:35120 days ago1711304375IN
Ether Tulips: Old ETHT Token
0 ETH0.0007420626.2577112
Approve195061172024-03-24 18:16:35120 days ago1711304195IN
Ether Tulips: Old ETHT Token
0 ETH0.0006273222.19750703
Approve195061112024-03-24 18:15:23120 days ago1711304123IN
Ether Tulips: Old ETHT Token
0 ETH0.000517.69224005
Approve194996442024-03-23 20:22:35121 days ago1711225355IN
Ether Tulips: Old ETHT Token
0 ETH0.000775816.10865641
Approve193817762024-03-07 7:23:23137 days ago1709796203IN
Ether Tulips: Old ETHT Token
0 ETH0.0015238553.9207652
View all transactions

Latest 16 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
143438462022-03-08 3:41:55867 days ago1646710915
Ether Tulips: Old ETHT Token
1.51194696 ETH
133321402021-10-01 7:37:581025 days ago1633073878
Ether Tulips: Old ETHT Token
0.5 ETH
131429222021-09-02 0:08:041054 days ago1630541284
Ether Tulips: Old ETHT Token
1 ETH
131381292021-09-01 6:14:391055 days ago1630476879
Ether Tulips: Old ETHT Token
1 ETH
131335342021-08-31 13:21:431056 days ago1630416103
Ether Tulips: Old ETHT Token
0.5 ETH
131289852021-08-30 20:21:331057 days ago1630354893
Ether Tulips: Old ETHT Token
1.5 ETH
131074982021-08-27 12:46:001060 days ago1630068360
Ether Tulips: Old ETHT Token
1.2808463 ETH
131032712021-08-26 20:48:591061 days ago1630010939
Ether Tulips: Old ETHT Token
7.34206135 ETH
131032572021-08-26 20:45:431061 days ago1630010743
Ether Tulips: Old ETHT Token
6.43361515 ETH
131031912021-08-26 20:28:501061 days ago1630009730
Ether Tulips: Old ETHT Token
7.14966247 ETH
72394302019-02-19 7:29:231980 days ago1550561363
Ether Tulips: Old ETHT Token
3.78020946 ETH
69587522018-12-26 22:49:222035 days ago1545864562
Ether Tulips: Old ETHT Token
89.99 ETH
69296832018-12-22 1:02:432039 days ago1545440563
Ether Tulips: Old ETHT Token
0.01 ETH
53559872018-03-31 16:53:112305 days ago1522515191
Ether Tulips: Old ETHT Token
2.28020946 ETH
51852092018-03-02 21:12:592334 days ago1520025179
Ether Tulips: Old ETHT Token
0.80209465 ETH
49503792018-01-22 4:45:482373 days ago1516596348
Ether Tulips: Old ETHT Token
0.03 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TulipCore

Compiler Version
v0.4.18+commit.9cf6e910

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-01-22
*/

pragma solidity ^0.4.18;

contract AccessControl {
  address public owner;
  address[] public admins;

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

  modifier onlyAdmins {
    bool found = false;

    for (uint i = 0; i < admins.length; i++) {
      if (admins[i] == msg.sender) {
        found = true;
        break;
      }
    }

    require(found);
    _;
  }

  function addAdmin(address _adminAddress) public onlyOwner {
    admins.push(_adminAddress);
  }
}

contract ERC721 {
    // Required Functions
    function implementsERC721() public pure returns (bool);
    function totalSupply() public view returns (uint256);
    function balanceOf(address _owner) public view returns (uint256);
    function ownerOf(uint256 _tokenId) public view returns (address);
    function transfer(address _to, uint _tokenId) public;
    function approve(address _to, uint256 _tokenId) public;
    function transferFrom(address _from, address _to, uint256 _tokenId) public;

    // Optional Functions
    function name() public pure returns (string);
    function symbol() public pure returns (string);
    function tokenOfOwnerByIndex(address _owner, uint256 _index) public view returns (uint256);
    // function tokenMetadata(uint256 _tokenId) public view returns (string infoUrl);

    // Required Events
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
}

contract TulipBase is AccessControl {
  struct Tulip {
    uint256 genes;
    uint256 createTime;
    bytes32 name;
  }

  Tulip[] public tulips;
  mapping (uint256 => address) public tulipToOwner;
  mapping (address => uint256[]) internal ownerToTulips;
  mapping (uint256 => address) public tulipToApproved;

  function _generateTulip(bytes32 _name, address _owner, uint16 _gen) internal returns (uint256 id) {
    id = tulips.length;
    uint256 createTime = block.timestamp;

    // Insecure RNG, but good enough for our purposes
    uint256 seed = uint(block.blockhash(block.number - 1)) + uint(block.blockhash(block.number - 100))
      + uint(block.coinbase) + createTime + id;
    uint256 traits = uint256(keccak256(seed));
    // last 16 bits are generation number
    uint256 genes = traits / 0x10000 * 0x10000 + _gen;

    Tulip memory newTulip = Tulip(genes, createTime, _name);
    tulips.push(newTulip);
    tulipToOwner[id] = _owner;
    ownerToTulips[_owner].push(id);
  }

  function _transferTulip(address _from, address _to, uint256 _id) internal {
    tulipToOwner[_id] = _to;
    ownerToTulips[_to].push(_id);
    tulipToApproved[_id] = address(0);

    uint256[] storage fromTulips = ownerToTulips[_from];
    for (uint256 i = 0; i < fromTulips.length; i++) {
      if (fromTulips[i] == _id) {
        break;
      }
    }
    assert(i < fromTulips.length);

    fromTulips[i] = fromTulips[fromTulips.length - 1];
    delete fromTulips[fromTulips.length - 1];
    fromTulips.length--;
  }
}

contract TulipToken is TulipBase, ERC721 {

  function implementsERC721() public pure returns (bool) {
    return true;
  }

  function totalSupply() public view returns (uint256) {
    return tulips.length;
  }

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

  function ownerOf(uint256 _tokenId) public view returns (address owner) {
    owner = tulipToOwner[_tokenId];
    require(owner != address(0));
  }

  function transfer(address _to, uint256 _tokenId) public {
    require(_to != address(0));
    require(tulipToOwner[_tokenId] == msg.sender);

    _transferTulip(msg.sender, _to, _tokenId);
    Transfer(msg.sender, _to, _tokenId);
  }

  function approve(address _to, uint256 _tokenId) public {
    require(tulipToOwner[_tokenId] == msg.sender);
    tulipToApproved[_tokenId] = _to;

    Approval(msg.sender, _to, _tokenId);
  }

  function transferFrom(address _from, address _to, uint256 _tokenId) public {
    require(_to != address(0));
    require(tulipToApproved[_tokenId] == msg.sender);
    require(tulipToOwner[_tokenId] == _from);

    _transferTulip(_from, _to, _tokenId);
    Transfer(_from, _to, _tokenId);
  }

  function name() public pure returns (string) {
    return "Ether Tulips";
  }

  function symbol() public pure returns (string) {
    return "ETHT";
  }

  function tokenOfOwnerByIndex(address _owner, uint256 _index) public view returns (uint256) {
    require(_index < ownerToTulips[_owner].length);
    return ownerToTulips[_owner][_index];
  }

  // function tokenMetadata(uint256 _tokenId) public view returns (string infoUrl);
}

contract TulipSales is TulipToken {
  event Purchase(address indexed owner, uint256 unitPrice, uint32 amount);

  uint128 public increasePeriod = 6000; // around 1 day
  uint128 public startBlock;
  uint256[] public genToStartPrice;
  uint256[23] internal exp15;

  function TulipSales() public {
    startBlock = uint128(block.number);
    genToStartPrice.push(10 finney);
    _setExp15();
  }

  // The price increases from the starting price at a rate of 1.5x a day, until
  // a max of 10000x the original price. For gen 0, this corresponds to a cap
  // of 100 ETH.
  function price(uint16 _gen) public view returns (uint256) {
    require(_gen < genToStartPrice.length);

    uint128 periodsElapsed = (uint128(block.number) - startBlock) / increasePeriod;
    return _priceAtPeriod(periodsElapsed, _gen);
  }

  function nextPrice(uint16 _gen) public view returns (uint256 futurePrice, uint128 blocksRemaining, uint128 changeBlock) {
    require(_gen < genToStartPrice.length);

    uint128 periodsElapsed = (uint128(block.number) - startBlock) / increasePeriod;
    futurePrice = _priceAtPeriod(periodsElapsed + 1, _gen);
    blocksRemaining = increasePeriod - (uint128(block.number) - startBlock) % increasePeriod;
    changeBlock = uint128(block.number) + blocksRemaining;
  }

  function buyTulip(bytes32 _name, uint16 _gen) public payable returns (uint256 id) {
    require(_gen < genToStartPrice.length);
    require(msg.value == price(_gen));

    id = _generateTulip(_name, msg.sender, _gen);
    Transfer(address(0), msg.sender, id);
    Purchase(msg.sender, price(_gen), 1);
  }

  function buyTulips(uint32 _amount, uint16 _gen) public payable returns (uint256 firstId) {
    require(_gen < genToStartPrice.length);
    require(msg.value == price(_gen) * _amount);
    require(_amount <= 100);

    for (uint32 i = 0; i < _amount; i++) {
      uint256 id = _generateTulip("", msg.sender, _gen);
      Transfer(address(0), msg.sender, id);

      if (i == 0) {
        firstId = id;
      }
    }
    Purchase(msg.sender, price(_gen), _amount);
  }

  function renameTulip(uint256 _id, bytes32 _name) public {
    require(tulipToOwner[_id] == msg.sender);

    tulips[_id].name = _name;
  }

  function addGen(uint256 _startPrice) public onlyAdmins {
    require(genToStartPrice.length < 65535);

    genToStartPrice.push(_startPrice);
  }

  function withdrawBalance(uint256 _amount) external onlyAdmins {
    require(_amount <= this.balance);

    msg.sender.transfer(_amount);
  }

  function _priceAtPeriod(uint128 _period, uint16 _gen) internal view returns (uint256) {
    if (_period >= exp15.length) {
      return genToStartPrice[_gen] * 10000;
    } else {
      return genToStartPrice[_gen] * exp15[_period] / 1 ether;
    }
  }

  // Set 1 ETH * 1.5^i for 0 <= i <= 22 with 3 significant figures
  function _setExp15() internal {
    exp15 = [
      1000 finney,
      1500 finney,
      2250 finney,
      3380 finney,
      5060 finney,
      7590 finney,
      11400 finney,
      17100 finney,
      25600 finney,
      38400 finney,
      57700 finney,
      86500 finney,
      130 ether,
      195 ether,
      292 ether,
      438 ether,
      657 ether,
      985 ether,
      1480 ether,
      2220 ether,
      3330 ether,
      4990 ether,
      7480 ether
    ];
  }
}

contract TulipCore is TulipSales {
  event ContractUpgrade(address newContract);
  event MaintenanceUpdate(bool maintenance);

  bool public underMaintenance = false;
  bool public deprecated = false;
  address public newContractAddress;

  function TulipCore() public {
    owner = msg.sender;
  }

  function getTulip(uint256 _id) public view returns (
    uint256 genes,
    uint256 createTime,
    string name
  ) {
    Tulip storage tulip = tulips[_id];
    genes = tulip.genes;
    createTime = tulip.createTime;

    bytes memory byteArray = new bytes(32);
    for (uint8 i = 0; i < 32; i++) {
      byteArray[i] = tulip.name[i];
    }
    name = string(byteArray);
  }

  function myTulips() public view returns (uint256[]) {
    uint256[] memory tulipsMemory = ownerToTulips[msg.sender];
    return tulipsMemory;
  }

  function myTulipsBatched(uint256 _startIndex, uint16 _maxAmount) public view returns (
    uint256[] tulipIds,
    uint256 amountRemaining
  ) {
    uint256[] storage tulipArr = ownerToTulips[msg.sender];
    int256 j = int256(tulipArr.length) - 1 - int256(_startIndex);
    uint256 amount = _maxAmount;

    if (j < 0) {
      return (
        new uint256[](0),
        0
      );
    } else if (j + 1 < _maxAmount) {
      amount = uint256(j + 1);
    }
    uint256[] memory resultIds = new uint256[](amount);

    for (uint16 i = 0; i < amount; i++) {
      resultIds[i] = tulipArr[uint256(j)];
      j--;
    }

    return (
      resultIds,
      uint256(j+1)
    );
  }

  function setMaintenance(bool _underMaintenance) public onlyAdmins {
    underMaintenance = _underMaintenance;
    MaintenanceUpdate(underMaintenance);
  }

  function upgradeContract(address _newContractAddress) public onlyAdmins {
    newContractAddress = _newContractAddress;
    deprecated = true;
    ContractUpgrade(_newContractAddress);
  }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"myTulips","outputs":[{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"deprecated","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"implementsERC721","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"admins","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","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":"_tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"uint256"},{"name":"_name","type":"bytes32"}],"name":"renameTulip","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"tulipToOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"genToStartPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"startBlock","outputs":[{"name":"","type":"uint128"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"underMaintenance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_underMaintenance","type":"bool"}],"name":"setMaintenance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"name":"owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"newContractAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_adminAddress","type":"address"}],"name":"addAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"tulipToApproved","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"_startIndex","type":"uint256"},{"name":"_maxAmount","type":"uint16"}],"name":"myTulipsBatched","outputs":[{"name":"tulipIds","type":"uint256[]"},{"name":"amountRemaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_startPrice","type":"uint256"}],"name":"addGen","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"tulips","outputs":[{"name":"genes","type":"uint256"},{"name":"createTime","type":"uint256"},{"name":"name","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint32"},{"name":"_gen","type":"uint16"}],"name":"buyTulips","outputs":[{"name":"firstId","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"_gen","type":"uint16"}],"name":"price","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"increasePeriod","outputs":[{"name":"","type":"uint128"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"withdrawBalance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_gen","type":"uint16"}],"name":"nextPrice","outputs":[{"name":"futurePrice","type":"uint256"},{"name":"blocksRemaining","type":"uint128"},{"name":"changeBlock","type":"uint128"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newContractAddress","type":"address"}],"name":"upgradeContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"bytes32"},{"name":"_gen","type":"uint16"}],"name":"buyTulip","outputs":[{"name":"id","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"_id","type":"uint256"}],"name":"getTulip","outputs":[{"name":"genes","type":"uint256"},{"name":"createTime","type":"uint256"},{"name":"name","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newContract","type":"address"}],"name":"ContractUpgrade","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"maintenance","type":"bool"}],"name":"MaintenanceUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":false,"name":"unitPrice","type":"uint256"},{"indexed":false,"name":"amount","type":"uint32"}],"name":"Purchase","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":true,"name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"approved","type":"address"},{"indexed":true,"name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"}]

6060604052611770600660006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506000601f60006101000a81548160ff0219169083151502179055506000601f60016101000a81548160ff02191690831515021790555034156200008157600080fd5b43600660106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060078054806001018281620000d09190620003d7565b91600052602060002090016000662386f26fc10000909190915055506200010a6200015064010000000002620026b0176401000000009004565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000481565b6102e060405190810160405280670de0b6b3a764000069ffffffffffffffffffff1681526020016714d1120d7b16000069ffffffffffffffffffff168152602001671f399b1438a1000069ffffffffffffffffffff168152602001672ee82c178cd2000069ffffffffffffffffffff168152602001674638bb30e37a000069ffffffffffffffffffff16815260200167695518c95537000069ffffffffffffffffffff168152602001679e34ef99a774000069ffffffffffffffffffff16815260200167ed4f67667b2e000069ffffffffffffffffffff16815260200168016345785d8a00000069ffffffffffffffffffff168152602001680214e8348c4f00000069ffffffffffffffffffff168152602001680320bf944ad40a000069ffffffffffffffffffff1681526020016804b06dbbb40f4a000069ffffffffffffffffffff16815260200168070c1cc73b00c8000069ffffffffffffffffffff168152602001680a922b2ad8812c000069ffffffffffffffffffff168152602001680fd45064eaee10000069ffffffffffffffffffff1681526020016817be7897606518000069ffffffffffffffffffff16815260200168239db4e31097a4000069ffffffffffffffffffff1681526020016835659ef93f0fc4000069ffffffffffffffffffff16815260200168503b203e9fba20000069ffffffffffffffffffff168152602001687858b05def9730000069ffffffffffffffffffff16815260200168b485088ce762c8000069ffffffffffffffffffff16815260200169010e822941d8cf38000069ffffffffffffffffffff1681526020016901957dda5142f1e0000069ffffffffffffffffffff168152506008906017620003d492919062000406565b50565b815481835581811511620004015781836000526020600020918201910162000400919062000459565b5b505050565b826017810192821562000446579160200282015b8281111562000445578251829069ffffffffffffffffffff169055916020019190600101906200041a565b5b50905062000455919062000459565b5090565b6200047e91905b808211156200047a57600081600090555060010162000460565b5090565b90565b6129af80620004916000396000f3006060604052600436106101ac576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806301ebebf2146101b157806306fdde031461021b578063095ea7b3146102a95780630e136b19146102eb5780631051db341461031857806314bfd6d01461034557806318160ddd146103a857806323b872dd146103d157806326605772146104325780632f745c591461046257806336e4e8fd146104b857806345f28e771461051b57806348cd4cb1146105525780635a41217e1461059f578063612f2f37146105cc5780636352211e146105f15780636af04a571461065457806370480275146106a957806370a08231146106e257806372a0c16e1461072f5780638da5cb5b1461079257806395d89b41146107e75780639d5708ff14610875578063a9059cbb14610901578063aed2e7d414610943578063af794a4f14610966578063b7c9da33146109b3578063b95bb4f8146109f2578063d63e6ce714610a2d578063da76d5cd14610a7a578063df0c7a5514610a9d578063eb2c022314610b2e578063ee0f809e14610b67578063fecd348614610ba4575b600080fd5b34156101bc57600080fd5b6101c4610c4e565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156102075780820151818401526020810190506101ec565b505050509050019250505060405180910390f35b341561022657600080fd5b61022e610cf5565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561026e578082015181840152602081019050610253565b50505050905090810190601f16801561029b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156102b457600080fd5b6102e9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610d38565b005b34156102f657600080fd5b6102fe610e56565b604051808215151515815260200191505060405180910390f35b341561032357600080fd5b61032b610e69565b604051808215151515815260200191505060405180910390f35b341561035057600080fd5b6103666004808035906020019091905050610e72565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103b357600080fd5b6103bb610eb1565b6040518082815260200191505060405180910390f35b34156103dc57600080fd5b610430600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610ebe565b005b341561043d57600080fd5b61046060048080359060200190919080356000191690602001909190505061103f565b005b341561046d57600080fd5b6104a2600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506110d9565b6040518082815260200191505060405180910390f35b34156104c357600080fd5b6104d9600480803590602001909190505061118b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561052657600080fd5b61053c60048080359060200190919050506111be565b6040518082815260200191505060405180910390f35b341561055d57600080fd5b6105656111e2565b60405180826fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156105aa57600080fd5b6105b2611204565b604051808215151515815260200191505060405180910390f35b34156105d757600080fd5b6105ef60048080351515906020019091905050611217565b005b34156105fc57600080fd5b6106126004808035906020019091905050611329565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561065f57600080fd5b6106676113a2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156106b457600080fd5b6106e0600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506113c8565b005b34156106ed57600080fd5b610719600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611489565b6040518082815260200191505060405180910390f35b341561073a57600080fd5b61075060048080359060200190919050506114d5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561079d57600080fd5b6107a5611508565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156107f257600080fd5b6107fa61152d565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561083a57808201518184015260208101905061081f565b50505050905090810190601f1680156108675780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561088057600080fd5b6108a3600480803590602001909190803561ffff16906020019091905050611570565b6040518080602001838152602001828103825284818151815260200191508051906020019060200280838360005b838110156108ec5780820151818401526020810190506108d1565b50505050905001935050505060405180910390f35b341561090c57600080fd5b610941600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506116c4565b005b341561094e57600080fd5b61096460048080359060200190919050506117d7565b005b341561097157600080fd5b61098760048080359060200190919050506118c3565b604051808481526020018381526020018260001916600019168152602001935050505060405180910390f35b6109dc600480803563ffffffff1690602001909190803561ffff169060200190919050506118fc565b6040518082815260200191505060405180910390f35b34156109fd57600080fd5b610a17600480803561ffff16906020019091905050611a61565b6040518082815260200191505060405180910390f35b3415610a3857600080fd5b610a40611afd565b60405180826fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610a8557600080fd5b610a9b6004808035906020019091905050611b1f565b005b3415610aa857600080fd5b610ac2600480803561ffff16906020019091905050611c33565b60405180848152602001836fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152602001826fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152602001935050505060405180910390f35b3415610b3957600080fd5b610b65600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611d6c565b005b610b8e60048080356000191690602001909190803561ffff16906020019091905050611ed9565b6040518082815260200191505060405180910390f35b3415610baf57600080fd5b610bc56004808035906020019091905050611fdc565b6040518084815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610c11578082015181840152602081019050610bf6565b50505050905090810190601f168015610c3e5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b610c56612569565b610c5e612569565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015610ce757602002820191906000526020600020905b815481526020019060010190808311610cd3575b505050505090508091505090565b610cfd61257d565b6040805190810160405280600c81526020017f45746865722054756c6970730000000000000000000000000000000000000000815250905090565b3373ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610da557600080fd5b816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b601f60019054906101000a900460ff1681565b60006001905090565b600181815481101515610e8157fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600280549050905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610efa57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610f6757600080fd5b8273ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610fd457600080fd5b610fdf8383836120ea565b808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b3373ffffffffffffffffffffffffffffffffffffffff166003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156110ac57600080fd5b806002838154811015156110bc57fe5b906000526020600020906003020160020181600019169055505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490508210151561112b57600080fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110151561117757fe5b906000526020600020900154905092915050565b60036020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6007818154811015156111cd57fe5b90600052602060002090016000915090505481565b600660109054906101000a90046fffffffffffffffffffffffffffffffff1681565b601f60009054906101000a900460ff1681565b60008060009150600090505b6001805490508110156112b4573373ffffffffffffffffffffffffffffffffffffffff1660018281548110151561125657fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156112a757600191506112b4565b8080600101915050611223565b8115156112c057600080fd5b82601f60006101000a81548160ff0219169083151502179055507fa74f277a6df77bc82a78197c46ad925095d31e26f4860f2273e09a82a66c06af601f60009054906101000a900460ff16604051808215151515815260200191505060405180910390a1505050565b60006003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561139d57600080fd5b919050565b601f60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561142357600080fd5b600180548060010182816114379190612591565b9160005260206000209001600083909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61153561257d565b6040805190810160405280600481526020017f4554485400000000000000000000000000000000000000000000000000000000815250905090565b611578612569565b600080600080611586612569565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002094508860018680549050030393508761ffff16925060008412156116165760006040518059106115f45750595b90808252806020026020018201604052506000819150809050965096506116b8565b8761ffff1660018501121561162c576001840192505b8260405180591061163a5750595b90808252806020026020018201604052509150600090505b828161ffff1610156116ae57848481548110151561166c57fe5b906000526020600020900154828261ffff1681518110151561168a57fe5b90602001906020020181815250508380600190039450508080600101915050611652565b8160018501965096505b50505050509250929050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561170057600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561176d57600080fd5b6117783383836120ea565b808273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b60008060009150600090505b600180549050811015611874573373ffffffffffffffffffffffffffffffffffffffff1660018281548110151561181657fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156118675760019150611874565b80806001019150506117e3565b81151561188057600080fd5b61ffff60078054905010151561189557600080fd5b600780548060010182816118a991906125bd565b916000526020600020900160008590919091505550505050565b6002818154811015156118d257fe5b90600052602060002090600302016000915090508060000154908060010154908060020154905083565b60008060006007805490508461ffff1610151561191857600080fd5b8463ffffffff1661192885611a61565b023414151561193657600080fd5b60648563ffffffff161115151561194c57600080fd5b600091505b8463ffffffff168263ffffffff1610156119ef576119716000338661230a565b9050803373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a460008263ffffffff1614156119e2578092505b8180600101925050611951565b3373ffffffffffffffffffffffffffffffffffffffff167f433740f8fe758f5e94cce874551487537d73ef9c50141dd28124b9f7ea331395611a3086611a61565b87604051808381526020018263ffffffff1663ffffffff1681526020019250505060405180910390a2505092915050565b6000806007805490508361ffff16101515611a7b57600080fd5b600660009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16600660109054906101000a90046fffffffffffffffffffffffffffffffff1643036fffffffffffffffffffffffffffffffff16811515611ae857fe5b049050611af581846124c2565b915050919050565b600660009054906101000a90046fffffffffffffffffffffffffffffffff1681565b60008060009150600090505b600180549050811015611bbc573373ffffffffffffffffffffffffffffffffffffffff16600182815481101515611b5e57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611baf5760019150611bbc565b8080600101915050611b2b565b811515611bc857600080fd5b3073ffffffffffffffffffffffffffffffffffffffff16318311151515611bee57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f193505050501515611c2e57600080fd5b505050565b6000806000806007805490508561ffff16101515611c5057600080fd5b600660009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16600660109054906101000a90046fffffffffffffffffffffffffffffffff1643036fffffffffffffffffffffffffffffffff16811515611cbd57fe5b049050611ccd60018201866124c2565b9350600660009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16600660109054906101000a90046fffffffffffffffffffffffffffffffff1643036fffffffffffffffffffffffffffffffff16811515611d3c57fe5b06600660009054906101000a90046fffffffffffffffffffffffffffffffff160392508243019150509193909250565b60008060009150600090505b600180549050811015611e09573373ffffffffffffffffffffffffffffffffffffffff16600182815481101515611dab57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611dfc5760019150611e09565b8080600101915050611d78565b811515611e1557600080fd5b82601f60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601f60016101000a81548160ff0219169083151502179055507f450db8da6efbe9c22f2347f7c2021231df1fc58d3ae9a2fa75d39fa44619930583604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1505050565b60006007805490508261ffff16101515611ef257600080fd5b611efb82611a61565b34141515611f0857600080fd5b611f1383338461230a565b9050803373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a43373ffffffffffffffffffffffffffffffffffffffff167f433740f8fe758f5e94cce874551487537d73ef9c50141dd28124b9f7ea331395611fb284611a61565b6001604051808381526020018263ffffffff1681526020019250505060405180910390a292915050565b600080611fe761257d565b6000611ff16125e9565b600060028781548110151561200257fe5b906000526020600020906003020192508260000154955082600101549450602060405180591061202f5750595b9080825280601f01601f19166020018201604052509150600090505b60208160ff1610156120dd5782600201548160ff1660208110151561206c57fe5b1a7f010000000000000000000000000000000000000000000000000000000000000002828260ff168151811015156120a057fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350808060010191505061204b565b8193505050509193909250565b600080836003600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480600101828161219091906125bd565b91600052602060002090016000859091909150555060006005600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209150600090505b818054905081101561227d5782828281548110151561225957fe5b90600052602060002090015414156122705761227d565b808060010191505061223e565b81805490508110151561228c57fe5b8160018380549050038154811015156122a157fe5b90600052602060002090015482828154811015156122bb57fe5b9060005260206000209001819055508160018380549050038154811015156122df57fe5b9060005260206000209001600090558180548091906001900361230291906125bd565b505050505050565b600080600080600061231a6125fd565b600280549050955042945085854173ffffffffffffffffffffffffffffffffffffffff16606443034060019004600143034060019004010101019350836040518082815260200191505060405180910390206001900492508661ffff1662010000808581151561238657fe5b04020191506060604051908101604052808381526020018681526020018a600019168152509050600280548060010182816123c19190612622565b91600052602060002090600302016000839091909150600082015181600001556020820151816001015560408201518160020190600019169055505050876003600088815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548060010182816124a191906125bd565b91600052602060002090016000889091909150555050505050509392505050565b60006017836fffffffffffffffffffffffffffffffff1610151561250a5761271060078361ffff168154811015156124f657fe5b906000526020600020900154029050612563565b670de0b6b3a76400006008846fffffffffffffffffffffffffffffffff1660178110151561253457fe5b015460078461ffff1681548110151561254957fe5b9060005260206000209001540281151561255f57fe5b0490505b92915050565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b8154818355818115116125b8578183600052602060002091820191016125b79190612654565b5b505050565b8154818355818115116125e4578183600052602060002091820191016125e39190612654565b5b505050565b602060405190810160405280600081525090565b6060604051908101604052806000815260200160008152602001600080191681525090565b81548183558181151161264f5760030281600302836000526020600020918201910161264e9190612679565b5b505050565b61267691905b8082111561267257600081600090555060010161265a565b5090565b90565b6126ad91905b808211156126a957600080820160009055600182016000905560028201600090555060030161267f565b5090565b90565b6102e060405190810160405280670de0b6b3a764000069ffffffffffffffffffff1681526020016714d1120d7b16000069ffffffffffffffffffff168152602001671f399b1438a1000069ffffffffffffffffffff168152602001672ee82c178cd2000069ffffffffffffffffffff168152602001674638bb30e37a000069ffffffffffffffffffff16815260200167695518c95537000069ffffffffffffffffffff168152602001679e34ef99a774000069ffffffffffffffffffff16815260200167ed4f67667b2e000069ffffffffffffffffffff16815260200168016345785d8a00000069ffffffffffffffffffff168152602001680214e8348c4f00000069ffffffffffffffffffff168152602001680320bf944ad40a000069ffffffffffffffffffff1681526020016804b06dbbb40f4a000069ffffffffffffffffffff16815260200168070c1cc73b00c8000069ffffffffffffffffffff168152602001680a922b2ad8812c000069ffffffffffffffffffff168152602001680fd45064eaee10000069ffffffffffffffffffff1681526020016817be7897606518000069ffffffffffffffffffff16815260200168239db4e31097a4000069ffffffffffffffffffff1681526020016835659ef93f0fc4000069ffffffffffffffffffff16815260200168503b203e9fba20000069ffffffffffffffffffff168152602001687858b05def9730000069ffffffffffffffffffff16815260200168b485088ce762c8000069ffffffffffffffffffff16815260200169010e822941d8cf38000069ffffffffffffffffffff1681526020016901957dda5142f1e0000069ffffffffffffffffffff168152506008906017612932929190612935565b50565b8260178101928215612972579160200282015b82811115612971578251829069ffffffffffffffffffff16905591602001919060010190612948565b5b50905061297f9190612654565b50905600a165627a7a72305820042129687ba89f2763e1e2f1e9d45c1068190b0da0fa136f1ca2027af5b79bae0029

Deployed Bytecode

0x6060604052600436106101ac576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806301ebebf2146101b157806306fdde031461021b578063095ea7b3146102a95780630e136b19146102eb5780631051db341461031857806314bfd6d01461034557806318160ddd146103a857806323b872dd146103d157806326605772146104325780632f745c591461046257806336e4e8fd146104b857806345f28e771461051b57806348cd4cb1146105525780635a41217e1461059f578063612f2f37146105cc5780636352211e146105f15780636af04a571461065457806370480275146106a957806370a08231146106e257806372a0c16e1461072f5780638da5cb5b1461079257806395d89b41146107e75780639d5708ff14610875578063a9059cbb14610901578063aed2e7d414610943578063af794a4f14610966578063b7c9da33146109b3578063b95bb4f8146109f2578063d63e6ce714610a2d578063da76d5cd14610a7a578063df0c7a5514610a9d578063eb2c022314610b2e578063ee0f809e14610b67578063fecd348614610ba4575b600080fd5b34156101bc57600080fd5b6101c4610c4e565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156102075780820151818401526020810190506101ec565b505050509050019250505060405180910390f35b341561022657600080fd5b61022e610cf5565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561026e578082015181840152602081019050610253565b50505050905090810190601f16801561029b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156102b457600080fd5b6102e9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610d38565b005b34156102f657600080fd5b6102fe610e56565b604051808215151515815260200191505060405180910390f35b341561032357600080fd5b61032b610e69565b604051808215151515815260200191505060405180910390f35b341561035057600080fd5b6103666004808035906020019091905050610e72565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103b357600080fd5b6103bb610eb1565b6040518082815260200191505060405180910390f35b34156103dc57600080fd5b610430600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610ebe565b005b341561043d57600080fd5b61046060048080359060200190919080356000191690602001909190505061103f565b005b341561046d57600080fd5b6104a2600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506110d9565b6040518082815260200191505060405180910390f35b34156104c357600080fd5b6104d9600480803590602001909190505061118b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561052657600080fd5b61053c60048080359060200190919050506111be565b6040518082815260200191505060405180910390f35b341561055d57600080fd5b6105656111e2565b60405180826fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156105aa57600080fd5b6105b2611204565b604051808215151515815260200191505060405180910390f35b34156105d757600080fd5b6105ef60048080351515906020019091905050611217565b005b34156105fc57600080fd5b6106126004808035906020019091905050611329565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561065f57600080fd5b6106676113a2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156106b457600080fd5b6106e0600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506113c8565b005b34156106ed57600080fd5b610719600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611489565b6040518082815260200191505060405180910390f35b341561073a57600080fd5b61075060048080359060200190919050506114d5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561079d57600080fd5b6107a5611508565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156107f257600080fd5b6107fa61152d565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561083a57808201518184015260208101905061081f565b50505050905090810190601f1680156108675780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561088057600080fd5b6108a3600480803590602001909190803561ffff16906020019091905050611570565b6040518080602001838152602001828103825284818151815260200191508051906020019060200280838360005b838110156108ec5780820151818401526020810190506108d1565b50505050905001935050505060405180910390f35b341561090c57600080fd5b610941600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506116c4565b005b341561094e57600080fd5b61096460048080359060200190919050506117d7565b005b341561097157600080fd5b61098760048080359060200190919050506118c3565b604051808481526020018381526020018260001916600019168152602001935050505060405180910390f35b6109dc600480803563ffffffff1690602001909190803561ffff169060200190919050506118fc565b6040518082815260200191505060405180910390f35b34156109fd57600080fd5b610a17600480803561ffff16906020019091905050611a61565b6040518082815260200191505060405180910390f35b3415610a3857600080fd5b610a40611afd565b60405180826fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610a8557600080fd5b610a9b6004808035906020019091905050611b1f565b005b3415610aa857600080fd5b610ac2600480803561ffff16906020019091905050611c33565b60405180848152602001836fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152602001826fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152602001935050505060405180910390f35b3415610b3957600080fd5b610b65600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611d6c565b005b610b8e60048080356000191690602001909190803561ffff16906020019091905050611ed9565b6040518082815260200191505060405180910390f35b3415610baf57600080fd5b610bc56004808035906020019091905050611fdc565b6040518084815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610c11578082015181840152602081019050610bf6565b50505050905090810190601f168015610c3e5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b610c56612569565b610c5e612569565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015610ce757602002820191906000526020600020905b815481526020019060010190808311610cd3575b505050505090508091505090565b610cfd61257d565b6040805190810160405280600c81526020017f45746865722054756c6970730000000000000000000000000000000000000000815250905090565b3373ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610da557600080fd5b816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b601f60019054906101000a900460ff1681565b60006001905090565b600181815481101515610e8157fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600280549050905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610efa57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610f6757600080fd5b8273ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610fd457600080fd5b610fdf8383836120ea565b808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b3373ffffffffffffffffffffffffffffffffffffffff166003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156110ac57600080fd5b806002838154811015156110bc57fe5b906000526020600020906003020160020181600019169055505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490508210151561112b57600080fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110151561117757fe5b906000526020600020900154905092915050565b60036020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6007818154811015156111cd57fe5b90600052602060002090016000915090505481565b600660109054906101000a90046fffffffffffffffffffffffffffffffff1681565b601f60009054906101000a900460ff1681565b60008060009150600090505b6001805490508110156112b4573373ffffffffffffffffffffffffffffffffffffffff1660018281548110151561125657fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156112a757600191506112b4565b8080600101915050611223565b8115156112c057600080fd5b82601f60006101000a81548160ff0219169083151502179055507fa74f277a6df77bc82a78197c46ad925095d31e26f4860f2273e09a82a66c06af601f60009054906101000a900460ff16604051808215151515815260200191505060405180910390a1505050565b60006003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561139d57600080fd5b919050565b601f60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561142357600080fd5b600180548060010182816114379190612591565b9160005260206000209001600083909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61153561257d565b6040805190810160405280600481526020017f4554485400000000000000000000000000000000000000000000000000000000815250905090565b611578612569565b600080600080611586612569565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002094508860018680549050030393508761ffff16925060008412156116165760006040518059106115f45750595b90808252806020026020018201604052506000819150809050965096506116b8565b8761ffff1660018501121561162c576001840192505b8260405180591061163a5750595b90808252806020026020018201604052509150600090505b828161ffff1610156116ae57848481548110151561166c57fe5b906000526020600020900154828261ffff1681518110151561168a57fe5b90602001906020020181815250508380600190039450508080600101915050611652565b8160018501965096505b50505050509250929050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561170057600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561176d57600080fd5b6117783383836120ea565b808273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b60008060009150600090505b600180549050811015611874573373ffffffffffffffffffffffffffffffffffffffff1660018281548110151561181657fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156118675760019150611874565b80806001019150506117e3565b81151561188057600080fd5b61ffff60078054905010151561189557600080fd5b600780548060010182816118a991906125bd565b916000526020600020900160008590919091505550505050565b6002818154811015156118d257fe5b90600052602060002090600302016000915090508060000154908060010154908060020154905083565b60008060006007805490508461ffff1610151561191857600080fd5b8463ffffffff1661192885611a61565b023414151561193657600080fd5b60648563ffffffff161115151561194c57600080fd5b600091505b8463ffffffff168263ffffffff1610156119ef576119716000338661230a565b9050803373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a460008263ffffffff1614156119e2578092505b8180600101925050611951565b3373ffffffffffffffffffffffffffffffffffffffff167f433740f8fe758f5e94cce874551487537d73ef9c50141dd28124b9f7ea331395611a3086611a61565b87604051808381526020018263ffffffff1663ffffffff1681526020019250505060405180910390a2505092915050565b6000806007805490508361ffff16101515611a7b57600080fd5b600660009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16600660109054906101000a90046fffffffffffffffffffffffffffffffff1643036fffffffffffffffffffffffffffffffff16811515611ae857fe5b049050611af581846124c2565b915050919050565b600660009054906101000a90046fffffffffffffffffffffffffffffffff1681565b60008060009150600090505b600180549050811015611bbc573373ffffffffffffffffffffffffffffffffffffffff16600182815481101515611b5e57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611baf5760019150611bbc565b8080600101915050611b2b565b811515611bc857600080fd5b3073ffffffffffffffffffffffffffffffffffffffff16318311151515611bee57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f193505050501515611c2e57600080fd5b505050565b6000806000806007805490508561ffff16101515611c5057600080fd5b600660009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16600660109054906101000a90046fffffffffffffffffffffffffffffffff1643036fffffffffffffffffffffffffffffffff16811515611cbd57fe5b049050611ccd60018201866124c2565b9350600660009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16600660109054906101000a90046fffffffffffffffffffffffffffffffff1643036fffffffffffffffffffffffffffffffff16811515611d3c57fe5b06600660009054906101000a90046fffffffffffffffffffffffffffffffff160392508243019150509193909250565b60008060009150600090505b600180549050811015611e09573373ffffffffffffffffffffffffffffffffffffffff16600182815481101515611dab57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611dfc5760019150611e09565b8080600101915050611d78565b811515611e1557600080fd5b82601f60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601f60016101000a81548160ff0219169083151502179055507f450db8da6efbe9c22f2347f7c2021231df1fc58d3ae9a2fa75d39fa44619930583604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1505050565b60006007805490508261ffff16101515611ef257600080fd5b611efb82611a61565b34141515611f0857600080fd5b611f1383338461230a565b9050803373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a43373ffffffffffffffffffffffffffffffffffffffff167f433740f8fe758f5e94cce874551487537d73ef9c50141dd28124b9f7ea331395611fb284611a61565b6001604051808381526020018263ffffffff1681526020019250505060405180910390a292915050565b600080611fe761257d565b6000611ff16125e9565b600060028781548110151561200257fe5b906000526020600020906003020192508260000154955082600101549450602060405180591061202f5750595b9080825280601f01601f19166020018201604052509150600090505b60208160ff1610156120dd5782600201548160ff1660208110151561206c57fe5b1a7f010000000000000000000000000000000000000000000000000000000000000002828260ff168151811015156120a057fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350808060010191505061204b565b8193505050509193909250565b600080836003600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480600101828161219091906125bd565b91600052602060002090016000859091909150555060006005600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209150600090505b818054905081101561227d5782828281548110151561225957fe5b90600052602060002090015414156122705761227d565b808060010191505061223e565b81805490508110151561228c57fe5b8160018380549050038154811015156122a157fe5b90600052602060002090015482828154811015156122bb57fe5b9060005260206000209001819055508160018380549050038154811015156122df57fe5b9060005260206000209001600090558180548091906001900361230291906125bd565b505050505050565b600080600080600061231a6125fd565b600280549050955042945085854173ffffffffffffffffffffffffffffffffffffffff16606443034060019004600143034060019004010101019350836040518082815260200191505060405180910390206001900492508661ffff1662010000808581151561238657fe5b04020191506060604051908101604052808381526020018681526020018a600019168152509050600280548060010182816123c19190612622565b91600052602060002090600302016000839091909150600082015181600001556020820151816001015560408201518160020190600019169055505050876003600088815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548060010182816124a191906125bd565b91600052602060002090016000889091909150555050505050509392505050565b60006017836fffffffffffffffffffffffffffffffff1610151561250a5761271060078361ffff168154811015156124f657fe5b906000526020600020900154029050612563565b670de0b6b3a76400006008846fffffffffffffffffffffffffffffffff1660178110151561253457fe5b015460078461ffff1681548110151561254957fe5b9060005260206000209001540281151561255f57fe5b0490505b92915050565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b8154818355818115116125b8578183600052602060002091820191016125b79190612654565b5b505050565b8154818355818115116125e4578183600052602060002091820191016125e39190612654565b5b505050565b602060405190810160405280600081525090565b6060604051908101604052806000815260200160008152602001600080191681525090565b81548183558181151161264f5760030281600302836000526020600020918201910161264e9190612679565b5b505050565b61267691905b8082111561267257600081600090555060010161265a565b5090565b90565b6126ad91905b808211156126a957600080820160009055600182016000905560028201600090555060030161267f565b5090565b90565b6102e060405190810160405280670de0b6b3a764000069ffffffffffffffffffff1681526020016714d1120d7b16000069ffffffffffffffffffff168152602001671f399b1438a1000069ffffffffffffffffffff168152602001672ee82c178cd2000069ffffffffffffffffffff168152602001674638bb30e37a000069ffffffffffffffffffff16815260200167695518c95537000069ffffffffffffffffffff168152602001679e34ef99a774000069ffffffffffffffffffff16815260200167ed4f67667b2e000069ffffffffffffffffffff16815260200168016345785d8a00000069ffffffffffffffffffff168152602001680214e8348c4f00000069ffffffffffffffffffff168152602001680320bf944ad40a000069ffffffffffffffffffff1681526020016804b06dbbb40f4a000069ffffffffffffffffffff16815260200168070c1cc73b00c8000069ffffffffffffffffffff168152602001680a922b2ad8812c000069ffffffffffffffffffff168152602001680fd45064eaee10000069ffffffffffffffffffff1681526020016817be7897606518000069ffffffffffffffffffff16815260200168239db4e31097a4000069ffffffffffffffffffff1681526020016835659ef93f0fc4000069ffffffffffffffffffff16815260200168503b203e9fba20000069ffffffffffffffffffff168152602001687858b05def9730000069ffffffffffffffffffff16815260200168b485088ce762c8000069ffffffffffffffffffff16815260200169010e822941d8cf38000069ffffffffffffffffffff1681526020016901957dda5142f1e0000069ffffffffffffffffffff168152506008906017612932929190612935565b50565b8260178101928215612972579160200282015b82811115612971578251829069ffffffffffffffffffff16905591602001919060010190612948565b5b50905061297f9190612654565b50905600a165627a7a72305820042129687ba89f2763e1e2f1e9d45c1068190b0da0fa136f1ca2027af5b79bae0029

Swarm Source

bzzr://042129687ba89f2763e1e2f1e9d45c1068190b0da0fa136f1ca2027af5b79bae

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

OVERVIEW

Token migration announcement. Ether Tulips token contract has migrated to 0xf7f6dee46c6bdcf32c14a825f3a714262960c361

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ 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.