Overview
ETH Balance
13.235991805979547024 ETH
Eth Value
$38,392.89 (@ $2,900.64/ETH)Token Holdings
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 3,341 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw | 6217404 | 2266 days ago | IN | 0 ETH | 0.00013335 | ||||
Withdraw | 6210863 | 2267 days ago | IN | 0 ETH | 0.00004267 | ||||
Create Sale Auct... | 6210335 | 2267 days ago | IN | 0 ETH | 0.00030815 | ||||
Create Sale Auct... | 6210335 | 2267 days ago | IN | 0 ETH | 0.00029549 | ||||
Create Sale Auct... | 6210335 | 2267 days ago | IN | 0 ETH | 0.00029549 | ||||
Create Sale Auct... | 6210333 | 2267 days ago | IN | 0 ETH | 0.00029549 | ||||
Create Sale Auct... | 6210332 | 2267 days ago | IN | 0 ETH | 0.00029535 | ||||
Create Sale Auct... | 6210301 | 2267 days ago | IN | 0 ETH | 0.00029535 | ||||
Create Sale Auct... | 6210286 | 2267 days ago | IN | 0 ETH | 0.00029535 | ||||
Create Sale Auct... | 6210206 | 2267 days ago | IN | 0 ETH | 0.00029535 | ||||
Create Sale Auct... | 6210206 | 2267 days ago | IN | 0 ETH | 0.00029535 | ||||
Create Sale Auct... | 6210188 | 2267 days ago | IN | 0 ETH | 0.00029535 | ||||
Create Sale Auct... | 6210188 | 2267 days ago | IN | 0 ETH | 0.00029535 | ||||
Withdraw | 6210124 | 2267 days ago | IN | 0 ETH | 0.000056 | ||||
Register Lottery | 6209370 | 2267 days ago | IN | 0 ETH | 0.00078717 | ||||
Create Sale Auct... | 6209132 | 2267 days ago | IN | 0 ETH | 0.00042194 | ||||
Create Sale Auct... | 6209132 | 2267 days ago | IN | 0 ETH | 0.00042194 | ||||
Create Sale Auct... | 6209125 | 2267 days ago | IN | 0 ETH | 0.00042194 | ||||
Create Sale Auct... | 6209118 | 2267 days ago | IN | 0 ETH | 0.00039363 | ||||
Register Lottery | 6206776 | 2267 days ago | IN | 0 ETH | 0.00070248 | ||||
Register Lottery | 6206761 | 2267 days ago | IN | 0 ETH | 0.00070148 | ||||
Register Lottery | 6202750 | 2268 days ago | IN | 0 ETH | 0.00073611 | ||||
Register Lottery | 6202748 | 2268 days ago | IN | 0 ETH | 0.00073506 | ||||
Register Lottery | 6202746 | 2268 days ago | IN | 0 ETH | 0.00073462 | ||||
Register Lottery | 6202744 | 2268 days ago | IN | 0 ETH | 0.00073357 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
6217404 | 2266 days ago | 0.04115052 ETH | ||||
6210863 | 2267 days ago | 0.69085698 ETH | ||||
6210124 | 2267 days ago | 0.00798242 ETH | ||||
6192134 | 2270 days ago | 0.04979163 ETH | ||||
6190899 | 2270 days ago | 0.04267854 ETH | ||||
6178336 | 2272 days ago | 0.001 ETH | ||||
6172569 | 2273 days ago | 0.02961495 ETH | ||||
6170638 | 2274 days ago | 0.02359279 ETH | ||||
6168098 | 2274 days ago | 0.02547005 ETH | ||||
6164310 | 2275 days ago | 0.0075 ETH | ||||
6164294 | 2275 days ago | 0.0075 ETH | ||||
6163936 | 2275 days ago | 0.0075 ETH | ||||
6163923 | 2275 days ago | 0.02547005 ETH | ||||
6161460 | 2275 days ago | 0.05520635 ETH | ||||
6156108 | 2276 days ago | 0.0075 ETH | ||||
6155629 | 2276 days ago | 0.0075 ETH | ||||
6155438 | 2276 days ago | 0.32740977 ETH | ||||
6154554 | 2276 days ago | 0.02538424 ETH | ||||
6148494 | 2277 days ago | 0.143286 ETH | ||||
6140258 | 2279 days ago | 0.0005 ETH | ||||
6140258 | 2279 days ago | 0.0077 ETH | ||||
6140255 | 2279 days ago | 0.0005 ETH | ||||
6140255 | 2279 days ago | 0.0077 ETH | ||||
6140251 | 2279 days ago | 0.0005 ETH | ||||
6140251 | 2279 days ago | 0.0077 ETH |
Loading...
Loading
Contract Name:
DogCore
Compiler Version
v0.4.18+commit.9cf6e910
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-06-06 */ pragma solidity ^0.4.18; contract Ownable { address public owner; function Ownable() public { owner = msg.sender; } modifier onlyOwner() { require(msg.sender == owner); _; } function transferOwnership(address newOwner) public onlyOwner { if (newOwner != address(0)) { owner = newOwner; } } } contract ERC721 { function totalSupply() public view returns (uint256 total); function balanceOf(address _owner) public view returns (uint256 balance); function ownerOf(uint256 _tokenId) external view returns (address owner); function approve(address _to, uint256 _tokenId) external; function transfer(address _to, uint256 _tokenId) external; function transferFrom(address _from, address _to, uint256 _tokenId) external; event Transfer(address from, address to, uint256 tokenId); event Approval(address owner, address approved, uint256 tokenId); function supportsInterface(bytes4 _interfaceID) external view returns (bool); } contract GeneScienceInterface { function isGeneScience() public pure returns (bool); function mixGenes(uint256 genes1, uint256 genes2, uint256 targetBlock) public returns (uint256); } contract VariationInterface { function isVariation() public pure returns(bool); function createVariation(uint256 _gene, uint256 _totalSupply) public returns (uint8); function registerVariation(uint256 _dogId, address _owner) public; } contract LotteryInterface { function isLottery() public pure returns (bool); function checkLottery(uint256 genes) public pure returns (uint8 lotclass); function registerLottery(uint256 _dogId) public payable returns (uint8); function getCLottery() public view returns ( uint8[7] luckyGenes1, uint256 totalAmount1, uint256 openBlock1, bool isReward1, uint256 term1, uint8 currentGenes1, uint256 tSupply, uint256 sPoolAmount1, uint256[] reward1 ); } contract DogAccessControl { event ContractUpgrade(address newContract); address public ceoAddress; address public cfoAddress; address public cooAddress; bool public paused = false; modifier onlyCEO() { require(msg.sender == ceoAddress); _; } modifier onlyCFO() { require(msg.sender == cfoAddress); _; } modifier onlyCOO() { require(msg.sender == cooAddress); _; } modifier onlyCLevel() { require(msg.sender == cooAddress || msg.sender == ceoAddress || msg.sender == cfoAddress); _; } function setCEO(address _newCEO) external onlyCEO { require(_newCEO != address(0)); ceoAddress = _newCEO; } function setCFO(address _newCFO) external onlyCEO { require(_newCFO != address(0)); cfoAddress = _newCFO; } function setCOO(address _newCOO) external onlyCEO { require(_newCOO != address(0)); cooAddress = _newCOO; } modifier whenNotPaused() { require(!paused); _; } modifier whenPaused { require(paused); _; } function pause() external onlyCLevel whenNotPaused { paused = true; } function unpause() public onlyCEO whenPaused { paused = false; } } contract DogBase is DogAccessControl { event Birth(address owner, uint256 dogId, uint256 matronId, uint256 sireId, uint256 genes, uint16 generation, uint8 variation, uint256 gen0, uint256 birthTime, uint256 income, uint16 cooldownIndex); event Transfer(address from, address to, uint256 tokenId); struct Dog { uint256 genes; uint256 birthTime; uint64 cooldownEndBlock; uint32 matronId; uint32 sireId; uint32 siringWithId; uint16 cooldownIndex; uint16 generation; uint8 variation; uint256 gen0; } uint32[14] public cooldowns = [ uint32(1 minutes), uint32(2 minutes), uint32(5 minutes), uint32(10 minutes), uint32(30 minutes), uint32(1 hours), uint32(2 hours), uint32(4 hours), uint32(8 hours), uint32(16 hours), uint32(24 hours), uint32(2 days), uint32(3 days), uint32(5 days) ]; uint256 public secondsPerBlock = 15; Dog[] dogs; mapping (uint256 => address) dogIndexToOwner; mapping (address => uint256) ownershipTokenCount; mapping (uint256 => address) public dogIndexToApproved; mapping (uint256 => address) public sireAllowedToAddress; SaleClockAuction public saleAuction; SiringClockAuction public siringAuction; VariationInterface public variation; LotteryInterface public lottery; uint256 public autoBirthFee = 7500 szabo; uint256 public gen0Profit = 500 szabo; uint256 public creationProfit = 1000 szabo; mapping (address => uint256) public profit; function _sendMoney(address _to, uint256 _money) internal { spendMoney += _money; require(address(this).balance >= spendMoney); profit[_to] += _money; } function sendMoney(address _to, uint256 _money) external { require(msg.sender == address(lottery) || msg.sender == address(variation)); _sendMoney(_to, _money); } event Withdraw(address _owner, uint256 _value); function withdraw() public { uint256 value = profit[msg.sender]; require(value > 0); msg.sender.transfer(value); spendMoney -= value; delete profit[msg.sender]; Withdraw(msg.sender, value); } uint256 public spendMoney; function setGen0Profit(uint256 _value) public onlyCEO { uint256 ration = _value * 100 / autoBirthFee; require(ration > 0); require(_value <= 100); gen0Profit = _value; } function setCreationProfit(uint256 _value) public onlyCEO { uint256 ration = _value * 100 / autoBirthFee; require(ration > 0); require(_value <= 100); creationProfit = _value; } function _transfer(address _from, address _to, uint256 _tokenId) internal { ownershipTokenCount[_to]++; dogIndexToOwner[_tokenId] = _to; if (_from != address(0)) { ownershipTokenCount[_from]--; delete sireAllowedToAddress[_tokenId]; delete dogIndexToApproved[_tokenId]; } Transfer(_from, _to, _tokenId); } function _createDog( uint256 _matronId, uint256 _sireId, uint256 _generation, uint256 _genes, address _owner, uint8 _variation, uint256 _gen0, bool _isGen0Siring ) internal returns (uint) { require(_matronId == uint256(uint32(_matronId))); require(_sireId == uint256(uint32(_sireId))); require(_generation == uint256(uint16(_generation))); uint16 cooldownIndex = uint16(_generation / 2); if (cooldownIndex > 13) { cooldownIndex = 13; } Dog memory _dog = Dog({ genes: _genes, birthTime: block.number, cooldownEndBlock: 0, matronId: uint32(_matronId), sireId: uint32(_sireId), siringWithId: 0, cooldownIndex: cooldownIndex, generation: uint16(_generation), variation : uint8(_variation), gen0 : _gen0 }); uint256 newDogId = dogs.push(_dog) - 1; require(newDogId < 23887872); Birth( _owner, newDogId, uint256(_dog.matronId), uint256(_dog.sireId), _dog.genes, uint16(_generation), _variation, _gen0, block.number, _isGen0Siring ? 0 : gen0Profit, cooldownIndex ); _transfer(0, _owner, newDogId); return newDogId; } function setSecondsPerBlock(uint256 secs) external onlyCLevel { require(secs < cooldowns[0]); secondsPerBlock = secs; } } contract DogOwnership is DogBase, ERC721 { string public constant name = "HelloDog"; string public constant symbol = "HD"; bytes4 constant InterfaceSignature_ERC165 = bytes4(keccak256("supportsInterface(bytes4)")); bytes4 constant InterfaceSignature_ERC721 = bytes4(keccak256("name()")) ^ bytes4(keccak256("symbol()")) ^ bytes4(keccak256("totalSupply()")) ^ bytes4(keccak256("balanceOf(address)")) ^ bytes4(keccak256("ownerOf(uint256)")) ^ bytes4(keccak256("approve(address,uint256)")) ^ bytes4(keccak256("transfer(address,uint256)")) ^ bytes4(keccak256("transferFrom(address,address,uint256)")); function supportsInterface(bytes4 _interfaceID) external view returns (bool) { return ((_interfaceID == InterfaceSignature_ERC165) || (_interfaceID == InterfaceSignature_ERC721)); } function _owns(address _claimant, uint256 _tokenId) internal view returns (bool) { return dogIndexToOwner[_tokenId] == _claimant; } function _approvedFor(address _claimant, uint256 _tokenId) internal view returns (bool) { return dogIndexToApproved[_tokenId] == _claimant; } function _approve(uint256 _tokenId, address _approved) internal { dogIndexToApproved[_tokenId] = _approved; } function balanceOf(address _owner) public view returns (uint256 count) { return ownershipTokenCount[_owner]; } function transfer( address _to, uint256 _tokenId ) external whenNotPaused { require(_to != address(0)); require(_to != address(this)); require(_to != address(saleAuction)); require(_to != address(siringAuction)); require(_owns(msg.sender, _tokenId)); _transfer(msg.sender, _to, _tokenId); } function approve( address _to, uint256 _tokenId ) external whenNotPaused { require(_owns(msg.sender, _tokenId)); _approve(_tokenId, _to); Approval(msg.sender, _to, _tokenId); } function transferFrom( address _from, address _to, uint256 _tokenId ) external whenNotPaused { require(_to != address(0)); require(_to != address(this)); require(_approvedFor(msg.sender, _tokenId)); require(_owns(_from, _tokenId)); _transfer(_from, _to, _tokenId); } function totalSupply() public view returns (uint) { return dogs.length - 1; } function ownerOf(uint256 _tokenId) external view returns (address owner) { owner = dogIndexToOwner[_tokenId]; require(owner != address(0)); } } contract DogBreeding is DogOwnership { event Pregnant(address owner, uint256 matronId, uint256 sireId, uint256 matronCooldownEndBlock, uint256 sireCooldownEndBlock, uint256 matronCooldownIndex, uint256 sireCooldownIndex); uint256 public pregnantDogs; GeneScienceInterface public geneScience; function setGeneScienceAddress(address _address) external onlyCEO { GeneScienceInterface candidateContract = GeneScienceInterface(_address); require(candidateContract.isGeneScience()); geneScience = candidateContract; } function _isReadyToBreed(Dog _dog) internal view returns (bool) { return (_dog.siringWithId == 0) && (_dog.cooldownEndBlock <= uint64(block.number)); } function _isSiringPermitted(uint256 _sireId, uint256 _matronId) internal view returns (bool) { address matronOwner = dogIndexToOwner[_matronId]; address sireOwner = dogIndexToOwner[_sireId]; return (matronOwner == sireOwner || sireAllowedToAddress[_sireId] == matronOwner); } function _triggerCooldown(Dog storage _dog) internal { _dog.cooldownEndBlock = uint64((cooldowns[_dog.cooldownIndex]/secondsPerBlock) + block.number); if (_dog.cooldownIndex < 13) { _dog.cooldownIndex += 1; } } function approveSiring(address _addr, uint256 _sireId) external whenNotPaused { require(_owns(msg.sender, _sireId)); sireAllowedToAddress[_sireId] = _addr; } function setAutoBirthFee(uint256 val) external onlyCEO { require(val > 0); autoBirthFee = val; } function _isReadyToGiveBirth(Dog _matron) private view returns (bool) { return (_matron.siringWithId != 0) && (_matron.cooldownEndBlock <= uint64(block.number)); } function isReadyToBreed(uint256 _dogId) public view returns (bool) { require(_dogId > 1); Dog storage dog = dogs[_dogId]; return _isReadyToBreed(dog); } function isPregnant(uint256 _dogId) public view returns (bool) { return dogs[_dogId].siringWithId != 0; } function _isValidMatingPair( Dog storage _matron, uint256 _matronId, Dog storage _sire, uint256 _sireId ) private view returns(bool) { if (_matronId == _sireId) { return false; } if (_matron.matronId == _sireId || _matron.sireId == _sireId) { return false; } if (_sire.matronId == _matronId || _sire.sireId == _matronId) { return false; } if (_sire.matronId == 0 || _matron.matronId == 0) { return true; } if (_sire.matronId == _matron.matronId || _sire.matronId == _matron.sireId) { return false; } if (_sire.sireId == _matron.matronId || _sire.sireId == _matron.sireId) { return false; } return true; } function _canBreedWithViaAuction(uint256 _matronId, uint256 _sireId) internal view returns (bool) { Dog storage matron = dogs[_matronId]; Dog storage sire = dogs[_sireId]; return _isValidMatingPair(matron, _matronId, sire, _sireId); } function getOwner(uint256 _tokenId) public view returns(address){ address owner = dogIndexToOwner[_tokenId]; if(owner == address(saleAuction)){ return saleAuction.getSeller(_tokenId); } else if (owner == address(siringAuction)){ return siringAuction.getSeller(_tokenId); } else if (owner == address(this)){ return address(0); } return owner; } function _breedWith(uint256 _matronId, uint256 _sireId) internal { require(_matronId > 1); require(_sireId > 1); Dog storage sire = dogs[_sireId]; Dog storage matron = dogs[_matronId]; require(sire.variation == 0); require(matron.variation == 0); if (matron.generation > 0) { var(,,openBlock,,,,,,) = lottery.getCLottery(); if (matron.birthTime < openBlock) { require(lottery.checkLottery(matron.genes) == 100); } } matron.siringWithId = uint32(_sireId); _triggerCooldown(sire); _triggerCooldown(matron); delete sireAllowedToAddress[_matronId]; delete sireAllowedToAddress[_sireId]; pregnantDogs++; cfoAddress.transfer(autoBirthFee); address owner = getOwner(0); if(owner != address(0)){ _sendMoney(owner, creationProfit); } owner = getOwner(1); if(owner != address(0)){ _sendMoney(owner, creationProfit); } if (matron.generation > 0) { owner = getOwner(matron.gen0); if(owner != address(0)){ _sendMoney(owner, gen0Profit); } } Pregnant(dogIndexToOwner[_matronId], _matronId, _sireId, matron.cooldownEndBlock, sire.cooldownEndBlock, matron.cooldownIndex, sire.cooldownIndex); } function breedWithAuto(uint256 _matronId, uint256 _sireId) external payable whenNotPaused { uint256 totalFee = autoBirthFee + creationProfit + creationProfit; Dog storage matron = dogs[_matronId]; if (matron.generation > 0) { totalFee += gen0Profit; } require(msg.value >= totalFee); require(_owns(msg.sender, _matronId)); require(_isSiringPermitted(_sireId, _matronId)); require(_isReadyToBreed(matron)); Dog storage sire = dogs[_sireId]; require(_isReadyToBreed(sire)); require(_isValidMatingPair(matron, _matronId, sire, _sireId)); _breedWith(_matronId, _sireId); uint256 breedExcess = msg.value - totalFee; if (breedExcess > 0) { msg.sender.transfer(breedExcess); } } bool public giveBirthByUser = false; function setGiveBirthType(bool _value) public onlyCEO { giveBirthByUser = _value; } function giveBirth(uint256 _matronId, uint256 genes) external whenNotPaused returns(uint256) { Dog storage matron = dogs[_matronId]; require(matron.birthTime != 0); require(_isReadyToGiveBirth(matron)); uint256 sireId = matron.siringWithId; Dog storage sire = dogs[sireId]; uint16 parentGen = matron.generation; if (sire.generation > matron.generation) { parentGen = sire.generation; } uint256 gen0 = matron.generation == 0 ? _matronId : matron.gen0; uint256 childGenes = genes; if(giveBirthByUser){ require(address(geneScience) != address(0)); childGenes = geneScience.mixGenes(matron.genes, sire.genes, matron.cooldownEndBlock - 1); } else { require(msg.sender == ceoAddress || msg.sender == cooAddress || msg.sender == cfoAddress); } address owner = dogIndexToOwner[_matronId]; uint8 _variation = variation.createVariation(childGenes, dogs.length); bool isGen0Siring = matron.generation == 0; uint256 kittenId = _createDog(_matronId, matron.siringWithId, parentGen + 1, childGenes, owner, _variation, gen0, isGen0Siring); delete matron.siringWithId; pregnantDogs--; if(_variation != 0){ variation.registerVariation(kittenId, owner); _transfer(owner, address(variation), kittenId); } return kittenId; } } contract ClockAuctionBase { struct Auction { address seller; uint128 startingPrice; uint128 endingPrice; uint64 duration; uint64 startedAt; } ERC721 public nonFungibleContract; uint256 public ownerCut; mapping (uint256 => Auction) tokenIdToAuction; event AuctionCreated(uint256 tokenId, uint256 startingPrice, uint256 endingPrice, uint256 duration); event AuctionSuccessful(uint256 tokenId, uint256 totalPrice, address winner); event AuctionCancelled(uint256 tokenId); function _owns(address _claimant, uint256 _tokenId) internal view returns (bool) { return (nonFungibleContract.ownerOf(_tokenId) == _claimant); } function _escrow(address _owner, uint256 _tokenId) internal { nonFungibleContract.transferFrom(_owner, this, _tokenId); } function _transfer(address _receiver, uint256 _tokenId) internal { nonFungibleContract.transfer(_receiver, _tokenId); } function _addAuction(uint256 _tokenId, Auction _auction) internal { require(_auction.duration >= 1 minutes); tokenIdToAuction[_tokenId] = _auction; AuctionCreated( uint256(_tokenId), uint256(_auction.startingPrice), uint256(_auction.endingPrice), uint256(_auction.duration) ); } function _cancelAuction(uint256 _tokenId, address _seller) internal { _removeAuction(_tokenId); _transfer(_seller, _tokenId); AuctionCancelled(_tokenId); } function _bid(uint256 _tokenId, uint256 _bidAmount, address _to) internal returns (uint256) { Auction storage auction = tokenIdToAuction[_tokenId]; require(_isOnAuction(auction)); uint256 price = _currentPrice(auction); uint256 auctioneerCut = computeCut(price); uint256 fee = 0; if (_tokenId == 0 || _tokenId == 1) { fee = price / 5; } require((_bidAmount + auctioneerCut + fee) >= price); address seller = auction.seller; _removeAuction(_tokenId); if (price > 0) { uint256 sellerProceeds = price - auctioneerCut - fee; seller.transfer(sellerProceeds); } AuctionSuccessful(_tokenId, price, _to); return price; } function _removeAuction(uint256 _tokenId) internal { delete tokenIdToAuction[_tokenId]; } function _isOnAuction(Auction storage _auction) internal view returns (bool) { return (_auction.startedAt > 0); } function _currentPrice(Auction storage _auction) internal view returns (uint256) { uint256 secondsPassed = 0; if (now > _auction.startedAt) { secondsPassed = now - _auction.startedAt; } return _computeCurrentPrice( _auction.startingPrice, _auction.endingPrice, _auction.duration, secondsPassed ); } function _computeCurrentPrice( uint256 _startingPrice, uint256 _endingPrice, uint256 _duration, uint256 _secondsPassed ) internal pure returns (uint256) { if (_secondsPassed >= _duration) { return _endingPrice; } else { int256 totalPriceChange = int256(_endingPrice) - int256(_startingPrice); int256 currentPriceChange = totalPriceChange * int256(_secondsPassed) / int256(_duration); int256 currentPrice = int256(_startingPrice) + currentPriceChange; return uint256(currentPrice); } } function computeCut(uint256 _price) public view returns (uint256) { return _price * ownerCut / 10000; } } contract Pausable is Ownable { event Pause(); event Unpause(); bool public paused = false; modifier whenNotPaused() { require(!paused); _; } modifier whenPaused { require(paused); _; } function pause() public onlyOwner whenNotPaused returns (bool) { paused = true; Pause(); return true; } function unpause() public onlyOwner whenPaused returns (bool) { paused = false; Unpause(); return true; } } contract ClockAuction is Pausable, ClockAuctionBase { bytes4 constant InterfaceSignature_ERC721 = bytes4(keccak256("name()")) ^ bytes4(keccak256("symbol()")) ^ bytes4(keccak256("totalSupply()")) ^ bytes4(keccak256("balanceOf(address)")) ^ bytes4(keccak256("ownerOf(uint256)")) ^ bytes4(keccak256("approve(address,uint256)")) ^ bytes4(keccak256("transfer(address,uint256)")) ^ bytes4(keccak256("transferFrom(address,address,uint256)")); function ClockAuction(address _nftAddress, uint256 _cut) public { require(_cut <= 10000); ownerCut = _cut; ERC721 candidateContract = ERC721(_nftAddress); require(candidateContract.supportsInterface(InterfaceSignature_ERC721)); nonFungibleContract = candidateContract; } function withdrawBalance() external { address nftAddress = address(nonFungibleContract); require( msg.sender == owner || msg.sender == nftAddress ); nftAddress.transfer(address(this).balance); } function cancelAuction(uint256 _tokenId) external { require(_tokenId > 1); Auction storage auction = tokenIdToAuction[_tokenId]; require(_isOnAuction(auction)); address seller = auction.seller; require(msg.sender == seller); _cancelAuction(_tokenId, seller); } function cancelAuctionWhenPaused(uint256 _tokenId) whenPaused onlyOwner external { Auction storage auction = tokenIdToAuction[_tokenId]; require(_isOnAuction(auction)); _cancelAuction(_tokenId, auction.seller); } function getAuction(uint256 _tokenId) external view returns ( address seller, uint256 startingPrice, uint256 endingPrice, uint256 duration, uint256 startedAt ) { Auction storage auction = tokenIdToAuction[_tokenId]; require(_isOnAuction(auction)); return ( auction.seller, auction.startingPrice, auction.endingPrice, auction.duration, auction.startedAt ); } function getSeller(uint256 _tokenId) external view returns(address){ Auction storage auction = tokenIdToAuction[_tokenId]; if(_isOnAuction(auction)){ return auction.seller; } else { return nonFungibleContract.ownerOf(_tokenId); } } function getCurrentPrice(uint256 _tokenId) external view returns (uint256) { Auction storage auction = tokenIdToAuction[_tokenId]; require(_isOnAuction(auction)); return _currentPrice(auction); } } contract SiringClockAuction is ClockAuction { bool public isSiringClockAuction = true; function SiringClockAuction(address _nftAddr, uint256 _cut) public ClockAuction(_nftAddr, _cut) {} function createAuction( uint256 _tokenId, uint256 _startingPrice, uint256 _endingPrice, uint256 _duration, address _seller ) external { require(_startingPrice == uint256(uint128(_startingPrice))); require(_endingPrice == uint256(uint128(_endingPrice))); require(_duration == uint256(uint64(_duration))); require(msg.sender == address(nonFungibleContract)); _escrow(_seller, _tokenId); Auction memory auction = Auction( _seller, uint128(_startingPrice), uint128(_endingPrice), uint64(_duration), uint64(now) ); _addAuction(_tokenId, auction); } function bid(uint256 _tokenId, address _to) external payable { require(msg.sender == address(nonFungibleContract)); address seller = tokenIdToAuction[_tokenId].seller; _bid(_tokenId, msg.value, _to); _transfer(seller, _tokenId); } } contract SaleClockAuction is ClockAuction { bool public isSaleClockAuction = true; uint256 public gen0SaleCount; uint256[5] public lastGen0SalePrices; function SaleClockAuction(address _nftAddr, uint256 _cut) public ClockAuction(_nftAddr, _cut) {} function createAuction( uint256 _tokenId, uint256 _startingPrice, uint256 _endingPrice, uint256 _duration, address _seller ) external { require(_startingPrice == uint256(uint128(_startingPrice))); require(_endingPrice == uint256(uint128(_endingPrice))); require(_duration == uint256(uint64(_duration))); require(msg.sender == address(nonFungibleContract)); _escrow(_seller, _tokenId); Auction memory auction = Auction( _seller, uint128(_startingPrice), uint128(_endingPrice), uint64(_duration), uint64(now) ); _addAuction(_tokenId, auction); } function bid(uint256 _tokenId, address _to) external payable { require(msg.sender == address(nonFungibleContract)); address seller = tokenIdToAuction[_tokenId].seller; require(seller != _to); uint256 price = _bid(_tokenId, msg.value, _to); _transfer(_to, _tokenId); if (seller == address(nonFungibleContract)) { lastGen0SalePrices[gen0SaleCount % 5] = price; gen0SaleCount++; } } function averageGen0SalePrice() external view returns (uint256) { uint256 sum = 0; for (uint256 i = 0; i < 5; i++) { sum += lastGen0SalePrices[i]; } return sum / 5; } } contract DogAuction is DogBreeding { uint256 public constant GEN0_AUCTION_DURATION = 1 days; function setSaleAuctionAddress(address _address) external onlyCEO { SaleClockAuction candidateContract = SaleClockAuction(_address); require(candidateContract.isSaleClockAuction()); saleAuction = candidateContract; } function setSiringAuctionAddress(address _address) external onlyCEO { SiringClockAuction candidateContract = SiringClockAuction(_address); require(candidateContract.isSiringClockAuction()); siringAuction = candidateContract; } function createSaleAuction( uint256 _dogId, uint256 _startingPrice, uint256 _endingPrice, uint256 _duration ) external whenNotPaused { require(_owns(msg.sender, _dogId) || _approvedFor(msg.sender, _dogId)); require(!isPregnant(_dogId)); _approve(_dogId, saleAuction); saleAuction.createAuction( _dogId, _startingPrice, _endingPrice, _duration, dogIndexToOwner[_dogId] ); } function createSiringAuction( uint256 _dogId, uint256 _startingPrice, uint256 _endingPrice, uint256 _duration ) external whenNotPaused { Dog storage dog = dogs[_dogId]; require(dog.variation == 0); require(_owns(msg.sender, _dogId)); require(isReadyToBreed(_dogId)); _approve(_dogId, siringAuction); siringAuction.createAuction( _dogId, _startingPrice, _endingPrice, _duration, msg.sender ); } function bidOnSiringAuction( uint256 _sireId, uint256 _matronId ) external payable whenNotPaused { require(_owns(msg.sender, _matronId)); require(isReadyToBreed(_matronId)); require(_canBreedWithViaAuction(_matronId, _sireId)); uint256 currentPrice = siringAuction.getCurrentPrice(_sireId); uint256 totalFee = currentPrice + autoBirthFee + creationProfit + creationProfit; Dog storage matron = dogs[_matronId]; if (matron.generation > 0) { totalFee += gen0Profit; } require(msg.value >= totalFee); uint256 auctioneerCut = saleAuction.computeCut(currentPrice); siringAuction.bid.value(currentPrice - auctioneerCut)(_sireId, msg.sender); _breedWith(uint32(_matronId), uint32(_sireId)); uint256 bidExcess = msg.value - totalFee; if (bidExcess > 0) { msg.sender.transfer(bidExcess); } } function bidOnSaleAuction( uint256 _dogId ) external payable whenNotPaused { Dog storage dog = dogs[_dogId]; if (dog.generation > 0) { var(,,openBlock,,,,,,) = lottery.getCLottery(); if (dog.birthTime < openBlock) { require(lottery.checkLottery(dog.genes) == 100); } } uint256 currentPrice = saleAuction.getCurrentPrice(_dogId); require(msg.value >= currentPrice); bool isCreationKitty = _dogId == 0 || _dogId == 1; uint256 fee = 0; if (isCreationKitty) { fee = uint256(currentPrice / 5); } uint256 auctioneerCut = saleAuction.computeCut(currentPrice); saleAuction.bid.value(currentPrice - (auctioneerCut + fee))(_dogId, msg.sender); if (isCreationKitty) { cfoAddress.transfer(fee); uint256 nextPrice = uint256(uint128(2 * currentPrice)); if (nextPrice < currentPrice) { nextPrice = currentPrice; } _approve(_dogId, saleAuction); saleAuction.createAuction( _dogId, nextPrice, nextPrice, GEN0_AUCTION_DURATION, msg.sender); } uint256 bidExcess = msg.value - currentPrice; if (bidExcess > 0) { msg.sender.transfer(bidExcess); } } } contract DogMinting is DogAuction { uint256 public constant GEN0_CREATION_LIMIT = 40000; uint256 public constant GEN0_STARTING_PRICE = 200 finney; uint256 public gen0CreatedCount; function createGen0Dog(uint256 _genes) external onlyCLevel returns(uint256) { require(gen0CreatedCount < GEN0_CREATION_LIMIT); uint256 dogId = _createDog(0, 0, 0, _genes, address(this), 0, 0, false); _approve(dogId, msg.sender); gen0CreatedCount++; return dogId; } function computeNextGen0Price() public view returns (uint256) { uint256 avePrice = saleAuction.averageGen0SalePrice(); require(avePrice == uint256(uint128(avePrice))); uint256 nextPrice = avePrice + (avePrice / 2); if (nextPrice < GEN0_STARTING_PRICE) { nextPrice = GEN0_STARTING_PRICE; } return nextPrice; } } contract DogCore is DogMinting { address public newContractAddress; function DogCore() public { paused = true; ceoAddress = msg.sender; cooAddress = msg.sender; _createDog(0, 0, 0, uint256(0), address(this), 0, 0, false); _approve(0, cooAddress); _createDog(0, 0, 0, uint256(0), address(this), 0, 0, false); _approve(1, cooAddress); } function setNewAddress(address _v2Address) external onlyCEO whenPaused { newContractAddress = _v2Address; ContractUpgrade(_v2Address); } function() external payable { require( msg.sender == address(saleAuction) || msg.sender == address(siringAuction) || msg.sender == ceoAddress ); } function getDog(uint256 _id) external view returns ( uint256 cooldownIndex, uint256 nextActionAt, uint256 siringWithId, uint256 birthTime, uint256 matronId, uint256 sireId, uint256 generation, uint256 genes, uint8 variation, uint256 gen0 ) { Dog storage dog = dogs[_id]; cooldownIndex = uint256(dog.cooldownIndex); nextActionAt = uint256(dog.cooldownEndBlock); siringWithId = uint256(dog.siringWithId); birthTime = uint256(dog.birthTime); matronId = uint256(dog.matronId); sireId = uint256(dog.sireId); generation = uint256(dog.generation); genes = uint256(dog.genes); variation = uint8(dog.variation); gen0 = uint256(dog.gen0); } function unpause() public onlyCEO whenPaused { require(saleAuction != address(0)); require(siringAuction != address(0)); require(lottery != address(0)); require(variation != address(0)); require(newContractAddress == address(0)); super.unpause(); } function setLotteryAddress(address _address) external onlyCEO { require(address(lottery) == address(0)); LotteryInterface candidateContract = LotteryInterface(_address); require(candidateContract.isLottery()); lottery = candidateContract; } function setVariationAddress(address _address) external onlyCEO { require(address(variation) == address(0)); VariationInterface candidateContract = VariationInterface(_address); require(candidateContract.isVariation()); variation = candidateContract; } function registerLottery(uint256 _dogId) external returns (uint8) { require(_owns(msg.sender, _dogId)); require(lottery.registerLottery(_dogId) == 0); _transfer(msg.sender, address(lottery), _dogId); } function getAvailableBlance() external view returns(uint256){ return address(this).balance - spendMoney; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[{"name":"_interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"profit","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getAvailableBlance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cfoAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ceoAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"giveBirthByUser","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"computeNextGen0Price","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"GEN0_STARTING_PRICE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"setSiringAuctionAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_dogId","type":"uint256"}],"name":"isPregnant","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"GEN0_AUCTION_DURATION","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"siringAuction","outputs":[{"name":"","type":"address"}],"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":"_address","type":"address"}],"name":"setGeneScienceAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newCEO","type":"address"}],"name":"setCEO","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"setLotteryAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newCOO","type":"address"}],"name":"setCOO","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"pregnantDogs","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"creationProfit","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_dogId","type":"uint256"},{"name":"_startingPrice","type":"uint256"},{"name":"_endingPrice","type":"uint256"},{"name":"_duration","type":"uint256"}],"name":"createSaleAuction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"sireAllowedToAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_dogId","type":"uint256"},{"name":"_startingPrice","type":"uint256"},{"name":"_endingPrice","type":"uint256"},{"name":"_duration","type":"uint256"}],"name":"createSiringAuction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"val","type":"uint256"}],"name":"setAutoBirthFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"gen0Profit","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"},{"name":"_sireId","type":"uint256"}],"name":"approveSiring","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newCFO","type":"address"}],"name":"setCFO","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"secs","type":"uint256"}],"name":"setSecondsPerBlock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","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":"GEN0_CREATION_LIMIT","outputs":[{"name":"","type":"uint256"}],"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":"_dogId","type":"uint256"}],"name":"registerLottery","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"setSaleAuctionAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"count","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_v2Address","type":"address"}],"name":"setNewAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"secondsPerBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_matronId","type":"uint256"},{"name":"genes","type":"uint256"}],"name":"giveBirth","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_id","type":"uint256"}],"name":"getDog","outputs":[{"name":"cooldownIndex","type":"uint256"},{"name":"nextActionAt","type":"uint256"},{"name":"siringWithId","type":"uint256"},{"name":"birthTime","type":"uint256"},{"name":"matronId","type":"uint256"},{"name":"sireId","type":"uint256"},{"name":"generation","type":"uint256"},{"name":"genes","type":"uint256"},{"name":"variation","type":"uint8"},{"name":"gen0","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"cooldowns","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"setGen0Profit","outputs":[],"payable":false,"stateMutability":"nonpayable","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":"_genes","type":"uint256"}],"name":"createGen0Dog","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_dogId","type":"uint256"}],"name":"bidOnSaleAuction","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"cooAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"autoBirthFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lottery","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"setCreationProfit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"getOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"bool"}],"name":"setGiveBirthType","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_dogId","type":"uint256"}],"name":"isReadyToBreed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"dogIndexToApproved","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"setVariationAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"variation","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"saleAuction","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"spendMoney","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_sireId","type":"uint256"},{"name":"_matronId","type":"uint256"}],"name":"bidOnSiringAuction","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_money","type":"uint256"}],"name":"sendMoney","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"gen0CreatedCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"geneScience","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_matronId","type":"uint256"},{"name":"_sireId","type":"uint256"}],"name":"breedWithAuto","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"owner","type":"address"},{"indexed":false,"name":"matronId","type":"uint256"},{"indexed":false,"name":"sireId","type":"uint256"},{"indexed":false,"name":"matronCooldownEndBlock","type":"uint256"},{"indexed":false,"name":"sireCooldownEndBlock","type":"uint256"},{"indexed":false,"name":"matronCooldownIndex","type":"uint256"},{"indexed":false,"name":"sireCooldownIndex","type":"uint256"}],"name":"Pregnant","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"from","type":"address"},{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"owner","type":"address"},{"indexed":false,"name":"approved","type":"address"},{"indexed":false,"name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"owner","type":"address"},{"indexed":false,"name":"dogId","type":"uint256"},{"indexed":false,"name":"matronId","type":"uint256"},{"indexed":false,"name":"sireId","type":"uint256"},{"indexed":false,"name":"genes","type":"uint256"},{"indexed":false,"name":"generation","type":"uint16"},{"indexed":false,"name":"variation","type":"uint8"},{"indexed":false,"name":"gen0","type":"uint256"},{"indexed":false,"name":"birthTime","type":"uint256"},{"indexed":false,"name":"income","type":"uint256"},{"indexed":false,"name":"cooldownIndex","type":"uint16"}],"name":"Birth","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_owner","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Withdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newContract","type":"address"}],"name":"ContractUpgrade","type":"event"}]
Contract Creation Code
606060409081526002805460a060020a60ff02191690556101c090519081016040908152603c82526078602083015261012c9082015261025860608201526107086080820152610e1060a0820152611c2060c082015261384060e082015261708061010082015261e100610120820152620151806101408201526202a3006101608201526203f480610180820152620697806101a0820152620000a790600390600e620005f1565b50600f6005819055661aa535d3d0c00090556601c6bf5263400060105566038d7ea4c680006011556015805460a060020a60ff02191690553415620000eb57600080fd5b6002805460008054600160a060020a033316600160a060020a03199182168117835560a060020a60ff0219909316740100000000000000000000000000000000000000001716909117909155620001579080808030818080640100000000620030cc620001d082021704565b506002546200018090600090600160a060020a031664010000000062002f0b620004da82021704565b620001a1600080808030818080640100000000620030cc620001d082021704565b50600254620001ca90600190600160a060020a031664010000000062002f0b620004da82021704565b62000797565b600080620001dd62000694565b600063ffffffff8c168c14620001f257600080fd5b63ffffffff8b168b146200020557600080fd5b61ffff8a168a146200021657600080fd5b60028a049250600d8361ffff1611156200022f57600d92505b61014060405190810160409081528a8252436020830152600090820181905263ffffffff808f1660608401528d16608083015260a082015261ffff80851660c08301528b1660e082015260ff8816610100820152610120810187905260068054919350600191808301620002a48382620006e8565b600092835260209092208591600402018151815560208201518160010155604082015160028201805467ffffffffffffffff191667ffffffffffffffff9290921691909117905560608201518160020160086101000a81548163ffffffff021916908363ffffffff160217905550608082015181600201600c6101000a81548163ffffffff021916908363ffffffff16021790555060a08201518160020160106101000a81548163ffffffff021916908363ffffffff16021790555060c08201518160020160146101000a81548161ffff021916908361ffff16021790555060e08201518160020160166101000a81548161ffff021916908361ffff1602179055506101008201518160020160186101000a81548160ff021916908360ff1602179055506101208201516003909101555003905063016c80008110620003e957600080fd5b7f746319248c02be7f11174ecd7121305fe37ffe8b19a6abef96df84f321a84e338882846060015163ffffffff16856080015163ffffffff1686518f8d8d438e62000437576010546200043a565b60005b8d604051600160a060020a03909b168b5260208b01999099526040808b019890985260608a0196909652608089019490945261ffff92831660a089015260ff90911660c088015260e087015261010086019190915261012085019190915291909116610140830152610160909101905180910390a1620004cb6000898364010000000062002f596200050882021704565b9b9a5050505050505050505050565b6000918252600960205260409091208054600160a060020a031916600160a060020a03909216919091179055565b600160a060020a03808316600081815260086020908152604080832080546001019055858352600790915290208054600160a060020a03191690911790558316156200059c57600160a060020a03831660009081526008602090815260408083208054600019019055838352600a82528083208054600160a060020a03199081169091556009909252909120805490911690555b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838383604051600160a060020a039384168152919092166020820152604080820192909252606001905180910390a1505050565b600283019183908215620006825791602002820160005b838211156200064e57835183826101000a81548163ffffffff021916908363ffffffff160217905550926020019260040160208160030104928301926001030262000608565b8015620006805782816101000a81549063ffffffff02191690556004016020816003010492830192600103026200064e565b505b50620006909291506200071c565b5090565b6101406040519081016040908152600080835260208301819052908201819052606082018190526080820181905260a0820181905260c0820181905260e08201819052610100820181905261012082015290565b815481835581811511620007175760040281600402836000526020600020918201910162000717919062000743565b505050565b6200074091905b808211156200069057805463ffffffff1916815560010162000723565b90565b6200074091905b8082111562000690576000808255600182018190556002820180547fffffffffffffff0000000000000000000000000000000000000000000000000016905560038201556004016200074a565b613c2980620007a76000396000f3006060604052600436106102fd5763ffffffff60e060020a60003504166301ffc9a7811461034e57806302550e4d1461039a57806302e0a2ff146103cb5780630519ce79146103de57806306fdde031461040d578063095ea7b3146104975780630a0f8168146104b95780630de0b1bc146104cc5780630e0bc104146104df5780630e583df0146104f257806314001f4c1461050557806318160ddd146105245780631940a9361461053757806319c2f2011461054d57806321717ebf1461056057806323b872dd1461057357806324e7a38a1461059b57806327d7874c146105ba5780632a332b2a146105d95780632ba73c15146105f85780633369c33d1461061757806333fa59f01461062a5780633ccfd60b1461063d5780633d7d3f5a146106505780633f4ba83a1461066f57806346116e6f146106825780634ad8c938146106985780634b85fd55146106b75780634d42fc66146106cd5780634dfff04f146106e05780634e0a3379146107025780635663896e146107215780635c975abb146107375780636352211e1461074a578063680eba27146107605780636af04a57146107735780636bee2cc3146107865780636fbde40d146107b257806370a08231146107d157806371587988146107f05780637a7d49371461080f5780637b422184146108225780637c62e2a41461083b5780638456cb59146108aa57806395d89b41146108bd5780639d6fac6f146108d0578063a5ef0dd6146108ff578063a9059cbb14610915578063ab0a986514610937578063ad25ce571461094d578063b047fb5014610958578063b0c35c051461096b578063ba13a5721461097e578063c05b7cf614610991578063c41a360a146109a7578063caa14e36146109bd578063d3e6f49f146109d5578063d83970a1146109eb578063dff00e9214610a01578063e015d86314610a20578063e6cbe35114610a33578063eb8222eb14610a46578063ed60ade614610a59578063ee4ae2c914610a67578063f1ca941014610a89578063f2b47d5214610a9c578063f7d8c88314610aaf575b600b5433600160a060020a03908116911614806103285750600c5433600160a060020a039081169116145b80610341575060005433600160a060020a039081169116145b151561034c57600080fd5b005b341561035957600080fd5b6103867fffffffff0000000000000000000000000000000000000000000000000000000060043516610abd565b604051901515815260200160405180910390f35b34156103a557600080fd5b6103b9600160a060020a0360043516610ce0565b60405190815260200160405180910390f35b34156103d657600080fd5b6103b9610cf2565b34156103e957600080fd5b6103f1610d05565b604051600160a060020a03909116815260200160405180910390f35b341561041857600080fd5b610420610d14565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561045c578082015183820152602001610444565b50505050905090810190601f1680156104895780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156104a257600080fd5b61034c600160a060020a0360043516602435610d4b565b34156104c457600080fd5b6103f1610dd5565b34156104d757600080fd5b610386610de4565b34156104ea57600080fd5b6103b9610df4565b34156104fd57600080fd5b6103b9610ea4565b341561051057600080fd5b61034c600160a060020a0360043516610eb0565b341561052f57600080fd5b6103b9610f5d565b341561054257600080fd5b610386600435610f67565b341561055857600080fd5b6103b9610fa1565b341561056b57600080fd5b6103f1610fa8565b341561057e57600080fd5b61034c600160a060020a0360043581169060243516604435610fb7565b34156105a657600080fd5b61034c600160a060020a036004351661103e565b34156105c557600080fd5b61034c600160a060020a03600435166110eb565b34156105e457600080fd5b61034c600160a060020a036004351661113d565b341561060357600080fd5b61034c600160a060020a0360043516611200565b341561062257600080fd5b6103b9611252565b341561063557600080fd5b6103b9611258565b341561064857600080fd5b61034c61125e565b341561065b57600080fd5b61034c600435602435604435606435611322565b341561067a57600080fd5b61034c61142b565b341561068d57600080fd5b6103f16004356114da565b34156106a357600080fd5b61034c6004356024356044356064356114f5565b34156106c257600080fd5b61034c600435611613565b34156106d857600080fd5b6103b9611640565b34156106eb57600080fd5b61034c600160a060020a0360043516602435611646565b341561070d57600080fd5b61034c600160a060020a03600435166116a0565b341561072c57600080fd5b61034c6004356116f2565b341561074257600080fd5b61038661175a565b341561075557600080fd5b6103f160043561176a565b341561076b57600080fd5b6103b961178e565b341561077e57600080fd5b6103f1611794565b341561079157600080fd5b61079c6004356117a3565b60405160ff909116815260200160405180910390f35b34156107bd57600080fd5b61034c600160a060020a036004351661184b565b34156107dc57600080fd5b6103b9600160a060020a03600435166118f8565b34156107fb57600080fd5b61034c600160a060020a0360043516611913565b341561081a57600080fd5b6103b96119a1565b341561082d57600080fd5b6103b96004356024356119a7565b341561084657600080fd5b610851600435611dfe565b604051998a5260208a01989098526040808a01979097526060890195909552608088019390935260a087019190915260c086015260e085015260ff16610100840152610120830191909152610140909101905180910390f35b34156108b557600080fd5b61034c611f13565b34156108c857600080fd5b610420611f9f565b34156108db57600080fd5b6108e6600435611fd6565b60405163ffffffff909116815260200160405180910390f35b341561090a57600080fd5b61034c600435612003565b341561092057600080fd5b61034c600160a060020a0360043516602435612053565b341561094257600080fd5b6103b96004356120fa565b61034c600435612192565b341561096357600080fd5b6103f16125e0565b341561097657600080fd5b6103b96125ef565b341561098957600080fd5b6103f16125f5565b341561099c57600080fd5b61034c600435612604565b34156109b257600080fd5b6103f1600435612654565b34156109c857600080fd5b61034c6004351515612777565b34156109e057600080fd5b6103866004356127c1565b34156109f657600080fd5b6103f16004356128a0565b3415610a0c57600080fd5b61034c600160a060020a03600435166128bb565b3415610a2b57600080fd5b6103f161297e565b3415610a3e57600080fd5b6103f161298d565b3415610a5157600080fd5b6103b961299c565b61034c6004356024356129a2565b3415610a7257600080fd5b61034c600160a060020a0360043516602435612c01565b3415610a9457600080fd5b6103b9612c41565b3415610aa757600080fd5b6103f1612c47565b61034c600435602435612c56565b60006040517f737570706f727473496e7465726661636528627974657334290000000000000081526019016040518091039020600160e060020a03191682600160e060020a0319161480610cd857506040517f7472616e7366657246726f6d28616464726573732c616464726573732c75696e81527f7432353629000000000000000000000000000000000000000000000000000000602082015260250160405180910390206040517f7472616e7366657228616464726573732c75696e743235362900000000000000815260190160405180910390206040517f617070726f766528616464726573732c75696e74323536290000000000000000815260180160405180910390206040517f6f776e65724f662875696e743235362900000000000000000000000000000000815260100160405180910390206040517f62616c616e63654f662861646472657373290000000000000000000000000000815260120160405180910390206040517f746f74616c537570706c792829000000000000000000000000000000000000008152600d0160405180910390206040517f73796d626f6c2829000000000000000000000000000000000000000000000000815260080160405180910390206040517f6e616d65282900000000000000000000000000000000000000000000000000008152600601604051809103902018181818181818600160e060020a03191682600160e060020a031916145b90505b919050565b60126020526000908152604090205481565b601354600160a060020a03301631035b90565b600154600160a060020a031681565b60408051908101604052600881527f48656c6c6f446f67000000000000000000000000000000000000000000000000602082015281565b60025460a060020a900460ff1615610d6257600080fd5b610d6c3382612eeb565b1515610d7757600080fd5b610d818183612f0b565b7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925338383604051600160a060020a039384168152919092166020820152604080820192909252606001905180910390a15050565b600054600160a060020a031681565b60155460a060020a900460ff1681565b600b5460009081908190600160a060020a031663eac9d94c82604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610e4257600080fd5b6102c65a03f11515610e5357600080fd5b50505060405180519250506fffffffffffffffffffffffffffffffff82168214610e7c57600080fd5b506002810481016702c68af0bb140000811015610e9e57506702c68af0bb1400005b92915050565b6702c68af0bb14000081565b6000805433600160a060020a03908116911614610ecc57600080fd5b5080600160a060020a0381166376190f8f6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610f1457600080fd5b6102c65a03f11515610f2557600080fd5b505050604051805190501515610f3a57600080fd5b600c8054600160a060020a031916600160a060020a039290921691909117905550565b6006546000190190565b6000600682815481101515610f7857fe5b6000918252602090912060049091020160020154608060020a900463ffffffff16151592915050565b6201518081565b600c54600160a060020a031681565b60025460a060020a900460ff1615610fce57600080fd5b600160a060020a0382161515610fe357600080fd5b30600160a060020a031682600160a060020a03161415151561100457600080fd5b61100e3382612f39565b151561101957600080fd5b6110238382612eeb565b151561102e57600080fd5b611039838383612f59565b505050565b6000805433600160a060020a0390811691161461105a57600080fd5b5080600160a060020a0381166354c15b826000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156110a257600080fd5b6102c65a03f115156110b357600080fd5b5050506040518051905015156110c857600080fd5b60158054600160a060020a031916600160a060020a039290921691909117905550565b60005433600160a060020a0390811691161461110657600080fd5b600160a060020a038116151561111b57600080fd5b60008054600160a060020a031916600160a060020a0392909216919091179055565b6000805433600160a060020a0390811691161461115957600080fd5b600e54600160a060020a03161561116f57600080fd5b5080600160a060020a0381166325698d896000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156111b757600080fd5b6102c65a03f115156111c857600080fd5b5050506040518051905015156111dd57600080fd5b600e8054600160a060020a031916600160a060020a039290921691909117905550565b60005433600160a060020a0390811691161461121b57600080fd5b600160a060020a038116151561123057600080fd5b60028054600160a060020a031916600160a060020a0392909216919091179055565b60145481565b60115481565b600160a060020a03331660009081526012602052604081205490811161128357600080fd5b600160a060020a03331681156108fc0282604051600060405180830381858888f1935050505015156112b457600080fd5b60138054829003905533600160a060020a038116600090815260126020526040808220919091557f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243649190839051600160a060020a03909216825260208201526040908101905180910390a150565b60025460a060020a900460ff161561133957600080fd5b6113433385612eeb565b8061135357506113533385612f39565b151561135e57600080fd5b61136784610f67565b1561137157600080fd5b600b54611388908590600160a060020a0316612f0b565b600b546000858152600760205260409081902054600160a060020a03928316926327ebe40a928892889288928892909116905160e060020a63ffffffff88160281526004810195909552602485019390935260448401919091526064830152600160a060020a0316608482015260a401600060405180830381600087803b151561141157600080fd5b6102c65a03f1151561142257600080fd5b50505050505050565b60005433600160a060020a0390811691161461144657600080fd5b60025460a060020a900460ff16151561145e57600080fd5b600b54600160a060020a0316151561147557600080fd5b600c54600160a060020a0316151561148c57600080fd5b600e54600160a060020a031615156114a357600080fd5b600d54600160a060020a031615156114ba57600080fd5b601754600160a060020a0316156114d057600080fd5b6114d8613041565b565b600a60205260009081526040902054600160a060020a031681565b60025460009060a060020a900460ff161561150f57600080fd5b600680548690811061151d57fe5b60009182526020909120600490910201600281015490915060c060020a900460ff161561154957600080fd5b6115533386612eeb565b151561155e57600080fd5b611567856127c1565b151561157257600080fd5b600c54611589908690600160a060020a0316612f0b565b600c54600160a060020a03166327ebe40a868686863360405160e060020a63ffffffff88160281526004810195909552602485019390935260448401919091526064830152600160a060020a0316608482015260a401600060405180830381600087803b15156115f857600080fd5b6102c65a03f1151561160957600080fd5b5050505050505050565b60005433600160a060020a0390811691161461162e57600080fd5b6000811161163b57600080fd5b600f55565b60105481565b60025460a060020a900460ff161561165d57600080fd5b6116673382612eeb565b151561167257600080fd5b6000908152600a602052604090208054600160a060020a031916600160a060020a0392909216919091179055565b60005433600160a060020a039081169116146116bb57600080fd5b600160a060020a03811615156116d057600080fd5b60018054600160a060020a031916600160a060020a0392909216919091179055565b60025433600160a060020a039081169116148061171d575060005433600160a060020a039081169116145b80611736575060015433600160a060020a039081169116145b151561174157600080fd5b60035463ffffffff16811061175557600080fd5b600555565b60025460a060020a900460ff1681565b600081815260076020526040902054600160a060020a0316801515610cdb57600080fd5b619c4081565b601754600160a060020a031681565b60006117af3383612eeb565b15156117ba57600080fd5b600e54600160a060020a0316636bee2cc38360006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561180b57600080fd5b6102c65a03f1151561181c57600080fd5b505050604051805160ff1615905061183357600080fd5b600e54610cdb903390600160a060020a031684612f59565b6000805433600160a060020a0390811691161461186757600080fd5b5080600160a060020a0381166385b861886000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156118af57600080fd5b6102c65a03f115156118c057600080fd5b5050506040518051905015156118d557600080fd5b600b8054600160a060020a031916600160a060020a039290921691909117905550565b600160a060020a031660009081526008602052604090205490565b60005433600160a060020a0390811691161461192e57600080fd5b60025460a060020a900460ff16151561194657600080fd5b60178054600160a060020a031916600160a060020a0383161790557f450db8da6efbe9c22f2347f7c2021231df1fc58d3ae9a2fa75d39fa44619930581604051600160a060020a03909116815260200160405180910390a150565b60055481565b6000806000806000806000806000806000600260149054906101000a900460ff161515156119d457600080fd5b600680548e9081106119e257fe5b906000526020600020906004020199508960010154600014151515611a0657600080fd5b611ab08a61014060405190810160409081528254825260018301546020830152600283015467ffffffffffffffff81169183019190915263ffffffff68010000000000000000820481166060840152606060020a820481166080840152608060020a82041660a083015261ffff60a060020a8204811660c084015260b060020a82041660e083015260ff60c060020a90910416610100820152600390910154610120820152613094565b1515611abb57600080fd5b60028a015460068054608060020a90920463ffffffff169a50908a908110611adf57fe5b600091825260209091206002808d015460049093029091019081015490995061ffff60b060020a92839004811699509190041687901115611b2d57600288015460b060020a900461ffff1696505b60028a015460b060020a900461ffff1615611b4c578960030154611b4e565b8c5b6015549096508c955060a060020a900460ff1615611c2357601554600160a060020a03161515611b7d57600080fd5b6015548a54895460028d0154600160a060020a0390931692630d9f5aed92919067ffffffffffffffff166000190160006040516020015260405160e060020a63ffffffff86160281526004810193909352602483019190915267ffffffffffffffff166044820152606401602060405180830381600087803b1515611c0157600080fd5b6102c65a03f11515611c1257600080fd5b505050604051805190509450611c72565b60005433600160a060020a0390811691161480611c4e575060025433600160a060020a039081169116145b80611c67575060015433600160a060020a039081169116145b1515611c7257600080fd5b60008d81526007602052604080822054600d54600654600160a060020a039283169850911692637b039bb69289929190516020015260405160e060020a63ffffffff851602815260048101929092526024820152604401602060405180830381600087803b1515611ce257600080fd5b6102c65a03f11515611cf357600080fd5b505050604051805160028c015490945061ffff60b060020a82048116159450611d3792508f9163ffffffff608060020a909104169060018b01168888888c896130cc565b60028b01805473ffffffff000000000000000000000000000000001916905560148054600019019055905060ff831615611dee57600d54600160a060020a0316632d0b7d53828660405160e060020a63ffffffff85160281526004810192909252600160a060020a03166024820152604401600060405180830381600087803b1515611dc257600080fd5b6102c65a03f11515611dd357600080fd5b5050600d54611dee91508590600160a060020a031683612f59565b9c9b505050505050505050505050565b600080600080600080600080600080600060068c815481101515611e1e57fe5b906000526020600020906004020190508060020160149054906101000a900461ffff1661ffff169a508060020160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1699508060020160109054906101000a900463ffffffff1663ffffffff169850806001015497508060020160089054906101000a900463ffffffff1663ffffffff16965080600201600c9054906101000a900463ffffffff1663ffffffff1695508060020160169054906101000a900461ffff1661ffff169450806000015493508060020160189054906101000a900460ff16925080600301549150509193959799509193959799565b60025433600160a060020a0390811691161480611f3e575060005433600160a060020a039081169116145b80611f57575060015433600160a060020a039081169116145b1515611f6257600080fd5b60025460a060020a900460ff1615611f7957600080fd5b6002805474ff0000000000000000000000000000000000000000191660a060020a179055565b60408051908101604052600281527f4844000000000000000000000000000000000000000000000000000000000000602082015281565b600381600e8110611fe357fe5b60089182820401919006600402915054906101000a900463ffffffff1681565b6000805433600160a060020a0390811691161461201f57600080fd5b600f548260640281151561202f57fe5b0490506000811161203f57600080fd5b606482111561204d57600080fd5b50601055565b60025460a060020a900460ff161561206a57600080fd5b600160a060020a038216151561207f57600080fd5b30600160a060020a031682600160a060020a0316141515156120a057600080fd5b600b54600160a060020a03838116911614156120bb57600080fd5b600c54600160a060020a03838116911614156120d657600080fd5b6120e03382612eeb565b15156120eb57600080fd5b6120f6338383612f59565b5050565b600254600090819033600160a060020a039081169116148061212a575060005433600160a060020a039081169116145b80612143575060015433600160a060020a039081169116145b151561214e57600080fd5b601654619c40901061215f57600080fd5b6121736000806000863060008060006130cc565b905061217f8133612f0b565b6016805460010190559050805b50919050565b600080600080600080600080600260149054906101000a900460ff161515156121ba57600080fd5b600680548a9081106121c857fe5b60009182526020822060049190910201600281015490995060b060020a900461ffff16111561232157600e54600160a060020a0316631d4f3e8b60006040516101e001526040518163ffffffff1660e060020a0281526004016101e060405180830381600087803b151561223b57600080fd5b6102c65a03f1151561224c57600080fd5b5050506040518060e00180519060200180519060200180519060200180519060200180519060200180519060200180519060200180519060200160405250505050505098505050868860010154101561232157600e548854600160a060020a039091169063f43acb529060006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156122f557600080fd5b6102c65a03f1151561230657600080fd5b5050506040518051905060ff16606414151561232157600080fd5b600b54600160a060020a031663c55d0f568a60006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561237257600080fd5b6102c65a03f1151561238357600080fd5b5050506040518051965050348690101561239c57600080fd5b8815806123a95750886001145b94506000935084156123bc576005860493505b600b54600160a060020a0316632d3a926a8760006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561240d57600080fd5b6102c65a03f1151561241e57600080fd5b5050506040518051600b54909450600160a060020a03169050639f04996d85850188038b3360405160e060020a63ffffffff86160281526004810192909252600160a060020a031660248201526044016000604051808303818588803b151561248657600080fd5b6125ee5a03f1151561249757600080fd5b50505050841561259657600154600160a060020a031684156108fc0285604051600060405180830381858888f1935050505015156124d457600080fd5b856002026fffffffffffffffffffffffffffffffff169150858210156124f8578591505b600b5461250f908a90600160a060020a0316612f0b565b600b54600160a060020a03166327ebe40a8a8480620151803360405160e060020a63ffffffff88160281526004810195909552602485019390935260448401919091526064830152600160a060020a0316608482015260a401600060405180830381600087803b151561258157600080fd5b6102c65a03f1151561259257600080fd5b5050505b853403905060008111156125d557600160a060020a03331681156108fc0282604051600060405180830381858888f1935050505015156125d557600080fd5b505050505050505050565b600254600160a060020a031681565b600f5481565b600e54600160a060020a031681565b6000805433600160a060020a0390811691161461262057600080fd5b600f548260640281151561263057fe5b0490506000811161264057600080fd5b606482111561264e57600080fd5b50601155565b600081815260076020526040812054600b54600160a060020a0391821691168114156126ed57600b54600160a060020a031663d6a9de518460006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156126cb57600080fd5b6102c65a03f115156126dc57600080fd5b50505060405180519050915061218c565b600c54600160a060020a038281169116141561275457600c54600160a060020a031663d6a9de518460006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156126cb57600080fd5b30600160a060020a031681600160a060020a03161415610e9e576000915061218c565b60005433600160a060020a0390811691161461279257600080fd5b6015805491151560a060020a0274ff000000000000000000000000000000000000000019909216919091179055565b600080600183116127d157600080fd5b60068054849081106127df57fe5b906000526020600020906004020190506128998161014060405190810160409081528254825260018301546020830152600283015467ffffffffffffffff81169183019190915263ffffffff68010000000000000000820481166060840152606060020a820481166080840152608060020a82041660a083015261ffff60a060020a8204811660c084015260b060020a82041660e083015260ff60c060020a909104166101008201526003909101546101208201526133bb565b9392505050565b600960205260009081526040902054600160a060020a031681565b6000805433600160a060020a039081169116146128d757600080fd5b600d54600160a060020a0316156128ed57600080fd5b5080600160a060020a0381166327757c496000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561293557600080fd5b6102c65a03f1151561294657600080fd5b50505060405180519050151561295b57600080fd5b600d8054600160a060020a031916600160a060020a039290921691909117905550565b600d54600160a060020a031681565b600b54600160a060020a031681565b60135481565b6000806000806000600260149054906101000a900460ff161515156129c657600080fd5b6129d03387612eeb565b15156129db57600080fd5b6129e4866127c1565b15156129ef57600080fd5b6129f986886133f2565b1515612a0457600080fd5b600c54600160a060020a031663c55d0f568860006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515612a5557600080fd5b6102c65a03f11515612a6657600080fd5b505050604051805190509450601154601154600f54870101019350600686815481101515612a9057fe5b60009182526020822060049190910201600281015490945060b060020a900461ffff161115612ac157601054840193505b3484901015612acf57600080fd5b600b54600160a060020a0316632d3a926a8660006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515612b2057600080fd5b6102c65a03f11515612b3157600080fd5b5050506040518051600c54909350600160a060020a03169050639f04996d838703893360405160e060020a63ffffffff86160281526004810192909252600160a060020a031660248201526044016000604051808303818588803b1515612b9757600080fd5b6125ee5a03f11515612ba857600080fd5b50505050612bc28663ffffffff168863ffffffff1661344a565b8334039050600081111561142257600160a060020a03331681156108fc0282604051600060405180830381858888f19350505050151561142257600080fd5b600e5433600160a060020a0390811691161480612c2c5750600d5433600160a060020a039081169116145b1515612c3757600080fd5b6120f68282613836565b60165481565b601554600160a060020a031681565b60025460009081908190819060a060020a900460ff1615612c7657600080fd5b601154601154600f5401019350600686815481101515612c9257fe5b60009182526020822060049190910201600281015490945060b060020a900461ffff161115612cc357601054840193505b3484901015612cd157600080fd5b612cdb3387612eeb565b1515612ce657600080fd5b612cf08587613878565b1515612cfb57600080fd5b612da58361014060405190810160409081528254825260018301546020830152600283015467ffffffffffffffff81169183019190915263ffffffff68010000000000000000820481166060840152606060020a820481166080840152608060020a82041660a083015261ffff60a060020a8204811660c084015260b060020a82041660e083015260ff60c060020a909104166101008201526003909101546101208201526133bb565b1515612db057600080fd5b6006805486908110612dbe57fe5b90600052602060002090600402019150612e788261014060405190810160409081528254825260018301546020830152600283015467ffffffffffffffff81169183019190915263ffffffff68010000000000000000820481166060840152606060020a820481166080840152608060020a82041660a083015261ffff60a060020a8204811660c084015260b060020a82041660e083015260ff60c060020a909104166101008201526003909101546101208201526133bb565b1515612e8357600080fd5b612e8f838784886138cd565b1515612e9a57600080fd5b612ea4868661344a565b83340390506000811115612ee357600160a060020a03331681156108fc0282604051600060405180830381858888f193505050501515612ee357600080fd5b505050505050565b600090815260076020526040902054600160a060020a0391821691161490565b6000918252600960205260409091208054600160a060020a031916600160a060020a03909216919091179055565b600090815260096020526040902054600160a060020a0391821691161490565b600160a060020a03808316600081815260086020908152604080832080546001019055858352600790915290208054600160a060020a0319169091179055831615612fec57600160a060020a03831660009081526008602090815260408083208054600019019055838352600a82528083208054600160a060020a03199081169091556009909252909120805490911690555b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838383604051600160a060020a039384168152919092166020820152604080820192909252606001905180910390a1505050565b60005433600160a060020a0390811691161461305c57600080fd5b60025460a060020a900460ff16151561307457600080fd5b6002805474ff000000000000000000000000000000000000000019169055565b60008160a0015163ffffffff1615801590610cd857504367ffffffffffffffff16826040015167ffffffffffffffff16111592915050565b6000806130d7613b36565b600063ffffffff8c168c146130eb57600080fd5b63ffffffff8b168b146130fd57600080fd5b61ffff8a168a1461310d57600080fd5b60028a049250600d8361ffff16111561312557600d92505b61014060405190810160409081528a8252436020830152600090820181905263ffffffff808f1660608401528d16608083015260a082015261ffff80851660c08301528b1660e082015260ff88166101008201526101208101879052600680549193506001918083016131988382613b8a565b600092835260209092208591600402018151815560208201518160010155604082015160028201805467ffffffffffffffff191667ffffffffffffffff9290921691909117905560608201518160020160086101000a81548163ffffffff021916908363ffffffff160217905550608082015181600201600c6101000a81548163ffffffff021916908363ffffffff16021790555060a08201518160020160106101000a81548163ffffffff021916908363ffffffff16021790555060c08201518160020160146101000a81548161ffff021916908361ffff16021790555060e08201518160020160166101000a81548161ffff021916908361ffff1602179055506101008201518160020160186101000a81548160ff021916908360ff1602179055506101208201516003909101555003905063016c800081106132dc57600080fd5b7f746319248c02be7f11174ecd7121305fe37ffe8b19a6abef96df84f321a84e338882846060015163ffffffff16856080015163ffffffff1686518f8d8d438e6133285760105461332b565b60005b8d604051600160a060020a03909b168b5260208b01999099526040808b019890985260608a0196909652608089019490945261ffff92831660a089015260ff90911660c088015260e087015261010086019190915261012085019190915291909116610140830152610160909101905180910390a16133ac60008983612f59565b9b9a5050505050505050505050565b60008160a0015163ffffffff16158015610cd857504367ffffffffffffffff16826040015167ffffffffffffffff16111592915050565b600080600060068581548110151561340657fe5b9060005260206000209060040201915060068481548110151561342557fe5b90600052602060002090600402019050613441828683876138cd565b95945050505050565b60008080806001861161345c57600080fd5b6001851161346957600080fd5b600680548690811061347757fe5b9060005260206000209060040201935060068681548110151561349657fe5b600091825260209091206002860154600490920201935060c060020a900460ff16156134c157600080fd5b600283015460c060020a900460ff16156134da57600080fd5b6002830154600060b060020a90910461ffff16111561362357600e54600160a060020a0316631d4f3e8b60006040516101e001526040518163ffffffff1660e060020a0281526004016101e060405180830381600087803b151561353d57600080fd5b6102c65a03f1151561354e57600080fd5b5050506040518060e00180519060200180519060200180519060200180519060200180519060200180519060200180519060200180519060200160405250505050505093505050818360010154101561362357600e548354600160a060020a039091169063f43acb529060006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156135f757600080fd5b6102c65a03f1151561360857600080fd5b5050506040518051905060ff16606414151561362357600080fd5b60028301805473ffffffff000000000000000000000000000000001916608060020a63ffffffff88160217905561365984613a70565b61366283613a70565b6000868152600a60205260408082208054600160a060020a031990811690915587835291819020805490921690915560148054600190810190915554600f54600160a060020a03909116916108fc821502919051600060405180830381858888f1935050505015156136d357600080fd5b6136dd6000612654565b9050600160a060020a038116156136fa576136fa81601154613836565b6137046001612654565b9050600160a060020a038116156137215761372181601154613836565b6002830154600060b060020a90910461ffff161115613764576137478360030154612654565b9050600160a060020a038116156137645761376481601054613836565b6000868152600760205260409081902054600280860154908701547f1ee9be14ee585b164bf130cf7a98acb8ec21d44ae3cf64cd149aee4dcc59232193600160a060020a03909316928a928a9267ffffffffffffffff808316939082169261ffff60a060020a9182900481169391909104169051600160a060020a039097168752602087019590955260408087019490945267ffffffffffffffff92831660608701529116608085015261ffff90811660a08501529190911660c083015260e0909101905180910390a1505050505050565b60138054820190819055600160a060020a03301631101561385657600080fd5b600160a060020a03909116600090815260126020526040902080549091019055565b6000818152600760205260408082205484835290822054600160a060020a0391821691168082148061344157506000858152600a6020526040902054600160a060020a03908116908316149250505092915050565b6000818414156138df57506000613a68565b600285015468010000000000000000900463ffffffff1682148061391357506002850154606060020a900463ffffffff1682145b1561392057506000613a68565b600283015468010000000000000000900463ffffffff1684148061395457506002830154606060020a900463ffffffff1684145b1561396157506000613a68565b600283015468010000000000000000900463ffffffff1615806139985750600285015468010000000000000000900463ffffffff16155b156139a557506001613a68565b60028581015490840154680100000000000000009182900463ffffffff908116929091041614806139fa57506002808601549084015468010000000000000000900463ffffffff908116606060020a90920416145b15613a0757506000613a68565b60028086015490840154606060020a900463ffffffff90811668010000000000000000909204161480613a57575060028581015490840154606060020a9182900463ffffffff9081169290910416145b15613a6457506000613a68565b5060015b949350505050565b600554600282015443919060039060a060020a900461ffff16600e8110613a9357fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff16811515613abe57fe5b60028401805467ffffffffffffffff1916929091049290920167ffffffffffffffff161790819055600d60a060020a90910461ffff161015613b335760028101805461ffff60a060020a80830482166001019091160275ffff0000000000000000000000000000000000000000199091161790555b50565b6101406040519081016040908152600080835260208301819052908201819052606082018190526080820181905260a0820181905260c0820181905260e08201819052610100820181905261012082015290565b8154818355818115116110395760008381526020902061103991610d029160049182028101918502015b80821115613bf95760008082556001820181905560028201805478ffffffffffffffffffffffffffffffffffffffffffffffffff191690556003820155600401613bb4565b50905600a165627a7a72305820a67edf09562e4df386230d4506c315d9b04b254c0b087c3f5e850710db56e55f0029
Deployed Bytecode
0x6060604052600436106102fd5763ffffffff60e060020a60003504166301ffc9a7811461034e57806302550e4d1461039a57806302e0a2ff146103cb5780630519ce79146103de57806306fdde031461040d578063095ea7b3146104975780630a0f8168146104b95780630de0b1bc146104cc5780630e0bc104146104df5780630e583df0146104f257806314001f4c1461050557806318160ddd146105245780631940a9361461053757806319c2f2011461054d57806321717ebf1461056057806323b872dd1461057357806324e7a38a1461059b57806327d7874c146105ba5780632a332b2a146105d95780632ba73c15146105f85780633369c33d1461061757806333fa59f01461062a5780633ccfd60b1461063d5780633d7d3f5a146106505780633f4ba83a1461066f57806346116e6f146106825780634ad8c938146106985780634b85fd55146106b75780634d42fc66146106cd5780634dfff04f146106e05780634e0a3379146107025780635663896e146107215780635c975abb146107375780636352211e1461074a578063680eba27146107605780636af04a57146107735780636bee2cc3146107865780636fbde40d146107b257806370a08231146107d157806371587988146107f05780637a7d49371461080f5780637b422184146108225780637c62e2a41461083b5780638456cb59146108aa57806395d89b41146108bd5780639d6fac6f146108d0578063a5ef0dd6146108ff578063a9059cbb14610915578063ab0a986514610937578063ad25ce571461094d578063b047fb5014610958578063b0c35c051461096b578063ba13a5721461097e578063c05b7cf614610991578063c41a360a146109a7578063caa14e36146109bd578063d3e6f49f146109d5578063d83970a1146109eb578063dff00e9214610a01578063e015d86314610a20578063e6cbe35114610a33578063eb8222eb14610a46578063ed60ade614610a59578063ee4ae2c914610a67578063f1ca941014610a89578063f2b47d5214610a9c578063f7d8c88314610aaf575b600b5433600160a060020a03908116911614806103285750600c5433600160a060020a039081169116145b80610341575060005433600160a060020a039081169116145b151561034c57600080fd5b005b341561035957600080fd5b6103867fffffffff0000000000000000000000000000000000000000000000000000000060043516610abd565b604051901515815260200160405180910390f35b34156103a557600080fd5b6103b9600160a060020a0360043516610ce0565b60405190815260200160405180910390f35b34156103d657600080fd5b6103b9610cf2565b34156103e957600080fd5b6103f1610d05565b604051600160a060020a03909116815260200160405180910390f35b341561041857600080fd5b610420610d14565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561045c578082015183820152602001610444565b50505050905090810190601f1680156104895780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156104a257600080fd5b61034c600160a060020a0360043516602435610d4b565b34156104c457600080fd5b6103f1610dd5565b34156104d757600080fd5b610386610de4565b34156104ea57600080fd5b6103b9610df4565b34156104fd57600080fd5b6103b9610ea4565b341561051057600080fd5b61034c600160a060020a0360043516610eb0565b341561052f57600080fd5b6103b9610f5d565b341561054257600080fd5b610386600435610f67565b341561055857600080fd5b6103b9610fa1565b341561056b57600080fd5b6103f1610fa8565b341561057e57600080fd5b61034c600160a060020a0360043581169060243516604435610fb7565b34156105a657600080fd5b61034c600160a060020a036004351661103e565b34156105c557600080fd5b61034c600160a060020a03600435166110eb565b34156105e457600080fd5b61034c600160a060020a036004351661113d565b341561060357600080fd5b61034c600160a060020a0360043516611200565b341561062257600080fd5b6103b9611252565b341561063557600080fd5b6103b9611258565b341561064857600080fd5b61034c61125e565b341561065b57600080fd5b61034c600435602435604435606435611322565b341561067a57600080fd5b61034c61142b565b341561068d57600080fd5b6103f16004356114da565b34156106a357600080fd5b61034c6004356024356044356064356114f5565b34156106c257600080fd5b61034c600435611613565b34156106d857600080fd5b6103b9611640565b34156106eb57600080fd5b61034c600160a060020a0360043516602435611646565b341561070d57600080fd5b61034c600160a060020a03600435166116a0565b341561072c57600080fd5b61034c6004356116f2565b341561074257600080fd5b61038661175a565b341561075557600080fd5b6103f160043561176a565b341561076b57600080fd5b6103b961178e565b341561077e57600080fd5b6103f1611794565b341561079157600080fd5b61079c6004356117a3565b60405160ff909116815260200160405180910390f35b34156107bd57600080fd5b61034c600160a060020a036004351661184b565b34156107dc57600080fd5b6103b9600160a060020a03600435166118f8565b34156107fb57600080fd5b61034c600160a060020a0360043516611913565b341561081a57600080fd5b6103b96119a1565b341561082d57600080fd5b6103b96004356024356119a7565b341561084657600080fd5b610851600435611dfe565b604051998a5260208a01989098526040808a01979097526060890195909552608088019390935260a087019190915260c086015260e085015260ff16610100840152610120830191909152610140909101905180910390f35b34156108b557600080fd5b61034c611f13565b34156108c857600080fd5b610420611f9f565b34156108db57600080fd5b6108e6600435611fd6565b60405163ffffffff909116815260200160405180910390f35b341561090a57600080fd5b61034c600435612003565b341561092057600080fd5b61034c600160a060020a0360043516602435612053565b341561094257600080fd5b6103b96004356120fa565b61034c600435612192565b341561096357600080fd5b6103f16125e0565b341561097657600080fd5b6103b96125ef565b341561098957600080fd5b6103f16125f5565b341561099c57600080fd5b61034c600435612604565b34156109b257600080fd5b6103f1600435612654565b34156109c857600080fd5b61034c6004351515612777565b34156109e057600080fd5b6103866004356127c1565b34156109f657600080fd5b6103f16004356128a0565b3415610a0c57600080fd5b61034c600160a060020a03600435166128bb565b3415610a2b57600080fd5b6103f161297e565b3415610a3e57600080fd5b6103f161298d565b3415610a5157600080fd5b6103b961299c565b61034c6004356024356129a2565b3415610a7257600080fd5b61034c600160a060020a0360043516602435612c01565b3415610a9457600080fd5b6103b9612c41565b3415610aa757600080fd5b6103f1612c47565b61034c600435602435612c56565b60006040517f737570706f727473496e7465726661636528627974657334290000000000000081526019016040518091039020600160e060020a03191682600160e060020a0319161480610cd857506040517f7472616e7366657246726f6d28616464726573732c616464726573732c75696e81527f7432353629000000000000000000000000000000000000000000000000000000602082015260250160405180910390206040517f7472616e7366657228616464726573732c75696e743235362900000000000000815260190160405180910390206040517f617070726f766528616464726573732c75696e74323536290000000000000000815260180160405180910390206040517f6f776e65724f662875696e743235362900000000000000000000000000000000815260100160405180910390206040517f62616c616e63654f662861646472657373290000000000000000000000000000815260120160405180910390206040517f746f74616c537570706c792829000000000000000000000000000000000000008152600d0160405180910390206040517f73796d626f6c2829000000000000000000000000000000000000000000000000815260080160405180910390206040517f6e616d65282900000000000000000000000000000000000000000000000000008152600601604051809103902018181818181818600160e060020a03191682600160e060020a031916145b90505b919050565b60126020526000908152604090205481565b601354600160a060020a03301631035b90565b600154600160a060020a031681565b60408051908101604052600881527f48656c6c6f446f67000000000000000000000000000000000000000000000000602082015281565b60025460a060020a900460ff1615610d6257600080fd5b610d6c3382612eeb565b1515610d7757600080fd5b610d818183612f0b565b7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925338383604051600160a060020a039384168152919092166020820152604080820192909252606001905180910390a15050565b600054600160a060020a031681565b60155460a060020a900460ff1681565b600b5460009081908190600160a060020a031663eac9d94c82604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610e4257600080fd5b6102c65a03f11515610e5357600080fd5b50505060405180519250506fffffffffffffffffffffffffffffffff82168214610e7c57600080fd5b506002810481016702c68af0bb140000811015610e9e57506702c68af0bb1400005b92915050565b6702c68af0bb14000081565b6000805433600160a060020a03908116911614610ecc57600080fd5b5080600160a060020a0381166376190f8f6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610f1457600080fd5b6102c65a03f11515610f2557600080fd5b505050604051805190501515610f3a57600080fd5b600c8054600160a060020a031916600160a060020a039290921691909117905550565b6006546000190190565b6000600682815481101515610f7857fe5b6000918252602090912060049091020160020154608060020a900463ffffffff16151592915050565b6201518081565b600c54600160a060020a031681565b60025460a060020a900460ff1615610fce57600080fd5b600160a060020a0382161515610fe357600080fd5b30600160a060020a031682600160a060020a03161415151561100457600080fd5b61100e3382612f39565b151561101957600080fd5b6110238382612eeb565b151561102e57600080fd5b611039838383612f59565b505050565b6000805433600160a060020a0390811691161461105a57600080fd5b5080600160a060020a0381166354c15b826000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156110a257600080fd5b6102c65a03f115156110b357600080fd5b5050506040518051905015156110c857600080fd5b60158054600160a060020a031916600160a060020a039290921691909117905550565b60005433600160a060020a0390811691161461110657600080fd5b600160a060020a038116151561111b57600080fd5b60008054600160a060020a031916600160a060020a0392909216919091179055565b6000805433600160a060020a0390811691161461115957600080fd5b600e54600160a060020a03161561116f57600080fd5b5080600160a060020a0381166325698d896000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156111b757600080fd5b6102c65a03f115156111c857600080fd5b5050506040518051905015156111dd57600080fd5b600e8054600160a060020a031916600160a060020a039290921691909117905550565b60005433600160a060020a0390811691161461121b57600080fd5b600160a060020a038116151561123057600080fd5b60028054600160a060020a031916600160a060020a0392909216919091179055565b60145481565b60115481565b600160a060020a03331660009081526012602052604081205490811161128357600080fd5b600160a060020a03331681156108fc0282604051600060405180830381858888f1935050505015156112b457600080fd5b60138054829003905533600160a060020a038116600090815260126020526040808220919091557f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243649190839051600160a060020a03909216825260208201526040908101905180910390a150565b60025460a060020a900460ff161561133957600080fd5b6113433385612eeb565b8061135357506113533385612f39565b151561135e57600080fd5b61136784610f67565b1561137157600080fd5b600b54611388908590600160a060020a0316612f0b565b600b546000858152600760205260409081902054600160a060020a03928316926327ebe40a928892889288928892909116905160e060020a63ffffffff88160281526004810195909552602485019390935260448401919091526064830152600160a060020a0316608482015260a401600060405180830381600087803b151561141157600080fd5b6102c65a03f1151561142257600080fd5b50505050505050565b60005433600160a060020a0390811691161461144657600080fd5b60025460a060020a900460ff16151561145e57600080fd5b600b54600160a060020a0316151561147557600080fd5b600c54600160a060020a0316151561148c57600080fd5b600e54600160a060020a031615156114a357600080fd5b600d54600160a060020a031615156114ba57600080fd5b601754600160a060020a0316156114d057600080fd5b6114d8613041565b565b600a60205260009081526040902054600160a060020a031681565b60025460009060a060020a900460ff161561150f57600080fd5b600680548690811061151d57fe5b60009182526020909120600490910201600281015490915060c060020a900460ff161561154957600080fd5b6115533386612eeb565b151561155e57600080fd5b611567856127c1565b151561157257600080fd5b600c54611589908690600160a060020a0316612f0b565b600c54600160a060020a03166327ebe40a868686863360405160e060020a63ffffffff88160281526004810195909552602485019390935260448401919091526064830152600160a060020a0316608482015260a401600060405180830381600087803b15156115f857600080fd5b6102c65a03f1151561160957600080fd5b5050505050505050565b60005433600160a060020a0390811691161461162e57600080fd5b6000811161163b57600080fd5b600f55565b60105481565b60025460a060020a900460ff161561165d57600080fd5b6116673382612eeb565b151561167257600080fd5b6000908152600a602052604090208054600160a060020a031916600160a060020a0392909216919091179055565b60005433600160a060020a039081169116146116bb57600080fd5b600160a060020a03811615156116d057600080fd5b60018054600160a060020a031916600160a060020a0392909216919091179055565b60025433600160a060020a039081169116148061171d575060005433600160a060020a039081169116145b80611736575060015433600160a060020a039081169116145b151561174157600080fd5b60035463ffffffff16811061175557600080fd5b600555565b60025460a060020a900460ff1681565b600081815260076020526040902054600160a060020a0316801515610cdb57600080fd5b619c4081565b601754600160a060020a031681565b60006117af3383612eeb565b15156117ba57600080fd5b600e54600160a060020a0316636bee2cc38360006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561180b57600080fd5b6102c65a03f1151561181c57600080fd5b505050604051805160ff1615905061183357600080fd5b600e54610cdb903390600160a060020a031684612f59565b6000805433600160a060020a0390811691161461186757600080fd5b5080600160a060020a0381166385b861886000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156118af57600080fd5b6102c65a03f115156118c057600080fd5b5050506040518051905015156118d557600080fd5b600b8054600160a060020a031916600160a060020a039290921691909117905550565b600160a060020a031660009081526008602052604090205490565b60005433600160a060020a0390811691161461192e57600080fd5b60025460a060020a900460ff16151561194657600080fd5b60178054600160a060020a031916600160a060020a0383161790557f450db8da6efbe9c22f2347f7c2021231df1fc58d3ae9a2fa75d39fa44619930581604051600160a060020a03909116815260200160405180910390a150565b60055481565b6000806000806000806000806000806000600260149054906101000a900460ff161515156119d457600080fd5b600680548e9081106119e257fe5b906000526020600020906004020199508960010154600014151515611a0657600080fd5b611ab08a61014060405190810160409081528254825260018301546020830152600283015467ffffffffffffffff81169183019190915263ffffffff68010000000000000000820481166060840152606060020a820481166080840152608060020a82041660a083015261ffff60a060020a8204811660c084015260b060020a82041660e083015260ff60c060020a90910416610100820152600390910154610120820152613094565b1515611abb57600080fd5b60028a015460068054608060020a90920463ffffffff169a50908a908110611adf57fe5b600091825260209091206002808d015460049093029091019081015490995061ffff60b060020a92839004811699509190041687901115611b2d57600288015460b060020a900461ffff1696505b60028a015460b060020a900461ffff1615611b4c578960030154611b4e565b8c5b6015549096508c955060a060020a900460ff1615611c2357601554600160a060020a03161515611b7d57600080fd5b6015548a54895460028d0154600160a060020a0390931692630d9f5aed92919067ffffffffffffffff166000190160006040516020015260405160e060020a63ffffffff86160281526004810193909352602483019190915267ffffffffffffffff166044820152606401602060405180830381600087803b1515611c0157600080fd5b6102c65a03f11515611c1257600080fd5b505050604051805190509450611c72565b60005433600160a060020a0390811691161480611c4e575060025433600160a060020a039081169116145b80611c67575060015433600160a060020a039081169116145b1515611c7257600080fd5b60008d81526007602052604080822054600d54600654600160a060020a039283169850911692637b039bb69289929190516020015260405160e060020a63ffffffff851602815260048101929092526024820152604401602060405180830381600087803b1515611ce257600080fd5b6102c65a03f11515611cf357600080fd5b505050604051805160028c015490945061ffff60b060020a82048116159450611d3792508f9163ffffffff608060020a909104169060018b01168888888c896130cc565b60028b01805473ffffffff000000000000000000000000000000001916905560148054600019019055905060ff831615611dee57600d54600160a060020a0316632d0b7d53828660405160e060020a63ffffffff85160281526004810192909252600160a060020a03166024820152604401600060405180830381600087803b1515611dc257600080fd5b6102c65a03f11515611dd357600080fd5b5050600d54611dee91508590600160a060020a031683612f59565b9c9b505050505050505050505050565b600080600080600080600080600080600060068c815481101515611e1e57fe5b906000526020600020906004020190508060020160149054906101000a900461ffff1661ffff169a508060020160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1699508060020160109054906101000a900463ffffffff1663ffffffff169850806001015497508060020160089054906101000a900463ffffffff1663ffffffff16965080600201600c9054906101000a900463ffffffff1663ffffffff1695508060020160169054906101000a900461ffff1661ffff169450806000015493508060020160189054906101000a900460ff16925080600301549150509193959799509193959799565b60025433600160a060020a0390811691161480611f3e575060005433600160a060020a039081169116145b80611f57575060015433600160a060020a039081169116145b1515611f6257600080fd5b60025460a060020a900460ff1615611f7957600080fd5b6002805474ff0000000000000000000000000000000000000000191660a060020a179055565b60408051908101604052600281527f4844000000000000000000000000000000000000000000000000000000000000602082015281565b600381600e8110611fe357fe5b60089182820401919006600402915054906101000a900463ffffffff1681565b6000805433600160a060020a0390811691161461201f57600080fd5b600f548260640281151561202f57fe5b0490506000811161203f57600080fd5b606482111561204d57600080fd5b50601055565b60025460a060020a900460ff161561206a57600080fd5b600160a060020a038216151561207f57600080fd5b30600160a060020a031682600160a060020a0316141515156120a057600080fd5b600b54600160a060020a03838116911614156120bb57600080fd5b600c54600160a060020a03838116911614156120d657600080fd5b6120e03382612eeb565b15156120eb57600080fd5b6120f6338383612f59565b5050565b600254600090819033600160a060020a039081169116148061212a575060005433600160a060020a039081169116145b80612143575060015433600160a060020a039081169116145b151561214e57600080fd5b601654619c40901061215f57600080fd5b6121736000806000863060008060006130cc565b905061217f8133612f0b565b6016805460010190559050805b50919050565b600080600080600080600080600260149054906101000a900460ff161515156121ba57600080fd5b600680548a9081106121c857fe5b60009182526020822060049190910201600281015490995060b060020a900461ffff16111561232157600e54600160a060020a0316631d4f3e8b60006040516101e001526040518163ffffffff1660e060020a0281526004016101e060405180830381600087803b151561223b57600080fd5b6102c65a03f1151561224c57600080fd5b5050506040518060e00180519060200180519060200180519060200180519060200180519060200180519060200180519060200180519060200160405250505050505098505050868860010154101561232157600e548854600160a060020a039091169063f43acb529060006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156122f557600080fd5b6102c65a03f1151561230657600080fd5b5050506040518051905060ff16606414151561232157600080fd5b600b54600160a060020a031663c55d0f568a60006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561237257600080fd5b6102c65a03f1151561238357600080fd5b5050506040518051965050348690101561239c57600080fd5b8815806123a95750886001145b94506000935084156123bc576005860493505b600b54600160a060020a0316632d3a926a8760006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561240d57600080fd5b6102c65a03f1151561241e57600080fd5b5050506040518051600b54909450600160a060020a03169050639f04996d85850188038b3360405160e060020a63ffffffff86160281526004810192909252600160a060020a031660248201526044016000604051808303818588803b151561248657600080fd5b6125ee5a03f1151561249757600080fd5b50505050841561259657600154600160a060020a031684156108fc0285604051600060405180830381858888f1935050505015156124d457600080fd5b856002026fffffffffffffffffffffffffffffffff169150858210156124f8578591505b600b5461250f908a90600160a060020a0316612f0b565b600b54600160a060020a03166327ebe40a8a8480620151803360405160e060020a63ffffffff88160281526004810195909552602485019390935260448401919091526064830152600160a060020a0316608482015260a401600060405180830381600087803b151561258157600080fd5b6102c65a03f1151561259257600080fd5b5050505b853403905060008111156125d557600160a060020a03331681156108fc0282604051600060405180830381858888f1935050505015156125d557600080fd5b505050505050505050565b600254600160a060020a031681565b600f5481565b600e54600160a060020a031681565b6000805433600160a060020a0390811691161461262057600080fd5b600f548260640281151561263057fe5b0490506000811161264057600080fd5b606482111561264e57600080fd5b50601155565b600081815260076020526040812054600b54600160a060020a0391821691168114156126ed57600b54600160a060020a031663d6a9de518460006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156126cb57600080fd5b6102c65a03f115156126dc57600080fd5b50505060405180519050915061218c565b600c54600160a060020a038281169116141561275457600c54600160a060020a031663d6a9de518460006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156126cb57600080fd5b30600160a060020a031681600160a060020a03161415610e9e576000915061218c565b60005433600160a060020a0390811691161461279257600080fd5b6015805491151560a060020a0274ff000000000000000000000000000000000000000019909216919091179055565b600080600183116127d157600080fd5b60068054849081106127df57fe5b906000526020600020906004020190506128998161014060405190810160409081528254825260018301546020830152600283015467ffffffffffffffff81169183019190915263ffffffff68010000000000000000820481166060840152606060020a820481166080840152608060020a82041660a083015261ffff60a060020a8204811660c084015260b060020a82041660e083015260ff60c060020a909104166101008201526003909101546101208201526133bb565b9392505050565b600960205260009081526040902054600160a060020a031681565b6000805433600160a060020a039081169116146128d757600080fd5b600d54600160a060020a0316156128ed57600080fd5b5080600160a060020a0381166327757c496000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561293557600080fd5b6102c65a03f1151561294657600080fd5b50505060405180519050151561295b57600080fd5b600d8054600160a060020a031916600160a060020a039290921691909117905550565b600d54600160a060020a031681565b600b54600160a060020a031681565b60135481565b6000806000806000600260149054906101000a900460ff161515156129c657600080fd5b6129d03387612eeb565b15156129db57600080fd5b6129e4866127c1565b15156129ef57600080fd5b6129f986886133f2565b1515612a0457600080fd5b600c54600160a060020a031663c55d0f568860006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515612a5557600080fd5b6102c65a03f11515612a6657600080fd5b505050604051805190509450601154601154600f54870101019350600686815481101515612a9057fe5b60009182526020822060049190910201600281015490945060b060020a900461ffff161115612ac157601054840193505b3484901015612acf57600080fd5b600b54600160a060020a0316632d3a926a8660006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515612b2057600080fd5b6102c65a03f11515612b3157600080fd5b5050506040518051600c54909350600160a060020a03169050639f04996d838703893360405160e060020a63ffffffff86160281526004810192909252600160a060020a031660248201526044016000604051808303818588803b1515612b9757600080fd5b6125ee5a03f11515612ba857600080fd5b50505050612bc28663ffffffff168863ffffffff1661344a565b8334039050600081111561142257600160a060020a03331681156108fc0282604051600060405180830381858888f19350505050151561142257600080fd5b600e5433600160a060020a0390811691161480612c2c5750600d5433600160a060020a039081169116145b1515612c3757600080fd5b6120f68282613836565b60165481565b601554600160a060020a031681565b60025460009081908190819060a060020a900460ff1615612c7657600080fd5b601154601154600f5401019350600686815481101515612c9257fe5b60009182526020822060049190910201600281015490945060b060020a900461ffff161115612cc357601054840193505b3484901015612cd157600080fd5b612cdb3387612eeb565b1515612ce657600080fd5b612cf08587613878565b1515612cfb57600080fd5b612da58361014060405190810160409081528254825260018301546020830152600283015467ffffffffffffffff81169183019190915263ffffffff68010000000000000000820481166060840152606060020a820481166080840152608060020a82041660a083015261ffff60a060020a8204811660c084015260b060020a82041660e083015260ff60c060020a909104166101008201526003909101546101208201526133bb565b1515612db057600080fd5b6006805486908110612dbe57fe5b90600052602060002090600402019150612e788261014060405190810160409081528254825260018301546020830152600283015467ffffffffffffffff81169183019190915263ffffffff68010000000000000000820481166060840152606060020a820481166080840152608060020a82041660a083015261ffff60a060020a8204811660c084015260b060020a82041660e083015260ff60c060020a909104166101008201526003909101546101208201526133bb565b1515612e8357600080fd5b612e8f838784886138cd565b1515612e9a57600080fd5b612ea4868661344a565b83340390506000811115612ee357600160a060020a03331681156108fc0282604051600060405180830381858888f193505050501515612ee357600080fd5b505050505050565b600090815260076020526040902054600160a060020a0391821691161490565b6000918252600960205260409091208054600160a060020a031916600160a060020a03909216919091179055565b600090815260096020526040902054600160a060020a0391821691161490565b600160a060020a03808316600081815260086020908152604080832080546001019055858352600790915290208054600160a060020a0319169091179055831615612fec57600160a060020a03831660009081526008602090815260408083208054600019019055838352600a82528083208054600160a060020a03199081169091556009909252909120805490911690555b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838383604051600160a060020a039384168152919092166020820152604080820192909252606001905180910390a1505050565b60005433600160a060020a0390811691161461305c57600080fd5b60025460a060020a900460ff16151561307457600080fd5b6002805474ff000000000000000000000000000000000000000019169055565b60008160a0015163ffffffff1615801590610cd857504367ffffffffffffffff16826040015167ffffffffffffffff16111592915050565b6000806130d7613b36565b600063ffffffff8c168c146130eb57600080fd5b63ffffffff8b168b146130fd57600080fd5b61ffff8a168a1461310d57600080fd5b60028a049250600d8361ffff16111561312557600d92505b61014060405190810160409081528a8252436020830152600090820181905263ffffffff808f1660608401528d16608083015260a082015261ffff80851660c08301528b1660e082015260ff88166101008201526101208101879052600680549193506001918083016131988382613b8a565b600092835260209092208591600402018151815560208201518160010155604082015160028201805467ffffffffffffffff191667ffffffffffffffff9290921691909117905560608201518160020160086101000a81548163ffffffff021916908363ffffffff160217905550608082015181600201600c6101000a81548163ffffffff021916908363ffffffff16021790555060a08201518160020160106101000a81548163ffffffff021916908363ffffffff16021790555060c08201518160020160146101000a81548161ffff021916908361ffff16021790555060e08201518160020160166101000a81548161ffff021916908361ffff1602179055506101008201518160020160186101000a81548160ff021916908360ff1602179055506101208201516003909101555003905063016c800081106132dc57600080fd5b7f746319248c02be7f11174ecd7121305fe37ffe8b19a6abef96df84f321a84e338882846060015163ffffffff16856080015163ffffffff1686518f8d8d438e6133285760105461332b565b60005b8d604051600160a060020a03909b168b5260208b01999099526040808b019890985260608a0196909652608089019490945261ffff92831660a089015260ff90911660c088015260e087015261010086019190915261012085019190915291909116610140830152610160909101905180910390a16133ac60008983612f59565b9b9a5050505050505050505050565b60008160a0015163ffffffff16158015610cd857504367ffffffffffffffff16826040015167ffffffffffffffff16111592915050565b600080600060068581548110151561340657fe5b9060005260206000209060040201915060068481548110151561342557fe5b90600052602060002090600402019050613441828683876138cd565b95945050505050565b60008080806001861161345c57600080fd5b6001851161346957600080fd5b600680548690811061347757fe5b9060005260206000209060040201935060068681548110151561349657fe5b600091825260209091206002860154600490920201935060c060020a900460ff16156134c157600080fd5b600283015460c060020a900460ff16156134da57600080fd5b6002830154600060b060020a90910461ffff16111561362357600e54600160a060020a0316631d4f3e8b60006040516101e001526040518163ffffffff1660e060020a0281526004016101e060405180830381600087803b151561353d57600080fd5b6102c65a03f1151561354e57600080fd5b5050506040518060e00180519060200180519060200180519060200180519060200180519060200180519060200180519060200180519060200160405250505050505093505050818360010154101561362357600e548354600160a060020a039091169063f43acb529060006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156135f757600080fd5b6102c65a03f1151561360857600080fd5b5050506040518051905060ff16606414151561362357600080fd5b60028301805473ffffffff000000000000000000000000000000001916608060020a63ffffffff88160217905561365984613a70565b61366283613a70565b6000868152600a60205260408082208054600160a060020a031990811690915587835291819020805490921690915560148054600190810190915554600f54600160a060020a03909116916108fc821502919051600060405180830381858888f1935050505015156136d357600080fd5b6136dd6000612654565b9050600160a060020a038116156136fa576136fa81601154613836565b6137046001612654565b9050600160a060020a038116156137215761372181601154613836565b6002830154600060b060020a90910461ffff161115613764576137478360030154612654565b9050600160a060020a038116156137645761376481601054613836565b6000868152600760205260409081902054600280860154908701547f1ee9be14ee585b164bf130cf7a98acb8ec21d44ae3cf64cd149aee4dcc59232193600160a060020a03909316928a928a9267ffffffffffffffff808316939082169261ffff60a060020a9182900481169391909104169051600160a060020a039097168752602087019590955260408087019490945267ffffffffffffffff92831660608701529116608085015261ffff90811660a08501529190911660c083015260e0909101905180910390a1505050505050565b60138054820190819055600160a060020a03301631101561385657600080fd5b600160a060020a03909116600090815260126020526040902080549091019055565b6000818152600760205260408082205484835290822054600160a060020a0391821691168082148061344157506000858152600a6020526040902054600160a060020a03908116908316149250505092915050565b6000818414156138df57506000613a68565b600285015468010000000000000000900463ffffffff1682148061391357506002850154606060020a900463ffffffff1682145b1561392057506000613a68565b600283015468010000000000000000900463ffffffff1684148061395457506002830154606060020a900463ffffffff1684145b1561396157506000613a68565b600283015468010000000000000000900463ffffffff1615806139985750600285015468010000000000000000900463ffffffff16155b156139a557506001613a68565b60028581015490840154680100000000000000009182900463ffffffff908116929091041614806139fa57506002808601549084015468010000000000000000900463ffffffff908116606060020a90920416145b15613a0757506000613a68565b60028086015490840154606060020a900463ffffffff90811668010000000000000000909204161480613a57575060028581015490840154606060020a9182900463ffffffff9081169290910416145b15613a6457506000613a68565b5060015b949350505050565b600554600282015443919060039060a060020a900461ffff16600e8110613a9357fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff16811515613abe57fe5b60028401805467ffffffffffffffff1916929091049290920167ffffffffffffffff161790819055600d60a060020a90910461ffff161015613b335760028101805461ffff60a060020a80830482166001019091160275ffff0000000000000000000000000000000000000000199091161790555b50565b6101406040519081016040908152600080835260208301819052908201819052606082018190526080820181905260a0820181905260c0820181905260e08201819052610100820181905261012082015290565b8154818355818115116110395760008381526020902061103991610d029160049182028101918502015b80821115613bf95760008082556001820181905560028201805478ffffffffffffffffffffffffffffffffffffffffffffffffff191690556003820155600401613bb4565b50905600a165627a7a72305820a67edf09562e4df386230d4506c315d9b04b254c0b087c3f5e850710db56e55f0029
Swarm Source
bzzr://a67edf09562e4df386230d4506c315d9b04b254c0b087c3f5e850710db56e55f
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | Ether (ETH) | 100.00% | $2,901.83 | 13.236 | $38,408.55 |
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.