ETH Price: $3,398.52 (+2.61%)

Token

MoonCats (🐱)
 

Overview

Max Total Supply

25,600 🐱

Holders

585

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 0 Decimals)

Balance
2 🐱

Value
$0.00
0xd25fa1a20b701e8b22e9c66d2702e5c2cbf752dd
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
MoonCatRescue

Compiler Version
v0.4.14+commit.c2215d46

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2017-08-09
*/

pragma solidity ^0.4.13;

contract MoonCatRescue {
  enum Modes { Inactive, Disabled, Test, Live }

  Modes public mode = Modes.Inactive;

  address owner;

  bytes16 public imageGenerationCodeMD5 = 0xdbad5c08ec98bec48490e3c196eec683; // use this to verify mooncatparser.js the cat image data generation javascript file.

  string public name = "MoonCats";
  string public symbol = "?"; // unicode cat symbol
  uint8 public decimals = 0;

  uint256 public totalSupply = 25600;
  uint16 public remainingCats = 25600 - 256; // there will only ever be 25,000 cats
  uint16 public remainingGenesisCats = 256; // there can only be a maximum of 256 genesis cats
  uint16 public rescueIndex = 0;

  bytes5[25600] public rescueOrder;

  bytes32 public searchSeed = 0x0; // gets set with the immediately preceding blockhash when the contract is activated to prevent "premining"

  struct AdoptionOffer {
    bool exists;
    bytes5 catId;
    address seller;
    uint price;
    address onlyOfferTo;
  }

  struct AdoptionRequest{
    bool exists;
    bytes5 catId;
    address requester;
    uint price;
  }

  mapping (bytes5 => AdoptionOffer) public adoptionOffers;
  mapping (bytes5 => AdoptionRequest) public adoptionRequests;

  mapping (bytes5 => bytes32) public catNames;
  mapping (bytes5 => address) public catOwners;
  mapping (address => uint256) public balanceOf; //number of cats owned by a given address
  mapping (address => uint) public pendingWithdrawals;

  /* events */

  event CatRescued(address indexed to, bytes5 indexed catId);
  event CatNamed(bytes5 indexed catId, bytes32 catName);
  event Transfer(address indexed from, address indexed to, uint256 value);
  event CatAdopted(bytes5 indexed catId, uint price, address indexed from, address indexed to);
  event AdoptionOffered(bytes5 indexed catId, uint price, address indexed toAddress);
  event AdoptionOfferCancelled(bytes5 indexed catId);
  event AdoptionRequested(bytes5 indexed catId, uint price, address indexed from);
  event AdoptionRequestCancelled(bytes5 indexed catId);
  event GenesisCatsAdded(bytes5[16] catIds);

  function MoonCatRescue() payable {
    owner = msg.sender;
    assert((remainingCats + remainingGenesisCats) == totalSupply);
    assert(rescueOrder.length == totalSupply);
    assert(rescueIndex == 0);
  }

  /* registers and validates cats that are found */
  function rescueCat(bytes32 seed) activeMode returns (bytes5) {
    require(remainingCats > 0); // cannot register any cats once supply limit is reached
    bytes32 catIdHash = keccak256(seed, searchSeed); // generate the prospective catIdHash
    require(catIdHash[0] | catIdHash[1] | catIdHash[2] == 0x0); // ensures the validity of the catIdHash
    bytes5 catId = bytes5((catIdHash & 0xffffffff) << 216); // one byte to indicate genesis, and the last 4 bytes of the catIdHash
    require(catOwners[catId] == 0x0); // if the cat is already registered, throw an error. All cats are unique.

    rescueOrder[rescueIndex] = catId;
    rescueIndex++;

    catOwners[catId] = msg.sender;
    balanceOf[msg.sender]++;
    remainingCats--;

    CatRescued(msg.sender, catId);

    return catId;
  }

  /* assigns a name to a cat, once a name is assigned it cannot be changed */
  function nameCat(bytes5 catId, bytes32 catName) onlyCatOwner(catId) {
    require(catNames[catId] == 0x0); // ensure the current name is empty; cats can only be named once
    require(!adoptionOffers[catId].exists); // cats cannot be named while they are up for adoption
    catNames[catId] = catName;
    CatNamed(catId, catName);
  }

  /* puts a cat up for anyone to adopt */
  function makeAdoptionOffer(bytes5 catId, uint price) onlyCatOwner(catId) {
    require(price > 0);
    adoptionOffers[catId] = AdoptionOffer(true, catId, msg.sender, price, 0x0);
    AdoptionOffered(catId, price, 0x0);
  }

  /* puts a cat up for a specific address to adopt */
  function makeAdoptionOfferToAddress(bytes5 catId, uint price, address to) onlyCatOwner(catId) isNotSender(to){
    adoptionOffers[catId] = AdoptionOffer(true, catId, msg.sender, price, to);
    AdoptionOffered(catId, price, to);
  }

  /* cancel an adoption offer */
  function cancelAdoptionOffer(bytes5 catId) onlyCatOwner(catId) {
    adoptionOffers[catId] = AdoptionOffer(false, catId, 0x0, 0, 0x0);
    AdoptionOfferCancelled(catId);
  }

  /* accepts an adoption offer  */
  function acceptAdoptionOffer(bytes5 catId) payable {
    AdoptionOffer storage offer = adoptionOffers[catId];
    require(offer.exists);
    require(offer.onlyOfferTo == 0x0 || offer.onlyOfferTo == msg.sender);
    require(msg.value >= offer.price);
    if(msg.value > offer.price) {
      pendingWithdrawals[msg.sender] += (msg.value - offer.price); // if the submitted amount exceeds the price allow the buyer to withdraw the difference
    }
    transferCat(catId, catOwners[catId], msg.sender, offer.price);
  }

  /* transfer a cat directly without payment */
  function giveCat(bytes5 catId, address to) onlyCatOwner(catId) {
    transferCat(catId, msg.sender, to, 0);
  }

  /* requests adoption of a cat with an ETH offer */
  function makeAdoptionRequest(bytes5 catId) payable isNotSender(catOwners[catId]) {
    require(catOwners[catId] != 0x0); // the cat must be owned
    AdoptionRequest storage existingRequest = adoptionRequests[catId];
    require(msg.value > 0);
    require(msg.value > existingRequest.price);


    if(existingRequest.price > 0) {
      pendingWithdrawals[existingRequest.requester] += existingRequest.price;
    }

    adoptionRequests[catId] = AdoptionRequest(true, catId, msg.sender, msg.value);
    AdoptionRequested(catId, msg.value, msg.sender);

  }

  /* allows the owner of the cat to accept an adoption request */
  function acceptAdoptionRequest(bytes5 catId) onlyCatOwner(catId) {
    AdoptionRequest storage existingRequest = adoptionRequests[catId];
    require(existingRequest.exists);
    address existingRequester = existingRequest.requester;
    uint existingPrice = existingRequest.price;
    adoptionRequests[catId] = AdoptionRequest(false, catId, 0x0, 0); // the adoption request must be cancelled before calling transferCat to prevent refunding the requester.
    transferCat(catId, msg.sender, existingRequester, existingPrice);
  }

  /* allows the requester to cancel their adoption request */
  function cancelAdoptionRequest(bytes5 catId) {
    AdoptionRequest storage existingRequest = adoptionRequests[catId];
    require(existingRequest.exists);
    require(existingRequest.requester == msg.sender);

    uint price = existingRequest.price;

    adoptionRequests[catId] = AdoptionRequest(false, catId, 0x0, 0);

    msg.sender.transfer(price);

    AdoptionRequestCancelled(catId);
  }


  function withdraw() {
    uint amount = pendingWithdrawals[msg.sender];
    pendingWithdrawals[msg.sender] = 0;
    msg.sender.transfer(amount);
  }

  /* owner only functions */

  /* disable contract before activation. A safeguard if a bug is found before the contract is activated */
  function disableBeforeActivation() onlyOwner inactiveMode {
    mode = Modes.Disabled;  // once the contract is disabled it's mode cannot be changed
  }

  /* activates the contract in *Live* mode which sets the searchSeed and enables rescuing */
  function activate() onlyOwner inactiveMode {
    searchSeed = block.blockhash(block.number - 1); // once the searchSeed is set it cannot be changed;
    mode = Modes.Live; // once the contract is activated it's mode cannot be changed
  }

  /* activates the contract in *Test* mode which sets the searchSeed and enables rescuing */
  function activateInTestMode() onlyOwner inactiveMode { //
    searchSeed = 0x5713bdf5d1c3398a8f12f881f0f03b5025b6f9c17a97441a694d5752beb92a3d; // once the searchSeed is set it cannot be changed;
    mode = Modes.Test; // once the contract is activated it's mode cannot be changed
  }

  /* add genesis cats in groups of 16 */
  function addGenesisCatGroup() onlyOwner activeMode {
    require(remainingGenesisCats > 0);
    bytes5[16] memory newCatIds;
    uint256 price = (17 - (remainingGenesisCats / 16)) * 300000000000000000;
    for(uint8 i = 0; i < 16; i++) {

      uint16 genesisCatIndex = 256 - remainingGenesisCats;
      bytes5 genesisCatId = (bytes5(genesisCatIndex) << 24) | 0xff00000ca7;

      newCatIds[i] = genesisCatId;

      rescueOrder[rescueIndex] = genesisCatId;
      rescueIndex++;
      balanceOf[0x0]++;
      remainingGenesisCats--;

      adoptionOffers[genesisCatId] = AdoptionOffer(true, genesisCatId, owner, price, 0x0);
    }
    GenesisCatsAdded(newCatIds);
  }


  /* aggregate getters */

  function getCatIds() constant returns (bytes5[]) {
    bytes5[] memory catIds = new bytes5[](rescueIndex);
    for (uint i = 0; i < rescueIndex; i++) {
      catIds[i] = rescueOrder[i];
    }
    return catIds;
  }


  function getCatNames() constant returns (bytes32[]) {
    bytes32[] memory names = new bytes32[](rescueIndex);
    for (uint i = 0; i < rescueIndex; i++) {
      names[i] = catNames[rescueOrder[i]];
    }
    return names;
  }

  function getCatOwners() constant returns (address[]) {
    address[] memory owners = new address[](rescueIndex);
    for (uint i = 0; i < rescueIndex; i++) {
      owners[i] = catOwners[rescueOrder[i]];
    }
    return owners;
  }

  function getCatOfferPrices() constant returns (uint[]) {
    uint[] memory catOffers = new uint[](rescueIndex);
    for (uint i = 0; i < rescueIndex; i++) {
      bytes5 catId = rescueOrder[i];
      if(adoptionOffers[catId].exists && adoptionOffers[catId].onlyOfferTo == 0x0) {
        catOffers[i] = adoptionOffers[catId].price;
      }
    }
    return catOffers;
  }

  function getCatRequestPrices() constant returns (uint[]) {
    uint[] memory catRequests = new uint[](rescueIndex);
    for (uint i = 0; i < rescueIndex; i++) {
      bytes5 catId = rescueOrder[i];
      catRequests[i] = adoptionRequests[catId].price;
    }
    return catRequests;
  }

  function getCatDetails(bytes5 catId) constant returns (bytes5 id,
                                                         address owner,
                                                         bytes32 name,
                                                         address onlyOfferTo,
                                                         uint offerPrice,
                                                         address requester,
                                                         uint requestPrice) {

    return (catId,
            catOwners[catId],
            catNames[catId],
            adoptionOffers[catId].onlyOfferTo,
            adoptionOffers[catId].price,
            adoptionRequests[catId].requester,
            adoptionRequests[catId].price);
  }

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

  modifier inactiveMode() {
    require(mode == Modes.Inactive);
    _;
  }

  modifier activeMode() {
    require(mode == Modes.Live || mode == Modes.Test);
    _;
  }

  modifier onlyCatOwner(bytes5 catId) {
    require(catOwners[catId] == msg.sender);
    _;
  }

  modifier isNotSender(address a) {
    require(msg.sender != a);
    _;
  }

  /* transfer helper */
  function transferCat(bytes5 catId, address from, address to, uint price) private {
    catOwners[catId] = to;
    balanceOf[from]--;
    balanceOf[to]++;
    adoptionOffers[catId] = AdoptionOffer(false, catId, 0x0, 0, 0x0); // cancel any existing adoption offer when cat is transferred

    AdoptionRequest storage request = adoptionRequests[catId]; //if the recipient has a pending adoption request, cancel it
    if(request.requester == to) {
      pendingWithdrawals[to] += request.price;
      adoptionRequests[catId] = AdoptionRequest(false, catId, 0x0, 0);
    }

    pendingWithdrawals[from] += price;

    Transfer(from, to, 1);
    CatAdopted(catId, price, from, to);
  }

}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"catId","type":"bytes5"},{"name":"price","type":"uint256"}],"name":"makeAdoptionOffer","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"activate","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"remainingGenesisCats","outputs":[{"name":"","type":"uint16"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"remainingCats","outputs":[{"name":"","type":"uint16"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"catId","type":"bytes5"}],"name":"acceptAdoptionOffer","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"mode","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"catId","type":"bytes5"}],"name":"getCatDetails","outputs":[{"name":"id","type":"bytes5"},{"name":"owner","type":"address"},{"name":"name","type":"bytes32"},{"name":"onlyOfferTo","type":"address"},{"name":"offerPrice","type":"uint256"},{"name":"requester","type":"address"},{"name":"requestPrice","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getCatOwners","outputs":[{"name":"","type":"address[]"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes5"}],"name":"catOwners","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"rescueOrder","outputs":[{"name":"","type":"bytes5"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"seed","type":"bytes32"}],"name":"rescueCat","outputs":[{"name":"","type":"bytes5"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"catId","type":"bytes5"}],"name":"cancelAdoptionOffer","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getCatIds","outputs":[{"name":"","type":"bytes5[]"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getCatNames","outputs":[{"name":"","type":"bytes32[]"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"catId","type":"bytes5"},{"name":"catName","type":"bytes32"}],"name":"nameCat","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"activateInTestMode","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes5"}],"name":"adoptionOffers","outputs":[{"name":"exists","type":"bool"},{"name":"catId","type":"bytes5"},{"name":"seller","type":"address"},{"name":"price","type":"uint256"},{"name":"onlyOfferTo","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes5"}],"name":"catNames","outputs":[{"name":"","type":"bytes32"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getCatRequestPrices","outputs":[{"name":"","type":"uint256[]"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"catId","type":"bytes5"}],"name":"cancelAdoptionRequest","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"disableBeforeActivation","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"addGenesisCatGroup","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"catId","type":"bytes5"},{"name":"price","type":"uint256"},{"name":"to","type":"address"}],"name":"makeAdoptionOfferToAddress","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"searchSeed","outputs":[{"name":"","type":"bytes32"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"imageGenerationCodeMD5","outputs":[{"name":"","type":"bytes16"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes5"}],"name":"adoptionRequests","outputs":[{"name":"exists","type":"bool"},{"name":"catId","type":"bytes5"},{"name":"requester","type":"address"},{"name":"price","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"catId","type":"bytes5"}],"name":"acceptAdoptionRequest","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getCatOfferPrices","outputs":[{"name":"","type":"uint256[]"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"catId","type":"bytes5"}],"name":"makeAdoptionRequest","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"rescueIndex","outputs":[{"name":"","type":"uint16"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"pendingWithdrawals","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"catId","type":"bytes5"},{"name":"to","type":"address"}],"name":"giveCat","outputs":[],"payable":false,"type":"function"},{"inputs":[],"payable":true,"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":true,"name":"catId","type":"bytes5"}],"name":"CatRescued","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"catId","type":"bytes5"},{"indexed":false,"name":"catName","type":"bytes32"}],"name":"CatNamed","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":"catId","type":"bytes5"},{"indexed":false,"name":"price","type":"uint256"},{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"}],"name":"CatAdopted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"catId","type":"bytes5"},{"indexed":false,"name":"price","type":"uint256"},{"indexed":true,"name":"toAddress","type":"address"}],"name":"AdoptionOffered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"catId","type":"bytes5"}],"name":"AdoptionOfferCancelled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"catId","type":"bytes5"},{"indexed":false,"name":"price","type":"uint256"},{"indexed":true,"name":"from","type":"address"}],"name":"AdoptionRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"catId","type":"bytes5"}],"name":"AdoptionRequestCancelled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"catIds","type":"bytes5[16]"}],"name":"GenesisCatsAdded","type":"event"}]

606060405260008054819060ff19166001825b0217905550600180546001608060020a0319166fdbad5c08ec98bec48490e3c196eec68317905560408051908101604052600881527f4d6f6f6e43617473000000000000000000000000000000000000000000000000602082015260029080516200008292916020019062000179565b5060408051908101604052600481527ff09f90b10000000000000000000000000000000000000000000000000000000060208201526003908051620000cc92916020019062000179565b506004805460ff191690556164006005556006805461630061ffff199091161763ffff0000191663010000001765ffff000000001916905560006110b2555b6000805461010060a860020a03191661010033600160a060020a03160217905560055460065462010000810461ffff9081169181169190910116146200014d57fe5b600554616400146200015b57fe5b600654640100000000900461ffff16156200017257fe5b5b62000223565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001bc57805160ff1916838001178555620001ec565b82800160010185558215620001ec579182015b82811115620001ec578251825591602001919060010190620001cf565b5b50620001fb929150620001ff565b5090565b6200022091905b80821115620001fb576000815560010162000206565b5090565b90565b61278e80620002336000396000f300606060405236156101d55763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166305ca355781146101da57806306fdde03146101ff5780630f15f4c01461028a5780630ff3687b1461029f57806318160ddd146102c9578063196ee9c7146102ee5780631be7051014610318578063295a52121461032f5780632f59840414610366578063313ce567146103dd57806336ae31ec146104065780633894ca571461046d5780633ccfd60b146104a9578063434b1208146104be5780634946e206146104f15780635281947d146105245780635d89c01a1461054657806370a08231146105ad578063711d649b146105de57806374fe6dea1461064557806376b39cf91461066a5780638edc707b1461067f5780638ff95fa8146106e857806395d89b411461071a57806398f32d1d146107a55780639d8df6dd1461080c578063a318d5211461082e578063a40c8ad014610843578063a420261514610858578063ae4f147614610889578063b269eaff146108ae578063bec6bc67146108e7578063d4a03f6014610947578063d728b6db14610969578063e65bbceb146109d0578063ee04b4b9146109e7578063f3f4370314610a11578063f884e54a14610a42575b600080fd5b34156101e557600080fd5b6101fd600160d860020a031960043516602435610a70565b005b341561020a57600080fd5b610212610bd7565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561024f5780820151818401525b602001610236565b50505050905090810190601f16801561027c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561029557600080fd5b6101fd610c75565b005b34156102aa57600080fd5b6102b2610cd7565b60405161ffff909116815260200160405180910390f35b34156102d457600080fd5b6102dc610ce7565b60405190815260200160405180910390f35b34156102f957600080fd5b6102b2610ced565b60405161ffff909116815260200160405180910390f35b6101fd600160d860020a031960043516610cf7565b005b341561033a57600080fd5b610342610ddc565b6040518082600381111561035257fe5b60ff16815260200191505060405180910390f35b341561037157600080fd5b610386600160d860020a031960043516610de5565b604051600160d860020a03199097168752600160a060020a0395861660208801526040808801959095529285166060870152608086019190915290921660a084015260c083019190915260e0909101905180910390f35b34156103e857600080fd5b6103f0610e5a565b60405160ff909116815260200160405180910390f35b341561041157600080fd5b610419610e63565b60405160208082528190810183818151815260200191508051906020019060200280838360005b838110156104595780820151818401525b602001610440565b505050509050019250505060405180910390f35b341561047857600080fd5b61048d600160d860020a031960043516610f4c565b604051600160a060020a03909116815260200160405180910390f35b34156104b457600080fd5b6101fd610f68565b005b34156104c957600080fd5b6104d4600435610fb5565b604051600160d860020a0319909116815260200160405180910390f35b34156104fc57600080fd5b6104d4600435610fe4565b604051600160d860020a0319909116815260200160405180910390f35b341561052f57600080fd5b6101fd600160d860020a031960043516611209565b005b341561055157600080fd5b610419611350565b60405160208082528190810183818151815260200191508051906020019060200280838360005b838110156104595780820151818401525b602001610440565b505050509050019250505060405180910390f35b34156105b857600080fd5b6102dc600160a060020a036004351661140f565b60405190815260200160405180910390f35b34156105e957600080fd5b610419611422565b60405160208082528190810183818151815260200191508051906020019060200280838360005b838110156104595780820151818401525b602001610440565b505050509050019250505060405180910390f35b341561065057600080fd5b6101fd600160d860020a0319600435166024356114fb565b005b341561067557600080fd5b6101fd6115d6565b005b341561068a57600080fd5b61069f600160d860020a031960043516611657565b6040519415158552600160d860020a03199093166020850152600160a060020a0391821660408086019190915260608501919091529116608083015260a0909101905180910390f35b34156106f357600080fd5b6102dc600160d860020a03196004351661169e565b60405190815260200160405180910390f35b341561072557600080fd5b6102126116b1565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561024f5780820151818401525b602001610236565b50505050905090810190601f16801561027c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156107b057600080fd5b61041961174f565b60405160208082528190810183818151815260200191508051906020019060200280838360005b838110156104595780820151818401525b602001610440565b505050509050019250505060405180910390f35b341561081757600080fd5b6101fd600160d860020a031960043516611834565b005b341561083957600080fd5b6101fd6119a0565b005b341561084e57600080fd5b6101fd6119fb565b005b341561086357600080fd5b6101fd600160d860020a031960043516602435600160a060020a0360443516611d58565b005b341561089457600080fd5b6102dc611ed6565b60405190815260200160405180910390f35b34156108b957600080fd5b6108c1611edd565b6040516fffffffffffffffffffffffffffffffff19909116815260200160405180910390f35b34156108f257600080fd5b610907600160d860020a031960043516611ef6565b6040519315158452600160d860020a03199092166020840152600160a060020a031660408084019190915260608301919091526080909101905180910390f35b341561095257600080fd5b6101fd600160d860020a031960043516611f36565b005b341561097457600080fd5b610419612077565b60405160208082528190810183818151815260200191508051906020019060200280838360005b838110156104595780820151818401525b602001610440565b505050509050019250505060405180910390f35b6101fd600160d860020a0319600435166121a5565b005b34156109f257600080fd5b6102b261237c565b60405161ffff909116815260200160405180910390f35b3415610a1c57600080fd5b6102dc600160a060020a036004351661238e565b60405190815260200160405180910390f35b3415610a4d57600080fd5b6101fd600160d860020a031960043516600160a060020a03602435166123a1565b005b600160d860020a0319821660009081526110b66020526040902054829033600160a060020a03908116911614610aa557600080fd5b60008211610ab257600080fd5b60a0604051908101604090815260018252600160d860020a031985166020808401829052600160a060020a03331683850152606084018690526000608085018190529182526110b39052208151815460ff19169015151781556020820151815460d860020a9091046101000265ffffffffff001990911617815560408201518154600160a060020a03919091166601000000000000026000805160206127438339815191529091161781556060820151816001015560808201516002919091018054600160a060020a031916600160a060020a03909216919091179055506000600160d860020a031984167f175ebfc78c5d74e638bd7454214416a2a42d10527412f91ac6f2e693ce4344b88460405190815260200160405180910390a35b5b505050565b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610c6d5780601f10610c4257610100808354040283529160200191610c6d565b820191906000526020600020905b815481529060010190602001808311610c5057829003601f168201915b505050505081565b60005433600160a060020a039081166101009092041614610c9557600080fd5b60005b60005460ff166003811115610ca957fe5b14610cb357600080fd5b6000194301406110b255600080546003919060ff19166001835b02179055505b5b5b565b60065462010000900461ffff1681565b60055481565b60065461ffff1681565b600160d860020a0319811660009081526110b360205260409020805460ff161515610d2157600080fd5b6002810154600160a060020a03161580610d4b5750600281015433600160a060020a039081169116145b1515610d5657600080fd5b6001810154341015610d6757600080fd5b8060010154341115610d9e57600181015433600160a060020a031660009081526110b8602052604090208054349290920390910190555b600160d860020a0319821660009081526110b660205260409020546001820154610dd7918491600160a060020a039091169033906123ea565b5b5050565b60005460ff1681565b600160d860020a0319811660009081526110b660209081526040808320546110b58352818420546110b3845282852060028101546001918201546110b49096529390952080549501548695600160a060020a03938416959294841693660100000000000090910416905b919395979092949650565b60045460ff1681565b610e6b6126d1565b610e736126d1565b600654600090640100000000900461ffff16604051805910610e925750595b908082528060200260200182016040525b509150600090505b600654640100000000900461ffff16811015610f43576110b660006007836164008110610ed457fe5b600691828204019190066005025b90546101009190910a900460d860020a02600160d860020a0319168152602081019190915260400160002054600160a060020a0316828281518110610f2357fe5b600160a060020a039092166020928302909101909101525b600101610eab565b8192505b505090565b6110b660205260009081526040902054600160a060020a031681565b600160a060020a03331660008181526110b86020526040808220805492905590919082156108fc0290839051600060405180830381858888f193505050501515610fb157600080fd5b5b50565b6007816164008110610fc357fe5b600691828204019190066005025b915054906101000a900460d860020a0281565b6000808060035b60005460ff166003811115610ffc57fe5b1480611019575060025b60005460ff16600381111561101757fe5b145b151561102457600080fd5b600654600061ffff9091161161103957600080fd5b836110b25460405191825260208201526040908101905190819003902091508160025b1a60f860020a028260015b1a60f860020a028360005b1a60f860020a0217177effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600060f860020a021415156110b157600080fd5b5063ffffffff811660d860020a02600160d860020a0319811660009081526110b66020526040902054600160a060020a0316156110ed57600080fd5b6006548190600790640100000000900461ffff16616400811061110c57fe5b600691828204019190066005025b815464ffffffffff6101009290920a918202191660d860020a909304029190911790556006805465ffff000000001981166401000000009182900461ffff90811660019081018216909302919091178355600160d860020a0319841660008181526110b6602090815260408083208054600160a060020a03191633600160a060020a03169081179091558084526110b7909252918290208054909501909455845461ffff19811690841660001901909316929092179093557f80d2c1a6c75f471130a64fd71b80dc7208f721037766fb7decf53e10f82211cd905160405180910390a38092505b5b5050919050565b600160d860020a0319811660009081526110b66020526040902054819033600160a060020a0390811691161461123e57600080fd5b60a060405190810160409081526000808352600160d860020a03198516602080850182905283850183905260608501839052608085018390529082526110b39052208151815460ff19169015151781556020820151815460d860020a9091046101000265ffffffffff001990911617815560408201518154600160a060020a03919091166601000000000000026000805160206127438339815191529091161781556060820151816001015560808201516002919091018054600160a060020a031916600160a060020a0390921691909117905550600160d860020a031982167f8c299d0cc9eb68636bc5e183d2cfd85044e4af70cbf300f6c2c3f9cf4e72f35960405160405180910390a25b5b5050565b6113586126d1565b6113606126d1565b600654600090640100000000900461ffff1660405180591061137f5750595b908082528060200260200182016040525b509150600090505b600654640100000000900461ffff16811015610f435760078161640081106113bc57fe5b600691828204019190066005025b9054906101000a900460d860020a028282815181106113e557fe5b600160d860020a03199092166020928302909101909101525b600101611398565b8192505b505090565b6110b76020526000908152604090205481565b61142a6126d1565b6114326126d1565b600654600090640100000000900461ffff166040518059106114515750595b908082528060200260200182016040525b509150600090505b600654640100000000900461ffff16811015610f43576110b56000600783616400811061149357fe5b600691828204019190066005025b9054906101000a900460d860020a02600160d860020a031916600160d860020a0319168152602001908152602001600020548282815181106114df57fe5b602090810290910101525b60010161146a565b8192505b505090565b600160d860020a0319821660009081526110b66020526040902054829033600160a060020a0390811691161461153057600080fd5b600160d860020a0319831660009081526110b560205260409020541561155557600080fd5b600160d860020a0319831660009081526110b3602052604090205460ff161561157d57600080fd5b600160d860020a0319831660008181526110b56020526040908190208490557faf93a6d1ccdac374cb23b8a45184a5fbcb33c51e4471f69c088ebc18627fbd0f9084905190815260200160405180910390a25b5b505050565b60005433600160a060020a0390811661010090920416146115f657600080fd5b60005b60005460ff16600381111561160a57fe5b1461161457600080fd5b7f5713bdf5d1c3398a8f12f881f0f03b5025b6f9c17a97441a694d5752beb92a3d6110b255600080546002919060ff1916600183610ccd565b02179055505b5b5b565b6110b36020526000908152604090208054600182015460029092015460ff82169260d860020a61010084040292600160a060020a0366010000000000009091048116921685565b6110b56020526000908152604090205481565b60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610c6d5780601f10610c4257610100808354040283529160200191610c6d565b820191906000526020600020905b815481529060010190602001808311610c5057829003601f168201915b505050505081565b6117576126d1565b61175f6126d1565b6006546000908190640100000000900461ffff166040518059106117805750595b908082528060200260200182016040525b509250600091505b600654640100000000900461ffff1682101561182a5760078261640081106117bd57fe5b600691828204019190066005025b9054906101000a900460d860020a0290506110b4600082600160d860020a031916600160d860020a03191681526020019081526020016000206001015483838151811061181457fe5b602090810290910101525b600190910190611799565b8293505b50505090565b600160d860020a0319811660009081526110b460205260408120805490919060ff16151561186157600080fd5b815433600160a060020a039081166601000000000000909204161461188557600080fd5b506001810154608060405190810160409081526000808352600160d860020a031986166020808501829052838501839052606085018390529082526110b49052208151815460ff19169015151781556020820151815460d860020a9091046101000265ffffffffff001990911617815560408201518154600160a060020a0391909116660100000000000002600080516020612743833981519152909116178155606082015160019091015550600160a060020a03331681156108fc0282604051600060405180830381858888f19350505050151561196357600080fd5b600160d860020a031983167fdd2c4d3d509ed991f38f011d74ba4029a438713394421a31d518d31bd099845660405160405180910390a25b505050565b60005433600160a060020a0390811661010090920416146119c057600080fd5b60005b60005460ff1660038111156119d457fe5b146119de57600080fd5b600080546001919060ff19168280610ccd565b02179055505b5b5b565b611a03612719565b6000805481908190819033600160a060020a039081166101009092041614611a2a57600080fd5b60035b60005460ff166003811115611a3e57fe5b1480611a5b575060025b60005460ff166003811115611a5957fe5b145b1515611a6657600080fd5b60065460006201000090910461ffff1611611a8057600080fd5b60065460109062010000900461ffff165b0460110361ffff16670429d069189e00000267ffffffffffffffff169350600092505b60108360ff161015611cf357505060065462010000900461ffff9081166101000390811660d860020a02600160d860020a0319166301000000027fff00000ca700000000000000000000000000000000000000000000000000000017808560ff851660108110611b2057fe5b600160d860020a031992909216602090920201526006548190600790640100000000900461ffff166164008110611b5357fe5b600691828204019190066005025b815464ffffffffff6101009290920a918202191660d860020a9093040291909117905560068054600080526110b76020527f8b7b0506e1df5a8448d8eb7314d5008da63b5b23c742acc1ca2fe9008ea3c9988054600190810190915563ffff00001965ffff000000001983166401000000009384900461ffff908116909301831690930292909217918216620100009283900482166000190190911690910217905560a0604051908101604090815260018252600160d860020a031983166020808401829052600080546101009004600160a060020a03168486015260608501899052608085018190529182526110b39052208151815460ff19169015151781556020820151815460d860020a9091046101000265ffffffffff001990911617815560408201518154600160a060020a03919091166601000000000000026000805160206127438339815191529091161781556060820151816001015560808201516002919091018054600160a060020a031916600160a060020a03909216919091179055505b600190920191611ab4565b7fb18efff3589e0e6e1f1fdd8be3f2d2250429a242997d2a6ac3aa6f7ef1296ca985604051808261020080838360005b83811015611d3c5780820151818401525b602001611d23565b5050505090500191505060405180910390a15b5b5b5050505050565b600160d860020a0319831660009081526110b66020526040902054839033600160a060020a03908116911614611d8d57600080fd5b8180600160a060020a031633600160a060020a031614151515611daf57600080fd5b60a0604051908101604090815260018252600160d860020a031987166020808401829052600160a060020a0333811684860152606085018990528716608085015260009182526110b39052208151815460ff19169015151781556020820151815460d860020a9091046101000265ffffffffff001990911617815560408201518154600160a060020a03919091166601000000000000026000805160206127438339815191529091161781556060820151816001015560808201516002919091018054600160a060020a031916600160a060020a0392831617905584169050600160d860020a031986167f175ebfc78c5d74e638bd7454214416a2a42d10527412f91ac6f2e693ce4344b88660405190815260200160405180910390a35b5b505b50505050565b6110b25481565b6001547001000000000000000000000000000000000281565b6110b4602052600090815260409020805460019091015460ff821691610100810460d860020a02916601000000000000909104600160a060020a03169084565b600160d860020a0319811660009081526110b6602052604081205481908190849033600160a060020a03908116911614611f6f57600080fd5b600160d860020a0319851660009081526110b460205260409020805490945060ff161515611f9c57600080fd5b835460018501546601000000000000909104600160a060020a031693509150608060405190810160409081526000808352600160d860020a031988166020808501829052838501839052606085018390529082526110b49052208151815460ff19169015151781556020820151815460d860020a9091046101000265ffffffffff001990911617815560408201518154600160a060020a0391909116660100000000000002600080516020612743833981519152909116178155606082015160019091015550611d4f853385856123ea565b5b5b5050505050565b61207f6126d1565b6120876126d1565b6006546000908190640100000000900461ffff166040518059106120a85750595b908082528060200260200182016040525b509250600091505b600654640100000000900461ffff1682101561182a5760078261640081106120e557fe5b600691828204019190066005025b90546101009190910a900460d860020a02600160d860020a0319811660009081526110b3602052604090205490915060ff1680156121555750600160d860020a0319811660009081526110b36020526040902060020154600160a060020a0316155b1561218f57600160d860020a0319811660009081526110b3602052604090206001015483838151811061218457fe5b602090810290910101525b5b6001909101906120c1565b8293505b50505090565b600160d860020a0319811660009081526110b66020526040812054600160a060020a039081169033168114156121da57600080fd5b600160d860020a0319831660009081526110b66020526040902054600160a060020a0316151561220957600080fd5b600160d860020a0319831660009081526110b4602052604081209250341161223057600080fd5b6001820154341161224057600080fd5b60008260010154111561227e576001820154825466010000000000009004600160a060020a031660009081526110b860205260409020805490910190555b6080604051908101604090815260018252600160d860020a031985166020808401829052600160a060020a0333168385015234606085015260009182526110b49052208151815460ff19169015151781556020820151815460d860020a9091046101000265ffffffffff001990911617815560408201518154600160a060020a0391909116660100000000000002600080516020612743833981519152909116178155606082015160019091015550600160a060020a033316600160d860020a031984167f0beedbd4ef5e50660fe5cf7b1274e5d826c6e496020c760b9509e1f21f6962303460405190815260200160405180910390a35b5b505050565b600654640100000000900461ffff1681565b6110b86020526000908152604090205481565b600160d860020a0319821660009081526110b66020526040902054829033600160a060020a039081169116146123d657600080fd5b610bd183338460006123ea565b5b5b505050565b600160d860020a0319841660009081526110b6602090815260408083208054600160a060020a031916600160a060020a0387811691821790925590871684526110b790925280832080546000190190559082528082208054600101905560a0905190810160409081526000808352600160d860020a03198816602080850182905283850183905260608501839052608085018390529082526110b39052208151815460ff19169015151781556020820151815460d860020a9091046101000265ffffffffff001990911617815560408201518154600160a060020a039190911666010000000000000260008051602061274383398151915290911617815560608201518160010155608082015160029091018054600160a060020a03928316600160a060020a0319909116179055600160d860020a0319871660009081526110b46020526040902080549093506601000000000000900481169085161415905061261d576001810154600160a060020a03841660009081526110b860205260409081902080549092019091556080905190810160409081526000808352600160d860020a031988166020808501829052838501839052606085018390529082526110b49052208151815460ff19169015151781556020820151815460d860020a9091046101000265ffffffffff001990911617815560408201518154600160a060020a03919091166601000000000000026000805160206127438339815191529091161781556060820151600190910155505b600160a060020a0380851660008181526110b8602052604090819020805486019055918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906001905190815260200160405180910390a382600160a060020a031684600160a060020a031686600160d860020a0319167f1d9becf52be84ecb1e1e8de532c6cea871c0903fdcc9675123ca5c3c2cb436258560405190815260200160405180910390a45b5050505050565b60206040519081016040526000815290565b60206040519081016040526000815290565b60206040519081016040526000815290565b60206040519081016040526000815290565b6102006040519081016040526010815b60008152600019909101906020018161272957905050905600ffffffffffff0000000000000000000000000000000000000000ffffffffffffa165627a7a72305820a4e578d3d7c9a384b5985a5957dd2477a19f9d32052121927063bf9f549c60320029

Deployed Bytecode

0x606060405236156101d55763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166305ca355781146101da57806306fdde03146101ff5780630f15f4c01461028a5780630ff3687b1461029f57806318160ddd146102c9578063196ee9c7146102ee5780631be7051014610318578063295a52121461032f5780632f59840414610366578063313ce567146103dd57806336ae31ec146104065780633894ca571461046d5780633ccfd60b146104a9578063434b1208146104be5780634946e206146104f15780635281947d146105245780635d89c01a1461054657806370a08231146105ad578063711d649b146105de57806374fe6dea1461064557806376b39cf91461066a5780638edc707b1461067f5780638ff95fa8146106e857806395d89b411461071a57806398f32d1d146107a55780639d8df6dd1461080c578063a318d5211461082e578063a40c8ad014610843578063a420261514610858578063ae4f147614610889578063b269eaff146108ae578063bec6bc67146108e7578063d4a03f6014610947578063d728b6db14610969578063e65bbceb146109d0578063ee04b4b9146109e7578063f3f4370314610a11578063f884e54a14610a42575b600080fd5b34156101e557600080fd5b6101fd600160d860020a031960043516602435610a70565b005b341561020a57600080fd5b610212610bd7565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561024f5780820151818401525b602001610236565b50505050905090810190601f16801561027c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561029557600080fd5b6101fd610c75565b005b34156102aa57600080fd5b6102b2610cd7565b60405161ffff909116815260200160405180910390f35b34156102d457600080fd5b6102dc610ce7565b60405190815260200160405180910390f35b34156102f957600080fd5b6102b2610ced565b60405161ffff909116815260200160405180910390f35b6101fd600160d860020a031960043516610cf7565b005b341561033a57600080fd5b610342610ddc565b6040518082600381111561035257fe5b60ff16815260200191505060405180910390f35b341561037157600080fd5b610386600160d860020a031960043516610de5565b604051600160d860020a03199097168752600160a060020a0395861660208801526040808801959095529285166060870152608086019190915290921660a084015260c083019190915260e0909101905180910390f35b34156103e857600080fd5b6103f0610e5a565b60405160ff909116815260200160405180910390f35b341561041157600080fd5b610419610e63565b60405160208082528190810183818151815260200191508051906020019060200280838360005b838110156104595780820151818401525b602001610440565b505050509050019250505060405180910390f35b341561047857600080fd5b61048d600160d860020a031960043516610f4c565b604051600160a060020a03909116815260200160405180910390f35b34156104b457600080fd5b6101fd610f68565b005b34156104c957600080fd5b6104d4600435610fb5565b604051600160d860020a0319909116815260200160405180910390f35b34156104fc57600080fd5b6104d4600435610fe4565b604051600160d860020a0319909116815260200160405180910390f35b341561052f57600080fd5b6101fd600160d860020a031960043516611209565b005b341561055157600080fd5b610419611350565b60405160208082528190810183818151815260200191508051906020019060200280838360005b838110156104595780820151818401525b602001610440565b505050509050019250505060405180910390f35b34156105b857600080fd5b6102dc600160a060020a036004351661140f565b60405190815260200160405180910390f35b34156105e957600080fd5b610419611422565b60405160208082528190810183818151815260200191508051906020019060200280838360005b838110156104595780820151818401525b602001610440565b505050509050019250505060405180910390f35b341561065057600080fd5b6101fd600160d860020a0319600435166024356114fb565b005b341561067557600080fd5b6101fd6115d6565b005b341561068a57600080fd5b61069f600160d860020a031960043516611657565b6040519415158552600160d860020a03199093166020850152600160a060020a0391821660408086019190915260608501919091529116608083015260a0909101905180910390f35b34156106f357600080fd5b6102dc600160d860020a03196004351661169e565b60405190815260200160405180910390f35b341561072557600080fd5b6102126116b1565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561024f5780820151818401525b602001610236565b50505050905090810190601f16801561027c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156107b057600080fd5b61041961174f565b60405160208082528190810183818151815260200191508051906020019060200280838360005b838110156104595780820151818401525b602001610440565b505050509050019250505060405180910390f35b341561081757600080fd5b6101fd600160d860020a031960043516611834565b005b341561083957600080fd5b6101fd6119a0565b005b341561084e57600080fd5b6101fd6119fb565b005b341561086357600080fd5b6101fd600160d860020a031960043516602435600160a060020a0360443516611d58565b005b341561089457600080fd5b6102dc611ed6565b60405190815260200160405180910390f35b34156108b957600080fd5b6108c1611edd565b6040516fffffffffffffffffffffffffffffffff19909116815260200160405180910390f35b34156108f257600080fd5b610907600160d860020a031960043516611ef6565b6040519315158452600160d860020a03199092166020840152600160a060020a031660408084019190915260608301919091526080909101905180910390f35b341561095257600080fd5b6101fd600160d860020a031960043516611f36565b005b341561097457600080fd5b610419612077565b60405160208082528190810183818151815260200191508051906020019060200280838360005b838110156104595780820151818401525b602001610440565b505050509050019250505060405180910390f35b6101fd600160d860020a0319600435166121a5565b005b34156109f257600080fd5b6102b261237c565b60405161ffff909116815260200160405180910390f35b3415610a1c57600080fd5b6102dc600160a060020a036004351661238e565b60405190815260200160405180910390f35b3415610a4d57600080fd5b6101fd600160d860020a031960043516600160a060020a03602435166123a1565b005b600160d860020a0319821660009081526110b66020526040902054829033600160a060020a03908116911614610aa557600080fd5b60008211610ab257600080fd5b60a0604051908101604090815260018252600160d860020a031985166020808401829052600160a060020a03331683850152606084018690526000608085018190529182526110b39052208151815460ff19169015151781556020820151815460d860020a9091046101000265ffffffffff001990911617815560408201518154600160a060020a03919091166601000000000000026000805160206127438339815191529091161781556060820151816001015560808201516002919091018054600160a060020a031916600160a060020a03909216919091179055506000600160d860020a031984167f175ebfc78c5d74e638bd7454214416a2a42d10527412f91ac6f2e693ce4344b88460405190815260200160405180910390a35b5b505050565b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610c6d5780601f10610c4257610100808354040283529160200191610c6d565b820191906000526020600020905b815481529060010190602001808311610c5057829003601f168201915b505050505081565b60005433600160a060020a039081166101009092041614610c9557600080fd5b60005b60005460ff166003811115610ca957fe5b14610cb357600080fd5b6000194301406110b255600080546003919060ff19166001835b02179055505b5b5b565b60065462010000900461ffff1681565b60055481565b60065461ffff1681565b600160d860020a0319811660009081526110b360205260409020805460ff161515610d2157600080fd5b6002810154600160a060020a03161580610d4b5750600281015433600160a060020a039081169116145b1515610d5657600080fd5b6001810154341015610d6757600080fd5b8060010154341115610d9e57600181015433600160a060020a031660009081526110b8602052604090208054349290920390910190555b600160d860020a0319821660009081526110b660205260409020546001820154610dd7918491600160a060020a039091169033906123ea565b5b5050565b60005460ff1681565b600160d860020a0319811660009081526110b660209081526040808320546110b58352818420546110b3845282852060028101546001918201546110b49096529390952080549501548695600160a060020a03938416959294841693660100000000000090910416905b919395979092949650565b60045460ff1681565b610e6b6126d1565b610e736126d1565b600654600090640100000000900461ffff16604051805910610e925750595b908082528060200260200182016040525b509150600090505b600654640100000000900461ffff16811015610f43576110b660006007836164008110610ed457fe5b600691828204019190066005025b90546101009190910a900460d860020a02600160d860020a0319168152602081019190915260400160002054600160a060020a0316828281518110610f2357fe5b600160a060020a039092166020928302909101909101525b600101610eab565b8192505b505090565b6110b660205260009081526040902054600160a060020a031681565b600160a060020a03331660008181526110b86020526040808220805492905590919082156108fc0290839051600060405180830381858888f193505050501515610fb157600080fd5b5b50565b6007816164008110610fc357fe5b600691828204019190066005025b915054906101000a900460d860020a0281565b6000808060035b60005460ff166003811115610ffc57fe5b1480611019575060025b60005460ff16600381111561101757fe5b145b151561102457600080fd5b600654600061ffff9091161161103957600080fd5b836110b25460405191825260208201526040908101905190819003902091508160025b1a60f860020a028260015b1a60f860020a028360005b1a60f860020a0217177effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600060f860020a021415156110b157600080fd5b5063ffffffff811660d860020a02600160d860020a0319811660009081526110b66020526040902054600160a060020a0316156110ed57600080fd5b6006548190600790640100000000900461ffff16616400811061110c57fe5b600691828204019190066005025b815464ffffffffff6101009290920a918202191660d860020a909304029190911790556006805465ffff000000001981166401000000009182900461ffff90811660019081018216909302919091178355600160d860020a0319841660008181526110b6602090815260408083208054600160a060020a03191633600160a060020a03169081179091558084526110b7909252918290208054909501909455845461ffff19811690841660001901909316929092179093557f80d2c1a6c75f471130a64fd71b80dc7208f721037766fb7decf53e10f82211cd905160405180910390a38092505b5b5050919050565b600160d860020a0319811660009081526110b66020526040902054819033600160a060020a0390811691161461123e57600080fd5b60a060405190810160409081526000808352600160d860020a03198516602080850182905283850183905260608501839052608085018390529082526110b39052208151815460ff19169015151781556020820151815460d860020a9091046101000265ffffffffff001990911617815560408201518154600160a060020a03919091166601000000000000026000805160206127438339815191529091161781556060820151816001015560808201516002919091018054600160a060020a031916600160a060020a0390921691909117905550600160d860020a031982167f8c299d0cc9eb68636bc5e183d2cfd85044e4af70cbf300f6c2c3f9cf4e72f35960405160405180910390a25b5b5050565b6113586126d1565b6113606126d1565b600654600090640100000000900461ffff1660405180591061137f5750595b908082528060200260200182016040525b509150600090505b600654640100000000900461ffff16811015610f435760078161640081106113bc57fe5b600691828204019190066005025b9054906101000a900460d860020a028282815181106113e557fe5b600160d860020a03199092166020928302909101909101525b600101611398565b8192505b505090565b6110b76020526000908152604090205481565b61142a6126d1565b6114326126d1565b600654600090640100000000900461ffff166040518059106114515750595b908082528060200260200182016040525b509150600090505b600654640100000000900461ffff16811015610f43576110b56000600783616400811061149357fe5b600691828204019190066005025b9054906101000a900460d860020a02600160d860020a031916600160d860020a0319168152602001908152602001600020548282815181106114df57fe5b602090810290910101525b60010161146a565b8192505b505090565b600160d860020a0319821660009081526110b66020526040902054829033600160a060020a0390811691161461153057600080fd5b600160d860020a0319831660009081526110b560205260409020541561155557600080fd5b600160d860020a0319831660009081526110b3602052604090205460ff161561157d57600080fd5b600160d860020a0319831660008181526110b56020526040908190208490557faf93a6d1ccdac374cb23b8a45184a5fbcb33c51e4471f69c088ebc18627fbd0f9084905190815260200160405180910390a25b5b505050565b60005433600160a060020a0390811661010090920416146115f657600080fd5b60005b60005460ff16600381111561160a57fe5b1461161457600080fd5b7f5713bdf5d1c3398a8f12f881f0f03b5025b6f9c17a97441a694d5752beb92a3d6110b255600080546002919060ff1916600183610ccd565b02179055505b5b5b565b6110b36020526000908152604090208054600182015460029092015460ff82169260d860020a61010084040292600160a060020a0366010000000000009091048116921685565b6110b56020526000908152604090205481565b60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610c6d5780601f10610c4257610100808354040283529160200191610c6d565b820191906000526020600020905b815481529060010190602001808311610c5057829003601f168201915b505050505081565b6117576126d1565b61175f6126d1565b6006546000908190640100000000900461ffff166040518059106117805750595b908082528060200260200182016040525b509250600091505b600654640100000000900461ffff1682101561182a5760078261640081106117bd57fe5b600691828204019190066005025b9054906101000a900460d860020a0290506110b4600082600160d860020a031916600160d860020a03191681526020019081526020016000206001015483838151811061181457fe5b602090810290910101525b600190910190611799565b8293505b50505090565b600160d860020a0319811660009081526110b460205260408120805490919060ff16151561186157600080fd5b815433600160a060020a039081166601000000000000909204161461188557600080fd5b506001810154608060405190810160409081526000808352600160d860020a031986166020808501829052838501839052606085018390529082526110b49052208151815460ff19169015151781556020820151815460d860020a9091046101000265ffffffffff001990911617815560408201518154600160a060020a0391909116660100000000000002600080516020612743833981519152909116178155606082015160019091015550600160a060020a03331681156108fc0282604051600060405180830381858888f19350505050151561196357600080fd5b600160d860020a031983167fdd2c4d3d509ed991f38f011d74ba4029a438713394421a31d518d31bd099845660405160405180910390a25b505050565b60005433600160a060020a0390811661010090920416146119c057600080fd5b60005b60005460ff1660038111156119d457fe5b146119de57600080fd5b600080546001919060ff19168280610ccd565b02179055505b5b5b565b611a03612719565b6000805481908190819033600160a060020a039081166101009092041614611a2a57600080fd5b60035b60005460ff166003811115611a3e57fe5b1480611a5b575060025b60005460ff166003811115611a5957fe5b145b1515611a6657600080fd5b60065460006201000090910461ffff1611611a8057600080fd5b60065460109062010000900461ffff165b0460110361ffff16670429d069189e00000267ffffffffffffffff169350600092505b60108360ff161015611cf357505060065462010000900461ffff9081166101000390811660d860020a02600160d860020a0319166301000000027fff00000ca700000000000000000000000000000000000000000000000000000017808560ff851660108110611b2057fe5b600160d860020a031992909216602090920201526006548190600790640100000000900461ffff166164008110611b5357fe5b600691828204019190066005025b815464ffffffffff6101009290920a918202191660d860020a9093040291909117905560068054600080526110b76020527f8b7b0506e1df5a8448d8eb7314d5008da63b5b23c742acc1ca2fe9008ea3c9988054600190810190915563ffff00001965ffff000000001983166401000000009384900461ffff908116909301831690930292909217918216620100009283900482166000190190911690910217905560a0604051908101604090815260018252600160d860020a031983166020808401829052600080546101009004600160a060020a03168486015260608501899052608085018190529182526110b39052208151815460ff19169015151781556020820151815460d860020a9091046101000265ffffffffff001990911617815560408201518154600160a060020a03919091166601000000000000026000805160206127438339815191529091161781556060820151816001015560808201516002919091018054600160a060020a031916600160a060020a03909216919091179055505b600190920191611ab4565b7fb18efff3589e0e6e1f1fdd8be3f2d2250429a242997d2a6ac3aa6f7ef1296ca985604051808261020080838360005b83811015611d3c5780820151818401525b602001611d23565b5050505090500191505060405180910390a15b5b5b5050505050565b600160d860020a0319831660009081526110b66020526040902054839033600160a060020a03908116911614611d8d57600080fd5b8180600160a060020a031633600160a060020a031614151515611daf57600080fd5b60a0604051908101604090815260018252600160d860020a031987166020808401829052600160a060020a0333811684860152606085018990528716608085015260009182526110b39052208151815460ff19169015151781556020820151815460d860020a9091046101000265ffffffffff001990911617815560408201518154600160a060020a03919091166601000000000000026000805160206127438339815191529091161781556060820151816001015560808201516002919091018054600160a060020a031916600160a060020a0392831617905584169050600160d860020a031986167f175ebfc78c5d74e638bd7454214416a2a42d10527412f91ac6f2e693ce4344b88660405190815260200160405180910390a35b5b505b50505050565b6110b25481565b6001547001000000000000000000000000000000000281565b6110b4602052600090815260409020805460019091015460ff821691610100810460d860020a02916601000000000000909104600160a060020a03169084565b600160d860020a0319811660009081526110b6602052604081205481908190849033600160a060020a03908116911614611f6f57600080fd5b600160d860020a0319851660009081526110b460205260409020805490945060ff161515611f9c57600080fd5b835460018501546601000000000000909104600160a060020a031693509150608060405190810160409081526000808352600160d860020a031988166020808501829052838501839052606085018390529082526110b49052208151815460ff19169015151781556020820151815460d860020a9091046101000265ffffffffff001990911617815560408201518154600160a060020a0391909116660100000000000002600080516020612743833981519152909116178155606082015160019091015550611d4f853385856123ea565b5b5b5050505050565b61207f6126d1565b6120876126d1565b6006546000908190640100000000900461ffff166040518059106120a85750595b908082528060200260200182016040525b509250600091505b600654640100000000900461ffff1682101561182a5760078261640081106120e557fe5b600691828204019190066005025b90546101009190910a900460d860020a02600160d860020a0319811660009081526110b3602052604090205490915060ff1680156121555750600160d860020a0319811660009081526110b36020526040902060020154600160a060020a0316155b1561218f57600160d860020a0319811660009081526110b3602052604090206001015483838151811061218457fe5b602090810290910101525b5b6001909101906120c1565b8293505b50505090565b600160d860020a0319811660009081526110b66020526040812054600160a060020a039081169033168114156121da57600080fd5b600160d860020a0319831660009081526110b66020526040902054600160a060020a0316151561220957600080fd5b600160d860020a0319831660009081526110b4602052604081209250341161223057600080fd5b6001820154341161224057600080fd5b60008260010154111561227e576001820154825466010000000000009004600160a060020a031660009081526110b860205260409020805490910190555b6080604051908101604090815260018252600160d860020a031985166020808401829052600160a060020a0333168385015234606085015260009182526110b49052208151815460ff19169015151781556020820151815460d860020a9091046101000265ffffffffff001990911617815560408201518154600160a060020a0391909116660100000000000002600080516020612743833981519152909116178155606082015160019091015550600160a060020a033316600160d860020a031984167f0beedbd4ef5e50660fe5cf7b1274e5d826c6e496020c760b9509e1f21f6962303460405190815260200160405180910390a35b5b505050565b600654640100000000900461ffff1681565b6110b86020526000908152604090205481565b600160d860020a0319821660009081526110b66020526040902054829033600160a060020a039081169116146123d657600080fd5b610bd183338460006123ea565b5b5b505050565b600160d860020a0319841660009081526110b6602090815260408083208054600160a060020a031916600160a060020a0387811691821790925590871684526110b790925280832080546000190190559082528082208054600101905560a0905190810160409081526000808352600160d860020a03198816602080850182905283850183905260608501839052608085018390529082526110b39052208151815460ff19169015151781556020820151815460d860020a9091046101000265ffffffffff001990911617815560408201518154600160a060020a039190911666010000000000000260008051602061274383398151915290911617815560608201518160010155608082015160029091018054600160a060020a03928316600160a060020a0319909116179055600160d860020a0319871660009081526110b46020526040902080549093506601000000000000900481169085161415905061261d576001810154600160a060020a03841660009081526110b860205260409081902080549092019091556080905190810160409081526000808352600160d860020a031988166020808501829052838501839052606085018390529082526110b49052208151815460ff19169015151781556020820151815460d860020a9091046101000265ffffffffff001990911617815560408201518154600160a060020a03919091166601000000000000026000805160206127438339815191529091161781556060820151600190910155505b600160a060020a0380851660008181526110b8602052604090819020805486019055918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906001905190815260200160405180910390a382600160a060020a031684600160a060020a031686600160d860020a0319167f1d9becf52be84ecb1e1e8de532c6cea871c0903fdcc9675123ca5c3c2cb436258560405190815260200160405180910390a45b5050505050565b60206040519081016040526000815290565b60206040519081016040526000815290565b60206040519081016040526000815290565b60206040519081016040526000815290565b6102006040519081016040526010815b60008152600019909101906020018161272957905050905600ffffffffffff0000000000000000000000000000000000000000ffffffffffffa165627a7a72305820a4e578d3d7c9a384b5985a5957dd2477a19f9d32052121927063bf9f549c60320029

Swarm Source

bzzr://a4e578d3d7c9a384b5985a5957dd2477a19f9d32052121927063bf9f549c6032
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.