More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 712 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw Gains | 7103324 | 2235 days ago | IN | 0 ETH | 0.00015164 | ||||
Init Campaign | 7102452 | 2235 days ago | IN | 0 ETH | 0.00084796 | ||||
Close Entry | 7099570 | 2235 days ago | IN | 0 ETH | 0.00240538 | ||||
Buy Torpedo | 7095174 | 2236 days ago | IN | 0.01 ETH | 0.00053065 | ||||
Withdraw Gains | 7093839 | 2236 days ago | IN | 0 ETH | 0.00020251 | ||||
Buy Torpedo With... | 7093818 | 2236 days ago | IN | 0 ETH | 0.00113441 | ||||
Valid Torpedo Sc... | 7093807 | 2236 days ago | IN | 0 ETH | 0.00057828 | ||||
Withdraw Gains | 7093804 | 2236 days ago | IN | 0 ETH | 0.0001665 | ||||
Buy Torpedo With... | 7093779 | 2236 days ago | IN | 0 ETH | 0.00343815 | ||||
Init Campaign | 7010939 | 2251 days ago | IN | 0 ETH | 0.00268523 | ||||
Close Entry | 7008057 | 2252 days ago | IN | 0 ETH | 0.00256574 | ||||
Withdraw Gains | 7006468 | 2252 days ago | IN | 0 ETH | 0.00032799 | ||||
Valid Torpedo Sc... | 7002294 | 2253 days ago | IN | 0 ETH | 0.00038552 | ||||
Buy Torpedo With... | 7002279 | 2253 days ago | IN | 0 ETH | 0.00200276 | ||||
Withdraw Gains | 6998049 | 2253 days ago | IN | 0 ETH | 0.00015164 | ||||
Init Campaign | 6997935 | 2253 days ago | IN | 0 ETH | 0.00296788 | ||||
Withdraw Gains | 6997605 | 2253 days ago | IN | 0 ETH | 0.00026817 | ||||
Close Entry | 6995058 | 2254 days ago | IN | 0 ETH | 0.00304682 | ||||
Withdraw Gains | 6989296 | 2255 days ago | IN | 0 ETH | 0.000081 | ||||
Valid Torpedo Sc... | 6989291 | 2255 days ago | IN | 0 ETH | 0.0001331 | ||||
Buy Torpedo | 6989137 | 2255 days ago | IN | 0.01 ETH | 0.00080474 | ||||
Withdraw Gains | 6985346 | 2256 days ago | IN | 0 ETH | 0.0001215 | ||||
Valid Torpedo Sc... | 6985323 | 2256 days ago | IN | 0 ETH | 0.00038552 | ||||
Buy Torpedo | 6985305 | 2256 days ago | IN | 0.01 ETH | 0.00089489 | ||||
Init Campaign | 6979888 | 2256 days ago | IN | 0 ETH | 0.00296788 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
7103324 | 2235 days ago | 0.06819428 ETH | ||||
7099570 | 2235 days ago | 0.02336367 ETH | ||||
7099570 | 2235 days ago | 0.00467273 ETH | ||||
7095174 | 2236 days ago | 0.0005 ETH | ||||
7093839 | 2236 days ago | 0.02343463 ETH | ||||
7093818 | 2236 days ago | 0.00499999 ETH | ||||
7093818 | 2236 days ago | 0.09999999 ETH | ||||
7093804 | 2236 days ago | 0.00219443 ETH | ||||
7093779 | 2236 days ago | 0.00049999 ETH | ||||
7093779 | 2236 days ago | 0.00999999 ETH | ||||
7008057 | 2252 days ago | 0.01857332 ETH | ||||
7008057 | 2252 days ago | 0.00371466 ETH | ||||
7006468 | 2252 days ago | 0.0287068 ETH | ||||
7002279 | 2253 days ago | 0.00499999 ETH | ||||
7002279 | 2253 days ago | 0.09999999 ETH | ||||
6998049 | 2253 days ago | 0.00713688 ETH | ||||
6997605 | 2253 days ago | 0.01043294 ETH | ||||
6995058 | 2254 days ago | 0.00727901 ETH | ||||
6995058 | 2254 days ago | 0.0014558 ETH | ||||
6989296 | 2255 days ago | 0.00209391 ETH | ||||
6989137 | 2255 days ago | 0.0005 ETH | ||||
6985346 | 2256 days ago | 0.00213366 ETH | ||||
6985305 | 2256 days ago | 0.0005 ETH | ||||
6977839 | 2257 days ago | 0.00546756 ETH | ||||
6977784 | 2257 days ago | 0.01630441 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
TorpedoLaunchGame
Compiler Version
v0.4.25+commit.59dbf8f1
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-11-28 */ /* Introducing "TORPEDO LAUNCH" our second HDX20 POWERED GAME running on the Ethereum Blockchain "TORPEDO LAUNCH" is playable @ https://torpedolaunch.io About the game : TORPEDO LAUNCH is a Submarine Arcade action game where the player is launching torpedoes to sink enemies boats How to play TORPEDO LAUNCH: The Campaign will start after at least 1 player has played and submitted a score to the worldwide leaderboard then, for every new highscore registered, a 24H countdown will reset. At the end of the countdown, the 8 best players ranked on the leaderboard will share the Treasure proportionally to their scores and everybody will receive their payout. Every time you buy new torpedoes, 5% of the price will buy you HDX20 Token earning you Ethereum from the volume of any HDX20 POWERED GAMES (visit https://hdx20.io for details) while 20% of the price will buy you new shares of the game. Please remember, at every new buy, the price of the share is increasing a little and so will be your payout even if you are not a winner therefore buying shares at the beginning of the campaign is highly advised. You can withdraw any owned amount at all time during the game. Play for the big WIN, Play for the TREASURE, Play for staking HDX20 TOKEN or Play for all at once...Your Choice! We wish you Good Luck! PAYOUTS DISTRIBUTION: .60% to the winners of the race distributed proportionally to their score if ranked from 1st to 8th. .25% to the community of HDX20 gamers/holders distributed as price appreciation. .5% to developer for running, developing and expanding the platform. .10% for provisioning the TREASURE for the next Campaign. This product is copyrighted. Any unauthorized copy, modification, or use without express written consent from HyperDevbox is prohibited. Copyright 2018 HyperDevbox */ pragma solidity ^0.4.25; interface HDX20Interface { function() payable external; function buyTokenFromGame( address _customerAddress , address _referrer_address ) payable external returns(uint256); function payWithToken( uint256 _eth , address _player_address ) external returns(uint256); function appreciateTokenPrice() payable external; function totalSupply() external view returns(uint256); function ethBalanceOf(address _customerAddress) external view returns(uint256); function balanceOf(address _playerAddress) external view returns(uint256); function sellingPrice( bool includeFees) external view returns(uint256); } contract TorpedoLaunchGame { HDX20Interface private HDXcontract = HDX20Interface(0x8942a5995bd168f347f7ec58f25a54a9a064f882); using SafeMath for uint256; using SafeMath128 for uint128; /*============================== = EVENTS = ==============================*/ event OwnershipTransferred( address previousOwner, address nextOwner, uint256 timeStamp ); event HDXcontractChanged( address previous, address next, uint256 timeStamp ); event onWithdrawGains( address customerAddress, uint256 ethereumWithdrawn, uint256 timeStamp ); event onNewScore( uint256 gRND, uint256 blockNumberTimeout, uint256 score, address customerAddress, bool newHighScore, bool highscoreChanged ); event onNewCampaign( uint256 gRND, uint256 blockNumber ); event onBuyTorpedo( address customerAddress, uint256 gRND, uint256 torpedoBatchID, uint256 torpedoBatchBlockTimeout, uint256 nbToken, uint32 torpedoBatchMultiplier //x1, x10, x100 ); event onMaintenance( bool mode, uint256 timeStamp ); event onCloseEntry( uint256 gRND ); event onChangeBlockTimeAverage( uint256 blocktimeavg ); event onChangeMinimumPrice( uint256 minimum, uint256 timeStamp ); event onNewName( address customerAddress, bytes32 name, uint256 timeStamp ); /*============================== = MODIFIERS = ==============================*/ modifier onlyOwner { require (msg.sender == owner ); _; } modifier onlyFromHDXToken { require (msg.sender == address( HDXcontract )); _; } modifier onlyDirectTransaction { require (msg.sender == tx.origin); _; } modifier isPlayer { require (PlayerData[ msg.sender].gRND !=0); _; } modifier isMaintenance { require (maintenanceMode==true); _; } modifier isNotMaintenance { require (maintenanceMode==false); _; } address public owner; address public signerAuthority = 0xf77444cE64f3F46ba6b63F6b9411dF9c589E3319; constructor () public { owner = msg.sender; if ( address(this).balance > 0) { owner.transfer( address(this).balance ); } } function changeOwner(address _nextOwner) public onlyOwner { require (_nextOwner != owner); require(_nextOwner != address(0)); emit OwnershipTransferred(owner, _nextOwner , now); owner = _nextOwner; } function changeSigner(address _nextSigner) public onlyOwner { require (_nextSigner != signerAuthority); require(_nextSigner != address(0)); signerAuthority = _nextSigner; } function changeHDXcontract(address _next) public onlyOwner { require (_next != address( HDXcontract )); require( _next != address(0)); emit HDXcontractChanged(address(HDXcontract), _next , now); HDXcontract = HDX20Interface( _next); } function changeBlockTimeAverage( uint256 blocktimeavg) public onlyOwner { require ( blocktimeavg>0 ); blockTimeAverage = blocktimeavg; emit onChangeBlockTimeAverage( blockTimeAverage ); } function enableMaintenance() public onlyOwner { maintenanceMode = true; emit onMaintenance( maintenanceMode , now); } function disableMaintenance() public onlyOwner { maintenanceMode = false; emit onMaintenance( maintenanceMode , now); initCampaign(); } function changeMinimumPrice( uint256 newmini) public onlyOwner { if (newmini>0) { minimumSharePrice = newmini; } emit onChangeMinimumPrice( newmini , now ); } /*================================ = GAMES VARIABLES = ================================*/ struct PlayerData_s { uint256 chest; uint256 payoutsTo; uint256 gRND; } struct PlayerGameRound_s { uint256 shares; uint256 torpedoBatchID; //0==no torpedo, otherwise uint256 torpedoBatchBlockTimeout; bytes data; uint128 token; uint32[3] packedData; //[0] = torpedomultiplier //[1] = playerID //[2]=score } struct GameRoundData_s { uint256 blockNumber; uint256 blockNumberTimeout; uint256 sharePrice; uint256 sharePots; uint256 shareEthBalance; uint256 shareSupply; uint256 treasureSupply; mapping (uint32 => address) IDtoAddress; uint256 hdx20AppreciationPayout; uint256 devAppreciationPayout; //******************************************************************************************** uint32[16] highscorePool; //[0-7] == uint32 score //[8-15] == uint32 playerID uint32[2] extraData;//[0]==this_TurnRound , [1]== totalPlayers } mapping (address => PlayerData_s) private PlayerData; mapping (address => mapping (uint256 => PlayerGameRound_s)) private PlayerGameRound; mapping (uint256 => GameRoundData_s) private GameRoundData; mapping( address => bytes32) private registeredNames; bool private maintenanceMode=false; uint256 private this_gRND =0; //85 , missing 15% for shares appreciation eg:share price increase uint8 constant private HDX20BuyFees = 5; uint8 constant private TREASUREBuyFees = 60; uint8 constant private BUYPercentage = 20; uint8 constant private DevFees = 5; uint8 constant private TreasureFees = 10; uint8 constant private AppreciationFees = 25; uint256 constant internal magnitude = 1e18; uint256 private genTreasure = 0; uint256 private minimumSharePrice = 0.01 ether; uint256 private blockTimeAverage = 15; //seconds per block /*================================ = PUBLIC FUNCTIONS = ================================*/ //fallback will be called only from the HDX token contract to fund the game from customers's HDX20 function() payable public onlyFromHDXToken { } function ChargeTreasure() public payable { genTreasure = SafeMath.add( genTreasure , msg.value); } function buyTreasureShares(GameRoundData_s storage _GameRoundData , uint256 _eth ) private returns( uint256) { uint256 _nbshares = (_eth.mul( magnitude)) / _GameRoundData.sharePrice; _GameRoundData.treasureSupply = _GameRoundData.treasureSupply.add( _nbshares ); _GameRoundData.shareSupply = _GameRoundData.shareSupply.add( _nbshares ); return( _nbshares); } function initCampaign() public onlyOwner isNotMaintenance { this_gRND++; GameRoundData_s storage _GameRoundData = GameRoundData[ this_gRND ]; _GameRoundData.blockNumber = block.number; _GameRoundData.blockNumberTimeout = block.number + (360*10*24*3600); uint256 _sharePrice = minimumSharePrice; _GameRoundData.sharePrice = _sharePrice; uint256 _nbshares = buyTreasureShares(_GameRoundData, genTreasure ); //convert into ETH _nbshares = _nbshares.mul( _sharePrice ) / magnitude; //start balance _GameRoundData.shareEthBalance = _nbshares; genTreasure = genTreasure.sub( _nbshares); emit onNewCampaign( this_gRND , block.number); } function get_TotalPayout( GameRoundData_s storage _GameRoundData ) private view returns( uint256) { uint256 _payout = 0; uint256 _sharePrice = _GameRoundData.sharePrice; uint256 _bet = _GameRoundData.sharePots; _payout = _payout.add( _bet.mul (_sharePrice) / magnitude ); uint256 _potValue = ((_GameRoundData.treasureSupply.mul( _sharePrice ) / magnitude).mul(100-DevFees-TreasureFees-AppreciationFees)) / 100; _payout = _payout.add( _potValue ); return( _payout ); } function get_PendingGains( address _player_address , uint256 _gRND) private view returns( uint256) { //did not play if (PlayerData[ _player_address].gRND != _gRND || _gRND==0) return( 0 ); GameRoundData_s storage _GameRoundData = GameRoundData[ _gRND ]; // uint32 _winner = _GameRoundData.extraData[1]; uint256 _gains = 0; uint256 _sharePrice = _GameRoundData.sharePrice; uint256 _shares; PlayerGameRound_s storage _PlayerGameRound = PlayerGameRound[ _player_address][_gRND]; _shares = _PlayerGameRound.shares; _gains = _gains.add( _shares.mul( _sharePrice) / magnitude ); //if the race payment is made (race is over) then we add also the winner prize if (_GameRoundData.extraData[0] >= (1<<30)) { uint256 _score = 0; uint256 _totalscore = 0; uint256 _treasure = ((_GameRoundData.treasureSupply.mul( _sharePrice ) / magnitude).mul(100-DevFees-TreasureFees-AppreciationFees)) / 100; for( uint i=0;i<8;i++) { _totalscore = _totalscore.add( uint256(_GameRoundData.highscorePool[i])); if (_GameRoundData.highscorePool[8+i]==_PlayerGameRound.packedData[1]) { _score = uint256(_GameRoundData.highscorePool[i]); } } if (_totalscore>0) _gains = _gains.add( _treasure.mul( _score) / _totalscore ); } return( _gains ); } //only for the Result Data Screen on the game not used for the payout function get_PendingGainsAll( address _player_address , uint256 _gRND) private view returns( uint256) { //did not play if (PlayerData[ _player_address].gRND != _gRND || _gRND==0) return( 0 ); GameRoundData_s storage _GameRoundData = GameRoundData[ _gRND ]; // uint32 _winner = _GameRoundData.extraData[1]; uint256 _gains = 0; uint256 _sharePrice = _GameRoundData.sharePrice; uint256 _shares; PlayerGameRound_s storage _PlayerGameRound = PlayerGameRound[ _player_address][_gRND]; _shares = _PlayerGameRound.shares; _gains = _gains.add( _shares.mul( _sharePrice) / magnitude ); { uint256 _score = 0; uint256 _totalscore = 0; uint256 _treasure = ((_GameRoundData.treasureSupply.mul( _sharePrice ) / magnitude).mul(100-DevFees-TreasureFees-AppreciationFees)) / 100; for( uint i=0;i<8;i++) { _totalscore = _totalscore.add( uint256(_GameRoundData.highscorePool[i])); if (_GameRoundData.highscorePool[8+i]==_PlayerGameRound.packedData[1]) { _score = uint256(_GameRoundData.highscorePool[i]); } } if (_totalscore>0) _gains = _gains.add( _treasure.mul( _score) / _totalscore ); } return( _gains ); } //process streaming HDX20 appreciation and dev fees appreciation function process_sub_Taxes( GameRoundData_s storage _GameRoundData , uint256 minimum) private { uint256 _sharePrice = _GameRoundData.sharePrice; uint256 _potValue = _GameRoundData.treasureSupply.mul( _sharePrice ) / magnitude; uint256 _appreciation = SafeMath.mul( _potValue , AppreciationFees) / 100; uint256 _dev = SafeMath.mul( _potValue , DevFees) / 100; if (_dev > _GameRoundData.devAppreciationPayout) { _dev -= _GameRoundData.devAppreciationPayout; if (_dev>minimum) { _GameRoundData.devAppreciationPayout = _GameRoundData.devAppreciationPayout.add( _dev ); HDXcontract.buyTokenFromGame.value( _dev )( owner , address(0)); } } if (_appreciation> _GameRoundData.hdx20AppreciationPayout) { _appreciation -= _GameRoundData.hdx20AppreciationPayout; if (_appreciation>minimum) { _GameRoundData.hdx20AppreciationPayout = _GameRoundData.hdx20AppreciationPayout.add( _appreciation ); HDXcontract.appreciateTokenPrice.value( _appreciation )(); } } } //process the fees, hdx20 appreciation, calcul results at the end of the race function process_Taxes( GameRoundData_s storage _GameRoundData ) private { uint32 turnround = _GameRoundData.extraData[0]; if (turnround>0 && turnround<(1<<30)) { _GameRoundData.extraData[0] = turnround | (1<<30); uint256 _sharePrice = _GameRoundData.sharePrice; uint256 _potValue = _GameRoundData.treasureSupply.mul( _sharePrice ) / magnitude; uint256 _treasure = SafeMath.mul( _potValue , TreasureFees) / 100; genTreasure = genTreasure.add( _treasure ); //take care of any left over process_sub_Taxes( _GameRoundData , 0); } } function ValidTorpedoScore( int256 score, uint256 torpedoBatchID , bytes32 r , bytes32 s , uint8 v) public onlyDirectTransaction { address _customer_address = msg.sender; require( maintenanceMode==false && this_gRND>0 && (block.number <GameRoundData[ this_gRND ].blockNumberTimeout) && (PlayerData[ _customer_address].gRND == this_gRND)); GameVar_s memory gamevar; gamevar.score = score; gamevar.torpedoBatchID = torpedoBatchID; gamevar.r = r; gamevar.s = s; gamevar.v = v; coreValidTorpedoScore( _customer_address , gamevar ); } struct GameVar_s { bool madehigh; bool highscoreChanged; uint max_score; uint min_score; uint min_score_index; uint max_score_index; uint our_score_index; uint32 max_score_pid; uint32 multiplier; uint256 torpedoBatchID; int256 score; bytes32 r; bytes32 s; uint8 v; } function coreValidTorpedoScore( address _player_address , GameVar_s gamevar) private { PlayerGameRound_s storage _PlayerGameRound = PlayerGameRound[ _player_address][ this_gRND]; GameRoundData_s storage _GameRoundData = GameRoundData[ this_gRND ]; require((gamevar.torpedoBatchID != 0) && (gamevar.torpedoBatchID== _PlayerGameRound.torpedoBatchID)); gamevar.madehigh = false; gamevar.highscoreChanged = false; // gamevar.max_score = 0; gamevar.min_score = 0xffffffff; // gamevar.min_score_index = 0; // gamevar.max_score_index = 0; // gamevar.our_score_index = 0; if (block.number>=_PlayerGameRound.torpedoBatchBlockTimeout || (ecrecover(keccak256(abi.encodePacked( gamevar.score,gamevar.torpedoBatchID )) , gamevar.v, gamevar.r, gamevar.s) != signerAuthority)) { gamevar.score = 0; } int256 tempo = int256(_PlayerGameRound.packedData[2]) + (gamevar.score * int256(_PlayerGameRound.packedData[0])); if (tempo<0) tempo = 0; if (tempo>0xffffffff) tempo = 0xffffffff; uint256 p_score = uint256( tempo ); //store the player score _PlayerGameRound.packedData[2] = uint32(p_score); for(uint i=0;i<8;i++) { uint ss = _GameRoundData.highscorePool[i]; if (ss>gamevar.max_score) { gamevar.max_score = ss; gamevar.max_score_index =i; } if (ss<gamevar.min_score) { gamevar.min_score = ss; gamevar.min_score_index = i; } //are we in the pool already if (_GameRoundData.highscorePool[8+i]==_PlayerGameRound.packedData[1]) gamevar.our_score_index=1+i; } //grab current player id highscore before we potentially overwrite it gamevar.max_score_pid = _GameRoundData.highscorePool[ 8+gamevar.max_score_index]; //at first if we are in the pool simply update our score if (gamevar.our_score_index>0) { _GameRoundData.highscorePool[ gamevar.our_score_index -1] = uint32(p_score); gamevar.highscoreChanged = true; } else { //we were not in the pool, are we more than the minimum score if (p_score > gamevar.min_score) { //yes the minimum should go away and we should replace it in the pool _GameRoundData.highscorePool[ gamevar.min_score_index ] =uint32(p_score); _GameRoundData.highscorePool[ 8+gamevar.min_score_index] = _PlayerGameRound.packedData[1]; //put our playerID gamevar.highscoreChanged = true; } } //new highscore ? if (p_score>gamevar.max_score) { //yes //same person if ( gamevar.max_score_pid != _PlayerGameRound.packedData[1] ) { //no so reset the counter _GameRoundData.blockNumberTimeout = block.number + ((24*60*60) / blockTimeAverage); _GameRoundData.extraData[0]++; // new turn gamevar.madehigh = true; } } //ok reset it so we can get a new one _PlayerGameRound.torpedoBatchID = 0; emit onNewScore( this_gRND , _GameRoundData.blockNumberTimeout , p_score , _player_address , gamevar.madehigh , gamevar.highscoreChanged ); } function BuyTorpedoWithDividends( uint256 eth , int256 score, uint256 torpedoBatchID, address _referrer_address , bytes32 r , bytes32 s , uint8 v) public onlyDirectTransaction { require( maintenanceMode==false && this_gRND>0 && (eth==minimumSharePrice || eth==minimumSharePrice*10 || eth==minimumSharePrice*100) && (block.number <GameRoundData[ this_gRND ].blockNumberTimeout) ); address _customer_address = msg.sender; GameVar_s memory gamevar; gamevar.score = score; gamevar.torpedoBatchID = torpedoBatchID; gamevar.r = r; gamevar.s = s; gamevar.v = v; gamevar.multiplier =uint32( eth / minimumSharePrice); eth = HDXcontract.payWithToken( eth , _customer_address ); require( eth>0 ); CoreBuyTorpedo( _customer_address , eth , _referrer_address , gamevar ); } function BuyName( bytes32 name ) public payable { address _customer_address = msg.sender; uint256 eth = msg.value; require( maintenanceMode==false && (eth==minimumSharePrice*10)); //50% for the community //50% for the developer account eth /= 2; HDXcontract.buyTokenFromGame.value( eth )( owner , address(0)); HDXcontract.appreciateTokenPrice.value( eth )(); registeredNames[ _customer_address ] = name; emit onNewName( _customer_address , name , now ); } function BuyTorpedo( int256 score, uint256 torpedoBatchID, address _referrer_address , bytes32 r , bytes32 s , uint8 v ) public payable onlyDirectTransaction { address _customer_address = msg.sender; uint256 eth = msg.value; require( maintenanceMode==false && this_gRND>0 && (eth==minimumSharePrice || eth==minimumSharePrice*10 || eth==minimumSharePrice*100) && (block.number <GameRoundData[ this_gRND ].blockNumberTimeout)); GameVar_s memory gamevar; gamevar.score = score; gamevar.torpedoBatchID = torpedoBatchID; gamevar.r = r; gamevar.s = s; gamevar.v = v; gamevar.multiplier =uint32( eth / minimumSharePrice); CoreBuyTorpedo( _customer_address , eth , _referrer_address, gamevar); } /*================================ = CORE BUY FUNCTIONS = ================================*/ function CoreBuyTorpedo( address _player_address , uint256 eth , address _referrer_address , GameVar_s gamevar) private { PlayerGameRound_s storage _PlayerGameRound = PlayerGameRound[ _player_address][ this_gRND]; GameRoundData_s storage _GameRoundData = GameRoundData[ this_gRND ]; if (PlayerData[ _player_address].gRND != this_gRND) { if (PlayerData[_player_address].gRND !=0) { uint256 _gains = get_PendingGains( _player_address , PlayerData[ _player_address].gRND ); PlayerData[ _player_address].chest = PlayerData[ _player_address].chest.add( _gains); } PlayerData[ _player_address ].gRND = this_gRND; //player++ _GameRoundData.extraData[ 1 ]++; //a crude playerID _PlayerGameRound.packedData[1] = _GameRoundData.extraData[ 1 ]; //only to display the highscore table on the client _GameRoundData.IDtoAddress[ _GameRoundData.extraData[1] ] = _player_address; } //we need to validate the score before buying a torpedo batch if (gamevar.torpedoBatchID !=0 || _PlayerGameRound.torpedoBatchID !=0) { coreValidTorpedoScore( _player_address , gamevar); } _PlayerGameRound.packedData[0] = gamevar.multiplier; _PlayerGameRound.torpedoBatchBlockTimeout = block.number + ((4*3600) / blockTimeAverage); _PlayerGameRound.torpedoBatchID = uint256((keccak256(abi.encodePacked( block.number, _player_address , address(this))))); //HDX20BuyFees uint256 _tempo = (eth.mul(HDX20BuyFees)) / 100; _GameRoundData.shareEthBalance = _GameRoundData.shareEthBalance.add( eth-_tempo ); //minus the hdx20 fees uint256 _nb_token = HDXcontract.buyTokenFromGame.value( _tempo )( _player_address , _referrer_address); _PlayerGameRound.token += uint128(_nb_token); buyTreasureShares(_GameRoundData , (eth.mul(TREASUREBuyFees)) / 100 ); eth = eth.mul( BUYPercentage) / 100; uint256 _nbshare = (eth.mul( magnitude)) / _GameRoundData.sharePrice; _GameRoundData.shareSupply = _GameRoundData.shareSupply.add( _nbshare ); _GameRoundData.sharePots = _GameRoundData.sharePots.add( _nbshare); _PlayerGameRound.shares = _PlayerGameRound.shares.add( _nbshare); if (_GameRoundData.shareSupply>magnitude) { _GameRoundData.sharePrice = (_GameRoundData.shareEthBalance.mul( magnitude)) / _GameRoundData.shareSupply; } //HDX20 streaming appreciation process_sub_Taxes( _GameRoundData , 0.1 ether); emit onBuyTorpedo( _player_address, this_gRND, _PlayerGameRound.torpedoBatchID , _PlayerGameRound.torpedoBatchBlockTimeout, _nb_token, _PlayerGameRound.packedData[0]); } function get_Gains(address _player_address) private view returns( uint256) { uint256 _gains = PlayerData[ _player_address ].chest.add( get_PendingGains( _player_address , PlayerData[ _player_address].gRND ) ); if (_gains > PlayerData[ _player_address].payoutsTo) { _gains -= PlayerData[ _player_address].payoutsTo; } else _gains = 0; return( _gains ); } function WithdrawGains() public isPlayer { address _customer_address = msg.sender; uint256 _gains = get_Gains( _customer_address ); require( _gains>0); PlayerData[ _customer_address ].payoutsTo = PlayerData[ _customer_address ].payoutsTo.add( _gains ); emit onWithdrawGains( _customer_address , _gains , now); _customer_address.transfer( _gains ); } function CloseEntry() public onlyOwner isNotMaintenance { GameRoundData_s storage _GameRoundData = GameRoundData[ this_gRND ]; process_Taxes( _GameRoundData); emit onCloseEntry( this_gRND ); } /*================================ = VIEW AND HELPERS FUNCTIONS = ================================*/ function view_get_Treasure() public view returns(uint256) { return( genTreasure); } function view_get_gameData() public view returns( uint256 sharePrice, uint256 sharePots, uint256 shareSupply , uint256 shareEthBalance, uint32 totalPlayers , uint256 shares ,uint256 treasureSupply , uint256 torpedoBatchID , uint32 torpedoBatchMultiplier , uint256 torpedoBatchBlockTimeout , uint256 score ) { address _player_address = msg.sender; sharePrice = GameRoundData[ this_gRND].sharePrice; sharePots = GameRoundData[ this_gRND].sharePots; shareSupply = GameRoundData[ this_gRND].shareSupply; shareEthBalance = GameRoundData[ this_gRND].shareEthBalance; treasureSupply = GameRoundData[ this_gRND].treasureSupply; totalPlayers = GameRoundData[ this_gRND].extraData[1]; shares = PlayerGameRound[_player_address][this_gRND].shares; torpedoBatchID = PlayerGameRound[_player_address][this_gRND].torpedoBatchID; torpedoBatchMultiplier = PlayerGameRound[_player_address][this_gRND].packedData[0]; torpedoBatchBlockTimeout = PlayerGameRound[_player_address][this_gRND].torpedoBatchBlockTimeout; score = PlayerGameRound[_player_address][this_gRND].packedData[2]; } function view_get_gameTorpedoData() public view returns( uint256 torpedoBatchID , uint32 torpedoBatchMultiplier , uint256 torpedoBatchBlockTimeout , uint256 score ) { address _player_address = msg.sender; torpedoBatchID = PlayerGameRound[_player_address][this_gRND].torpedoBatchID; torpedoBatchMultiplier = PlayerGameRound[_player_address][this_gRND].packedData[0]; torpedoBatchBlockTimeout = PlayerGameRound[_player_address][this_gRND].torpedoBatchBlockTimeout; score = PlayerGameRound[_player_address][this_gRND].packedData[2]; } function view_get_gameHighScores() public view returns( uint32[8] highscores , address[8] addresses , bytes32[8] names ) { address _player_address = msg.sender; uint32[8] memory highscoresm; address[8] memory addressesm; bytes32[8] memory namesm; for(uint i =0;i<8;i++) { highscoresm[i] = GameRoundData[ this_gRND].highscorePool[i]; uint32 id = GameRoundData[ this_gRND].highscorePool[8+i]; addressesm[i] = GameRoundData[ this_gRND ].IDtoAddress[ id ]; namesm[i] = view_get_registeredNames( addressesm[i ]); } highscores = highscoresm; addresses = addressesm; names = namesm; } function view_get_Gains() public view returns( uint256 gains) { address _player_address = msg.sender; uint256 _gains = PlayerData[ _player_address ].chest.add( get_PendingGains( _player_address , PlayerData[ _player_address].gRND) ); if (_gains > PlayerData[ _player_address].payoutsTo) { _gains -= PlayerData[ _player_address].payoutsTo; } else _gains = 0; return( _gains ); } function view_get_gameStates() public view returns(uint256 grnd, uint32 turnround, uint256 minimumshare , uint256 blockNumber , uint256 blockNumberTimeout, uint256 blockNumberCurrent , uint256 blockTimeAvg , uint32[8] highscores , address[8] addresses , bytes32[8] names , bytes32 myname) { uint32[8] memory highscoresm; address[8] memory addressesm; bytes32[8] memory namesm; for(uint i =0;i<8;i++) { highscoresm[i] = GameRoundData[ this_gRND].highscorePool[i]; uint32 id = GameRoundData[ this_gRND].highscorePool[8+i]; addressesm[i] = GameRoundData[ this_gRND ].IDtoAddress[ id ]; namesm[i] = view_get_registeredNames( addressesm[i ]); } return( this_gRND , GameRoundData[ this_gRND].extraData[0] , minimumSharePrice , GameRoundData[ this_gRND].blockNumber,GameRoundData[ this_gRND].blockNumberTimeout, block.number , blockTimeAverage , highscoresm , addressesm , namesm , view_get_registeredNames(msg.sender)); } function view_get_ResultData() public view returns(uint32 TotalPlayer, uint256 TotalPayout ,uint256 MyTokenValue, uint256 MyToken, uint256 MyGains , uint256 MyScore) { address _player_address = msg.sender; GameRoundData_s storage _GameRoundData = GameRoundData[ this_gRND ]; TotalPlayer = _GameRoundData.extraData[1]; TotalPayout = get_TotalPayout( _GameRoundData ); MyToken = PlayerGameRound[ _player_address][ this_gRND].token; MyTokenValue = MyToken * HDXcontract.sellingPrice( true ); MyTokenValue /= magnitude; MyGains = 0; if (PlayerData[ _player_address].gRND == this_gRND) { MyGains = get_PendingGainsAll( _player_address , this_gRND ); //just here for the view function so not used for any payout } MyScore = PlayerGameRound[_player_address][this_gRND].packedData[2]; } function totalEthereumBalance() public view returns(uint256) { return address(this).balance; } function view_get_maintenanceMode() public view returns(bool) { return( maintenanceMode); } function view_get_blockNumbers() public view returns( uint256 b1 , uint256 b2 ) { return( block.number , GameRoundData[ this_gRND ].blockNumberTimeout); } function view_get_registeredNames(address _player) public view returns( bytes32) { return( registeredNames[ _player ]); } } library SafeMath { function mul(uint256 a, uint256 b) internal pure returns (uint256 c) { if (a == 0) { return 0; } c = a * b; require(c / a == b); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a); return a - b; } function add(uint256 a, uint256 b) internal pure returns (uint256 c) { c = a + b; require(c >= a); return c; } } library SafeMath128 { function mul(uint128 a, uint128 b) internal pure returns (uint128 c) { if (a == 0) { return 0; } c = a * b; require(c / a == b); return c; } function sub(uint128 a, uint128 b) internal pure returns (uint128) { require(b <= a); return a - b; } function add(uint128 a, uint128 b) internal pure returns (uint128 c) { c = a + b; require(c >= a); return c; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":true,"inputs":[],"name":"view_get_Treasure","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"score","type":"int256"},{"name":"torpedoBatchID","type":"uint256"},{"name":"_referrer_address","type":"address"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"},{"name":"v","type":"uint8"}],"name":"BuyTorpedo","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"newmini","type":"uint256"}],"name":"changeMinimumPrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"view_get_maintenanceMode","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"view_get_gameStates","outputs":[{"name":"grnd","type":"uint256"},{"name":"turnround","type":"uint32"},{"name":"minimumshare","type":"uint256"},{"name":"blockNumber","type":"uint256"},{"name":"blockNumberTimeout","type":"uint256"},{"name":"blockNumberCurrent","type":"uint256"},{"name":"blockTimeAvg","type":"uint256"},{"name":"highscores","type":"uint32[8]"},{"name":"addresses","type":"address[8]"},{"name":"names","type":"bytes32[8]"},{"name":"myname","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"CloseEntry","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"blocktimeavg","type":"uint256"}],"name":"changeBlockTimeAverage","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_player","type":"address"}],"name":"view_get_registeredNames","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"score","type":"int256"},{"name":"torpedoBatchID","type":"uint256"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"},{"name":"v","type":"uint8"}],"name":"ValidTorpedoScore","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"name","type":"bytes32"}],"name":"BuyName","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_next","type":"address"}],"name":"changeHDXcontract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"signerAuthority","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalEthereumBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"view_get_gameHighScores","outputs":[{"name":"highscores","type":"uint32[8]"},{"name":"addresses","type":"address[8]"},{"name":"names","type":"bytes32[8]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"view_get_Gains","outputs":[{"name":"gains","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"view_get_gameData","outputs":[{"name":"sharePrice","type":"uint256"},{"name":"sharePots","type":"uint256"},{"name":"shareSupply","type":"uint256"},{"name":"shareEthBalance","type":"uint256"},{"name":"totalPlayers","type":"uint32"},{"name":"shares","type":"uint256"},{"name":"treasureSupply","type":"uint256"},{"name":"torpedoBatchID","type":"uint256"},{"name":"torpedoBatchMultiplier","type":"uint32"},{"name":"torpedoBatchBlockTimeout","type":"uint256"},{"name":"score","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_nextOwner","type":"address"}],"name":"changeOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_nextSigner","type":"address"}],"name":"changeSigner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"view_get_ResultData","outputs":[{"name":"TotalPlayer","type":"uint32"},{"name":"TotalPayout","type":"uint256"},{"name":"MyTokenValue","type":"uint256"},{"name":"MyToken","type":"uint256"},{"name":"MyGains","type":"uint256"},{"name":"MyScore","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"view_get_blockNumbers","outputs":[{"name":"b1","type":"uint256"},{"name":"b2","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"WithdrawGains","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"disableMaintenance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"enableMaintenance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"eth","type":"uint256"},{"name":"score","type":"int256"},{"name":"torpedoBatchID","type":"uint256"},{"name":"_referrer_address","type":"address"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"},{"name":"v","type":"uint8"}],"name":"BuyTorpedoWithDividends","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"initCampaign","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"view_get_gameTorpedoData","outputs":[{"name":"torpedoBatchID","type":"uint256"},{"name":"torpedoBatchMultiplier","type":"uint32"},{"name":"torpedoBatchBlockTimeout","type":"uint256"},{"name":"score","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"ChargeTreasure","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":"previousOwner","type":"address"},{"indexed":false,"name":"nextOwner","type":"address"},{"indexed":false,"name":"timeStamp","type":"uint256"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"previous","type":"address"},{"indexed":false,"name":"next","type":"address"},{"indexed":false,"name":"timeStamp","type":"uint256"}],"name":"HDXcontractChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"customerAddress","type":"address"},{"indexed":false,"name":"ethereumWithdrawn","type":"uint256"},{"indexed":false,"name":"timeStamp","type":"uint256"}],"name":"onWithdrawGains","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"gRND","type":"uint256"},{"indexed":false,"name":"blockNumberTimeout","type":"uint256"},{"indexed":false,"name":"score","type":"uint256"},{"indexed":false,"name":"customerAddress","type":"address"},{"indexed":false,"name":"newHighScore","type":"bool"},{"indexed":false,"name":"highscoreChanged","type":"bool"}],"name":"onNewScore","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"gRND","type":"uint256"},{"indexed":false,"name":"blockNumber","type":"uint256"}],"name":"onNewCampaign","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"customerAddress","type":"address"},{"indexed":false,"name":"gRND","type":"uint256"},{"indexed":false,"name":"torpedoBatchID","type":"uint256"},{"indexed":false,"name":"torpedoBatchBlockTimeout","type":"uint256"},{"indexed":false,"name":"nbToken","type":"uint256"},{"indexed":false,"name":"torpedoBatchMultiplier","type":"uint32"}],"name":"onBuyTorpedo","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"mode","type":"bool"},{"indexed":false,"name":"timeStamp","type":"uint256"}],"name":"onMaintenance","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"gRND","type":"uint256"}],"name":"onCloseEntry","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"blocktimeavg","type":"uint256"}],"name":"onChangeBlockTimeAverage","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"minimum","type":"uint256"},{"indexed":false,"name":"timeStamp","type":"uint256"}],"name":"onChangeMinimumPrice","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"customerAddress","type":"address"},{"indexed":false,"name":"name","type":"bytes32"},{"indexed":false,"name":"timeStamp","type":"uint256"}],"name":"onNewName","type":"event"}]
Contract Creation Code
608060405260008054600160a060020a0319908116738942a5995bd168f347f7ec58f25a54a9a064f8821782556002805490911673f77444ce64f3f46ba6b63f6b9411df9c589e33191790556007805460ff191690556008819055600955662386f26fc10000600a55600f600b5534801561007957600080fd5b5060018054600160a060020a031916331790556000303111156100d257600154604051600160a060020a0390911690303180156108fc02916000818181858888f193505050501580156100d0573d6000803e3d6000fd5b505b612c50806100e16000396000f3006080604052600436106101695763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630149eea081146101825780630908c7fa146101a95780630f666426146101cf57806310b7d9ae146101e75780631449c32114610210578063212a6fd3146102fe57806332dc04aa1461031357806333791ddc1461032b5780634af0616a1461034c578063576bcd3f146103735780635b3660961461037e57806361c959261461039f5780636b2f4632146103d05780636ddd183a146103e5578063844d38ee1461048b57806388037e1c146104a05780638da5cb5b14610514578063a6f9dae114610529578063aad2b7231461054a578063ae5dbd431461056b578063b395f278146105ba578063bd679ab2146105e8578063bdc0ba8e146105fd578063cc0e13e214610612578063d925312814610627578063ea27e8451461065d578063f0b2653614610672578063fee13823146106b2575b600054600160a060020a0316331461018057600080fd5b005b34801561018e57600080fd5b506101976106ba565b60408051918252519081900360200190f35b610180600435602435600160a060020a036044351660643560843560ff60a435166106c0565b3480156101db57600080fd5b506101806004356107a1565b3480156101f357600080fd5b506101fc610804565b604080519115158252519081900360200190f35b34801561021c57600080fd5b5061022561080d565b604051808c81526020018b63ffffffff1663ffffffff1681526020018a815260200189815260200188815260200187815260200186815260200185600860200280838360005b8381101561028357818101518382015260200161026b565b5050505090500184600860200280838360005b838110156102ae578181015183820152602001610296565b5050505090500183600860200280838360005b838110156102d95781810151838201526020016102c1565b50505050919091019283525050604051908190036020019a5098505050505050505050f35b34801561030a57600080fd5b506101806109d8565b34801561031f57600080fd5b50610180600435610a55565b34801561033757600080fd5b50610197600160a060020a0360043516610ab4565b34801561035857600080fd5b5061018060043560243560443560643560ff60843516610acf565b610180600435610b8c565b34801561038a57600080fd5b50610180600160a060020a0360043516610d2e565b3480156103ab57600080fd5b506103b4610df0565b60408051600160a060020a039092168252519081900360200190f35b3480156103dc57600080fd5b50610197610dff565b3480156103f157600080fd5b506103fa610e04565b604051808461010080838360005b83811015610420578181015183820152602001610408565b5050505090500183600860200280838360005b8381101561044b578181015183820152602001610433565b5050505090500182600860200280838360005b8381101561047657818101518382015260200161045e565b50505050905001935050505060405180910390f35b34801561049757600080fd5b50610197610f66565b3480156104ac57600080fd5b506104b5611005565b604080519b8c5260208c019a909a528a8a019890985260608a019690965263ffffffff94851660808a015260a089019390935260c088019190915260e08701521661010085015261012084015261014083015251908190036101600190f35b34801561052057600080fd5b506103b461108f565b34801561053557600080fd5b50610180600160a060020a036004351661109e565b34801561055657600080fd5b50610180600160a060020a0360043516611160565b34801561057757600080fd5b506105806111d6565b6040805163ffffffff90971687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b3480156105c657600080fd5b506105cf611368565b6040805192835260208301919091528051918290030190f35b3480156105f457600080fd5b50610180611381565b34801561060957600080fd5b50610180611482565b34801561061e57600080fd5b506101806114e8565b34801561063357600080fd5b50610180600435602435604435600160a060020a036064351660843560a43560ff60c43516611550565b34801561066957600080fd5b506101806116cf565b34801561067e57600080fd5b506106876117cd565b6040805194855263ffffffff9093166020850152838301919091526060830152519081900360800190f35b610180611814565b60095490565b6000806106cb612b90565b3332146106d757600080fd5b60075433935034925060ff161580156106f257506000600854115b801561071c5750600a5482148061070d5750600a54600a0282145b8061071c5750600a5460640282145b801561073b575060085460009081526005602052604090206001015443105b151561074657600080fd5b610140810189905261012081018890526101608101869052610180810185905260ff84166101a0820152600a548281151561077d57fe5b0463ffffffff1661010082015261079683838984611825565b505050505050505050565b600154600160a060020a031633146107b857600080fd5b60008111156107c757600a8190555b6040805182815242602082015281517f96aff3d0ee4748c300128c53ba5612b8363232b00ab841ce27937cd52c8e0f28929181900390910190a150565b60075460ff1690565b6000806000806000806000610820612c04565b610828612c04565b610830612c04565b600061083a612c04565b610842612c04565b61084a612c04565b6000805b6008821015610973576008546000908152600560205260409020600a01826010811061087657fe5b600891828204019190066004029054906101000a900463ffffffff1685836008811015156108a057fe5b63ffffffff9092166020928302919091015260088054600090815260059092526040909120600a01908301601081106108d557fe5b600880820492909201548254600090815260056020908152604080832060079586166004026101000a90940463ffffffff168084529490930190522054909250600160a060020a03169085908490811061092b57fe5b600160a060020a03909216602092909202015261095784836008811061094d57fe5b6020020151610ab4565b83836008811061096357fe5b602002015260019091019061084e565b6008546000818152600560205260409020600c810154600a548254600190930154600b5463ffffffff90931693919243908b8b8b6109b033610ab4565b9f509f509f509f509f509f509f509f509f509f509f505050505050909192939495969798999a565b600154600090600160a060020a031633146109f257600080fd5b60075460ff1615610a0257600080fd5b506008546000908152600560205260409020610a1d81611d67565b60085460408051918252517f4eb04f9aed2df935e25cbec04051b51a0d2dedf786d3ef9ef4cfcb717ff8115f9181900360200190a150565b600154600160a060020a03163314610a6c57600080fd5b60008111610a7957600080fd5b600b8190556040805182815290517f6c1cf48245a0a91e114596b04dfcbe443303e5f72fab6771794891112fe4395f9181900360200190a150565b600160a060020a031660009081526006602052604090205490565b6000610ad9612b90565b333214610ae557600080fd5b60075433925060ff16158015610afd57506000600854115b8015610b1c575060085460009081526005602052604090206001015443105b8015610b445750600854600160a060020a038316600090815260036020526040902060020154145b1515610b4f57600080fd5b610140810187905261012081018690526101608101859052610180810184905260ff83166101a0820152610b838282611e29565b50505050505050565b6007543390349060ff16158015610ba75750600a54600a0281145b1515610bb257600080fd5b60008054600154604080517fc671b934000000000000000000000000000000000000000000000000000000008152600160a060020a03928316600482015260248101949094525160029094049391169163c671b93491849160448082019260209290919082900301818588803b158015610c2b57600080fd5b505af1158015610c3f573d6000803e3d6000fd5b50505050506040513d6020811015610c5657600080fd5b505060008054604080517f16ff1c760000000000000000000000000000000000000000000000000000000081529051600160a060020a03909216926316ff1c76928592600480820193929182900301818588803b158015610cb657600080fd5b505af1158015610cca573d6000803e3d6000fd5b505050600160a060020a038416600081815260066020908152604091829020889055815192835282018790524282820152517fcf9e039b89f14b39579de014cbb7196367b18bd199b38836c8f1177d72de3f109350908190036060019150a1505050565b600154600160a060020a03163314610d4557600080fd5b600054600160a060020a0382811691161415610d6057600080fd5b600160a060020a0381161515610d7557600080fd5b60005460408051600160a060020a03928316815291831660208301524282820152517f87ab77b91a9a6a5a04a748607e0ee38d580963c4e21fe45d2e79ffeef26bc55e9181900360600190a16000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600254600160a060020a031681565b303190565b610e0c612c04565b610e14612c04565b610e1c612c04565b6000610e26612c04565b610e2e612c04565b610e36612c04565b3393506000805b6008821015610f58576008546000908152600560205260409020600a018260108110610e6557fe5b600891828204019190066004029054906101000a900463ffffffff168583600881101515610e8f57fe5b63ffffffff9092166020928302919091015260088054600090815260059092526040909120600a0190830160108110610ec457fe5b600880820492909201548254600090815260056020908152604080832060079586166004026101000a90940463ffffffff168084529490930190522054909250600160a060020a031690859084908110610f1a57fe5b600160a060020a039092166020929092020152610f3c84836008811061094d57fe5b838360088110610f4857fe5b6020020152600190910190610e3d565b509297919650945092505050565b336000818152600360205260408120600201549091908290610fb290610f8d90849061238d565b600160a060020a0384166000908152600360205260409020549063ffffffff6125f116565b600160a060020a038316600090815260036020526040902060010154909150811115610ffb57600160a060020a0382166000908152600360205260409020600101549003610fff565b5060005b92915050565b60085460008181526005602081815260408084206002808201546003830154838701546004808601546006870154600c90970154338c52918952878b209b8b529a9097529490972080546001820154978201549190930154919997989497949663ffffffff6401000000009097048716969395909380831693926801000000000000000090041690565b600154600160a060020a031681565b600154600160a060020a031633146110b557600080fd5b600154600160a060020a03828116911614156110d057600080fd5b600160a060020a03811615156110e557600080fd5b60015460408051600160a060020a03928316815291831660208301524282820152517fc13a1166d81cd3b0b352a367aebab95f3a6f6bc695fdab8e9a9d335239c3861b9181900360600190a16001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600154600160a060020a0316331461117757600080fd5b600254600160a060020a038281169116141561119257600080fd5b600160a060020a03811615156111a757600080fd5b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6008546000908152600560205260408120600c810154640100000000900463ffffffff1691908190819081908190339061120f81612601565b600160a060020a03808416600090815260046020818152604080842060085485528252808420830154845482517f1097b9ee0000000000000000000000000000000000000000000000000000000081526001958101959095529151969d506fffffffffffffffffffffffffffffffff169a5090931693631097b9ee9360248084019491938390030190829087803b1580156112a957600080fd5b505af11580156112bd573d6000803e3d6000fd5b505050506040513d60208110156112d357600080fd5b5051600854600160a060020a038416600090815260036020526040812060020154670de0b6b3a76400009389029390930498509550141561131d5761131a82600854612697565b93505b50600160a060020a031660009081526004602090815260408083206008548452909152902060050154959694959394929391926801000000000000000090920463ffffffff16919050565b6008546000908152600560205260409020600101544391565b33600090815260036020526040812060020154819015156113a157600080fd5b3391506113ad82612852565b9050600081116113bc57600080fd5b600160a060020a0382166000908152600360205260409020600101546113e8908263ffffffff6125f116565b600160a060020a038316600081815260036020908152604091829020600101939093558051918252918101839052428183015290517f8ea11b70a47e5aaa4024df0985799a384faaaf34e6da0aadbadcae0fbfca45ac9181900360600190a1604051600160a060020a0383169082156108fc029083906000818181858888f1935050505015801561147d573d6000803e3d6000fd5b505050565b600154600160a060020a0316331461149957600080fd5b6007805460ff19169055604080516000815242602082015281517fb04e455982e111d37c1d6ff02f82a465d673bb8931f9595e16b3aaf421001e56929181900390910190a16114e66116cf565b565b600154600160a060020a031633146114ff57600080fd5b6007805460ff1916600117908190556040805160ff929092161515825242602083015280517fb04e455982e111d37c1d6ff02f82a465d673bb8931f9595e16b3aaf421001e569281900390910190a1565b600061155a612b90565b33321461156657600080fd5b60075460ff1615801561157b57506000600854115b80156115a55750600a548914806115965750600a54600a0289145b806115a55750600a5460640289145b80156115c4575060085460009081526005602052604090206001015443105b15156115cf57600080fd5b610140810188905261012081018790526101608101859052610180810184905260ff83166101a0820152600a543392508981151561160957fe5b0463ffffffff1661010082015260008054604080517f52dde1c3000000000000000000000000000000000000000000000000000000008152600481018d9052600160a060020a038681166024830152915191909216926352dde1c392604480820193602093909283900390910190829087803b15801561168857600080fd5b505af115801561169c573d6000803e3d6000fd5b505050506040513d60208110156116b257600080fd5b50519850600089116116c357600080fd5b610796828a8884611825565b60015460009081908190600160a060020a031633146116ed57600080fd5b60075460ff16156116fd57600080fd5b600880546001908101918290556000918252600560205260409091204380825563128a18000191810191909155600a546002820181905560095491945092506117479084906128ed565b9050670de0b6b3a7640000611762828463ffffffff61295916565b81151561176b57fe5b0460048401819055600954909150611789908263ffffffff61298516565b6009556008546040805191825243602083015280517fae4bf3465111e7661119cb02fb9f8d726b606da9622ebcd75cabb5d611a0d04b9281900390910190a1505050565b3360009081526004602090815260408083206008548452909152902060018101546005820154600290920154909263ffffffff808416936801000000000000000090041690565b611820600954346125f1565b600955565b600160a060020a038416600081815260046020908152604080832060085480855290835281842060058452828520958552600390935290832060020154919392918291829182911461199c57600160a060020a038a16600090815260036020526040902060020154156118ff57600160a060020a038a166000908152600360205260409020600201546118b9908b9061238d565b600160a060020a038b166000908152600360205260409020549094506118e5908563ffffffff6125f116565b600160a060020a038b166000908152600360205260409020555b600854600160a060020a038b16600081815260036020908152604080832060020194909455600c8901805467ffffffff00000000198082166401000000009283900463ffffffff908116600101811684029190911780855560058f0180549185900483168502919093161790915591540416825260078901905291909120805473ffffffffffffffffffffffffffffffffffffffff191690911790555b6101208701511515806119b25750600186015415155b156119c1576119c18a88611e29565b61010087015160058701805463ffffffff191663ffffffff909216919091179055600b546138408115156119f157fe5b4391900481016002880155604080516020808201939093526c01000000000000000000000000600160a060020a038e168102828401523002605482015281516048818303018152606890910191829052805190928291908401908083835b60208310611a6e5780518252601f199092019160209182019101611a4f565b5181516020939093036101000a6000190180199091169216919091179052604051920182900390912060018a01555060649150611aae90508a6005612959565b811515611ab757fe5b049250611ad3838a0386600401546125f190919063ffffffff16565b600480870191909155600054604080517fc671b934000000000000000000000000000000000000000000000000000000008152600160a060020a038e8116948201949094528b841660248201529051929091169163c671b934918691604480830192602092919082900301818588803b158015611b4f57600080fd5b505af1158015611b63573d6000803e3d6000fd5b50505050506040513d6020811015611b7a57600080fd5b50516004870180546fffffffffffffffffffffffffffffffff8082168401166fffffffffffffffffffffffffffffffff199091161790559150611bd9856064611bca8c603c63ffffffff61295916565b811515611bd357fe5b046128ed565b506064611bed8a601463ffffffff61295916565b811515611bf657fe5b60028701549190049950611c188a670de0b6b3a764000063ffffffff61295916565b811515611c2157fe5b049050611c3b8186600501546125f190919063ffffffff16565b60058601556003850154611c55908263ffffffff6125f116565b60038601558554611c6c908263ffffffff6125f116565b86556005850154670de0b6b3a76400001015611cb45760058501546004860154611ca490670de0b6b3a764000063ffffffff61295916565b811515611cad57fe5b0460028601555b611cc68567016345785d8a000061299a565b600854600187015460028801547f5ac0b4edd12a08f65800ba1acbf27d7c2be5f7c546be8a7406ac44db6a2cc29f928d9290918660058c01600060088104919091015460408051600160a060020a03989098168852602088019690965286860194909452606086019290925260808501526007166004026101000a900463ffffffff1660a08301525160c0918190039190910190a150505050505050505050565b600c81015463ffffffff16600080808084118015611d8e575063400000008463ffffffff16105b15611e2257600c8501805463ffffffff19166340000000861763ffffffff9081169190911790915560028601546006870154909450670de0b6b3a764000091611dda9190869061295916565b811515611de357fe5b0491506064611df383600a612959565b811515611dfc57fe5b049050611e14816009546125f190919063ffffffff16565b600955611e2285600061299a565b5050505050565b600160a060020a038216600090815260046020908152604080832060085484528252808320600590925282206101208401519192909181908190819015801590611e7b57508560010154876101200151145b1515611e8657600080fd5b6000808852602088015263ffffffff6060880152600286015443101580611fdd575060025461014088015161012089015160408051602080820194909452808201929092528051808303820181526060909201908190528151600160a060020a03909416936001938291908401908083835b60208310611f175780518252601f199092019160209182019101611ef8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020896101a001518a61016001518b6101800151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015611fc7573d6000803e3d6000fd5b50505060206040510351600160a060020a031614155b15611feb5760006101408801525b600586015461014088015168010000000000000000820463ffffffff908116921602019350600084121561201e57600093505b63ffffffff8413156120325763ffffffff93505b6005860180546bffffffff000000000000000019166801000000000000000063ffffffff871602179055839250600091505b600882101561213857600a8501826010811061207c57fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff16905086604001518111156120bb576040870181905260a087018290525b86606001518110156120d65760608701819052608087018290525b6005860154640100000000900463ffffffff16600a860160088401601081106120fb57fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff16141561212d576001820160c08801525b600190910190612064565b60a0870151600a8601906008016010811061214f57fe5b60088104919091015460079091166004026101000a900463ffffffff1660e088015260c0870151600010156121d6578285600a0160018960c001510360108110151561219757fe5b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff16021790555060018760200190151590811515815250506122a2565b86606001518311156122a2578285600a0188608001516010811015156121f857fe5b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff16021790555085600501600160038110151561223357fe5b600891828204019190066004029054906101000a900463ffffffff1685600a01886080015160080160108110151561226757fe5b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff16021790555060018760200190151590811515815250505b866040015183111561230b57600586015460e088015163ffffffff908116640100000000909204161461230b57600b54620151808115156122df57fe5b044301600186810191909155600c8601805463ffffffff80821684011663ffffffff1990911617905587525b60006001808801919091556008549086015488516020808b01516040805195865291850193909352838101879052600160a060020a038c166060850152901515608084015290151560a0830152517f2628150fa1da4e0b851fdaa0287546130f9fd453be51323b489a81f6c4bf00679181900360c00190a15050505050505050565b6000806000806000806000806000808a600360008e600160a060020a0316600160a060020a03168152602001908152602001600020600201541415806123d157508a155b156123df57600099506125e2565b600560008c815260200190815260200160002098506000975088600201549650600460008d600160a060020a0316600160a060020a0316815260200190815260200160002060008c8152602001908152602001600020945084600001549550612475670de0b6b3a764000061245d898961295990919063ffffffff16565b81151561246657fe5b8a91900463ffffffff6125f116565b600c8a0154909850634000000063ffffffff909116106125de576006890154600094508493506064906124d590603c90670de0b6b3a7640000906124bf908c63ffffffff61295916565b8115156124c857fe5b049063ffffffff61295916565b8115156124de57fe5b049150600090505b60088110156125be57612532600a8a01826010811061250157fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff16846125f190919063ffffffff16565b6005860154909350640100000000900463ffffffff16600a8a01600883016010811061255a57fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff1614156125b657600a8901816010811061259157fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff1693505b6001016124e6565b60008311156125de576125db8361245d848763ffffffff61295916565b97505b8799505b50505050505050505092915050565b81810182811015610fff57600080fd5b60028101546003820154600091829182612645670de0b6b3a764000061262d848663ffffffff61295916565b81151561263657fe5b8691900463ffffffff6125f116565b600687015490945060649061267190603c90670de0b6b3a7640000906124bf908863ffffffff61295916565b81151561267a57fe5b04905061268d848263ffffffff6125f116565b9695505050505050565b6000806000806000806000806000808a600360008e600160a060020a0316600160a060020a03168152602001908152602001600020600201541415806126db57508a155b156126e957600099506125e2565b600560008c815260200190815260200160002098506000975088600201549650600460008d600160a060020a0316600160a060020a0316815260200190815260200160002060008c8152602001908152602001600020945084600001549550612767670de0b6b3a764000061245d898961295990919063ffffffff16565b60068a01549098506000945084935060649061279a90603c90670de0b6b3a7640000906124bf908c63ffffffff61295916565b8115156127a357fe5b049150600090505b60088110156125be576127c6600a8a01826010811061250157fe5b6005860154909350640100000000900463ffffffff16600a8a0160088301601081106127ee57fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff16141561284a57600a8901816010811061282557fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff1693505b6001016127ab565b600160a060020a03811660009081526003602052604081206002015481906128a49061287f90859061238d565b600160a060020a0385166000908152600360205260409020549063ffffffff6125f116565b600160a060020a038416600090815260036020526040902060010154909150811115610ffb57600160a060020a0383166000908152600360205260409020600101549003610fff565b6002820154600090819061290f84670de0b6b3a764000063ffffffff61295916565b81151561291857fe5b0490506129328185600601546125f190919063ffffffff16565b6006850155600584015461294c908263ffffffff6125f116565b6005850155905092915050565b600082151561296a57506000610fff565b5081810281838281151561297a57fe5b0414610fff57600080fd5b60008282111561299457600080fd5b50900390565b6002820154600683015460009081908190670de0b6b3a7640000906129c5908663ffffffff61295916565b8115156129ce57fe5b04925060646129de846019612959565b8115156129e757fe5b04915060646129f7846005612959565b811515612a0057fe5b0490508560090154811115612ad9576009860154900384811115612ad9576009860154612a33908263ffffffff6125f116565b600987015560008054600154604080517fc671b934000000000000000000000000000000000000000000000000000000008152600160a060020a03928316600482015260248101949094525191169163c671b93491849160448082019260209290919082900301818588803b158015612aab57600080fd5b505af1158015612abf573d6000803e3d6000fd5b50505050506040513d6020811015612ad657600080fd5b50505b8560080154821115612b885785600801548203915084821115612b88576008860154612b0b908363ffffffff6125f116565b600887015560008054604080517f16ff1c760000000000000000000000000000000000000000000000000000000081529051600160a060020a03909216926316ff1c76928692600480820193929182900301818588803b158015612b6e57600080fd5b505af1158015612b82573d6000803e3d6000fd5b50505050505b505050505050565b604080516101c081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081019190915290565b6101006040519081016040528060089060208202803883395091929150505600a165627a7a72305820b6c67ad01a9ffbfe57f423cb641607c78fbf19eb22cf8db028083a48718a6dea0029
Deployed Bytecode
0x6080604052600436106101695763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630149eea081146101825780630908c7fa146101a95780630f666426146101cf57806310b7d9ae146101e75780631449c32114610210578063212a6fd3146102fe57806332dc04aa1461031357806333791ddc1461032b5780634af0616a1461034c578063576bcd3f146103735780635b3660961461037e57806361c959261461039f5780636b2f4632146103d05780636ddd183a146103e5578063844d38ee1461048b57806388037e1c146104a05780638da5cb5b14610514578063a6f9dae114610529578063aad2b7231461054a578063ae5dbd431461056b578063b395f278146105ba578063bd679ab2146105e8578063bdc0ba8e146105fd578063cc0e13e214610612578063d925312814610627578063ea27e8451461065d578063f0b2653614610672578063fee13823146106b2575b600054600160a060020a0316331461018057600080fd5b005b34801561018e57600080fd5b506101976106ba565b60408051918252519081900360200190f35b610180600435602435600160a060020a036044351660643560843560ff60a435166106c0565b3480156101db57600080fd5b506101806004356107a1565b3480156101f357600080fd5b506101fc610804565b604080519115158252519081900360200190f35b34801561021c57600080fd5b5061022561080d565b604051808c81526020018b63ffffffff1663ffffffff1681526020018a815260200189815260200188815260200187815260200186815260200185600860200280838360005b8381101561028357818101518382015260200161026b565b5050505090500184600860200280838360005b838110156102ae578181015183820152602001610296565b5050505090500183600860200280838360005b838110156102d95781810151838201526020016102c1565b50505050919091019283525050604051908190036020019a5098505050505050505050f35b34801561030a57600080fd5b506101806109d8565b34801561031f57600080fd5b50610180600435610a55565b34801561033757600080fd5b50610197600160a060020a0360043516610ab4565b34801561035857600080fd5b5061018060043560243560443560643560ff60843516610acf565b610180600435610b8c565b34801561038a57600080fd5b50610180600160a060020a0360043516610d2e565b3480156103ab57600080fd5b506103b4610df0565b60408051600160a060020a039092168252519081900360200190f35b3480156103dc57600080fd5b50610197610dff565b3480156103f157600080fd5b506103fa610e04565b604051808461010080838360005b83811015610420578181015183820152602001610408565b5050505090500183600860200280838360005b8381101561044b578181015183820152602001610433565b5050505090500182600860200280838360005b8381101561047657818101518382015260200161045e565b50505050905001935050505060405180910390f35b34801561049757600080fd5b50610197610f66565b3480156104ac57600080fd5b506104b5611005565b604080519b8c5260208c019a909a528a8a019890985260608a019690965263ffffffff94851660808a015260a089019390935260c088019190915260e08701521661010085015261012084015261014083015251908190036101600190f35b34801561052057600080fd5b506103b461108f565b34801561053557600080fd5b50610180600160a060020a036004351661109e565b34801561055657600080fd5b50610180600160a060020a0360043516611160565b34801561057757600080fd5b506105806111d6565b6040805163ffffffff90971687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b3480156105c657600080fd5b506105cf611368565b6040805192835260208301919091528051918290030190f35b3480156105f457600080fd5b50610180611381565b34801561060957600080fd5b50610180611482565b34801561061e57600080fd5b506101806114e8565b34801561063357600080fd5b50610180600435602435604435600160a060020a036064351660843560a43560ff60c43516611550565b34801561066957600080fd5b506101806116cf565b34801561067e57600080fd5b506106876117cd565b6040805194855263ffffffff9093166020850152838301919091526060830152519081900360800190f35b610180611814565b60095490565b6000806106cb612b90565b3332146106d757600080fd5b60075433935034925060ff161580156106f257506000600854115b801561071c5750600a5482148061070d5750600a54600a0282145b8061071c5750600a5460640282145b801561073b575060085460009081526005602052604090206001015443105b151561074657600080fd5b610140810189905261012081018890526101608101869052610180810185905260ff84166101a0820152600a548281151561077d57fe5b0463ffffffff1661010082015261079683838984611825565b505050505050505050565b600154600160a060020a031633146107b857600080fd5b60008111156107c757600a8190555b6040805182815242602082015281517f96aff3d0ee4748c300128c53ba5612b8363232b00ab841ce27937cd52c8e0f28929181900390910190a150565b60075460ff1690565b6000806000806000806000610820612c04565b610828612c04565b610830612c04565b600061083a612c04565b610842612c04565b61084a612c04565b6000805b6008821015610973576008546000908152600560205260409020600a01826010811061087657fe5b600891828204019190066004029054906101000a900463ffffffff1685836008811015156108a057fe5b63ffffffff9092166020928302919091015260088054600090815260059092526040909120600a01908301601081106108d557fe5b600880820492909201548254600090815260056020908152604080832060079586166004026101000a90940463ffffffff168084529490930190522054909250600160a060020a03169085908490811061092b57fe5b600160a060020a03909216602092909202015261095784836008811061094d57fe5b6020020151610ab4565b83836008811061096357fe5b602002015260019091019061084e565b6008546000818152600560205260409020600c810154600a548254600190930154600b5463ffffffff90931693919243908b8b8b6109b033610ab4565b9f509f509f509f509f509f509f509f509f509f509f505050505050909192939495969798999a565b600154600090600160a060020a031633146109f257600080fd5b60075460ff1615610a0257600080fd5b506008546000908152600560205260409020610a1d81611d67565b60085460408051918252517f4eb04f9aed2df935e25cbec04051b51a0d2dedf786d3ef9ef4cfcb717ff8115f9181900360200190a150565b600154600160a060020a03163314610a6c57600080fd5b60008111610a7957600080fd5b600b8190556040805182815290517f6c1cf48245a0a91e114596b04dfcbe443303e5f72fab6771794891112fe4395f9181900360200190a150565b600160a060020a031660009081526006602052604090205490565b6000610ad9612b90565b333214610ae557600080fd5b60075433925060ff16158015610afd57506000600854115b8015610b1c575060085460009081526005602052604090206001015443105b8015610b445750600854600160a060020a038316600090815260036020526040902060020154145b1515610b4f57600080fd5b610140810187905261012081018690526101608101859052610180810184905260ff83166101a0820152610b838282611e29565b50505050505050565b6007543390349060ff16158015610ba75750600a54600a0281145b1515610bb257600080fd5b60008054600154604080517fc671b934000000000000000000000000000000000000000000000000000000008152600160a060020a03928316600482015260248101949094525160029094049391169163c671b93491849160448082019260209290919082900301818588803b158015610c2b57600080fd5b505af1158015610c3f573d6000803e3d6000fd5b50505050506040513d6020811015610c5657600080fd5b505060008054604080517f16ff1c760000000000000000000000000000000000000000000000000000000081529051600160a060020a03909216926316ff1c76928592600480820193929182900301818588803b158015610cb657600080fd5b505af1158015610cca573d6000803e3d6000fd5b505050600160a060020a038416600081815260066020908152604091829020889055815192835282018790524282820152517fcf9e039b89f14b39579de014cbb7196367b18bd199b38836c8f1177d72de3f109350908190036060019150a1505050565b600154600160a060020a03163314610d4557600080fd5b600054600160a060020a0382811691161415610d6057600080fd5b600160a060020a0381161515610d7557600080fd5b60005460408051600160a060020a03928316815291831660208301524282820152517f87ab77b91a9a6a5a04a748607e0ee38d580963c4e21fe45d2e79ffeef26bc55e9181900360600190a16000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600254600160a060020a031681565b303190565b610e0c612c04565b610e14612c04565b610e1c612c04565b6000610e26612c04565b610e2e612c04565b610e36612c04565b3393506000805b6008821015610f58576008546000908152600560205260409020600a018260108110610e6557fe5b600891828204019190066004029054906101000a900463ffffffff168583600881101515610e8f57fe5b63ffffffff9092166020928302919091015260088054600090815260059092526040909120600a0190830160108110610ec457fe5b600880820492909201548254600090815260056020908152604080832060079586166004026101000a90940463ffffffff168084529490930190522054909250600160a060020a031690859084908110610f1a57fe5b600160a060020a039092166020929092020152610f3c84836008811061094d57fe5b838360088110610f4857fe5b6020020152600190910190610e3d565b509297919650945092505050565b336000818152600360205260408120600201549091908290610fb290610f8d90849061238d565b600160a060020a0384166000908152600360205260409020549063ffffffff6125f116565b600160a060020a038316600090815260036020526040902060010154909150811115610ffb57600160a060020a0382166000908152600360205260409020600101549003610fff565b5060005b92915050565b60085460008181526005602081815260408084206002808201546003830154838701546004808601546006870154600c90970154338c52918952878b209b8b529a9097529490972080546001820154978201549190930154919997989497949663ffffffff6401000000009097048716969395909380831693926801000000000000000090041690565b600154600160a060020a031681565b600154600160a060020a031633146110b557600080fd5b600154600160a060020a03828116911614156110d057600080fd5b600160a060020a03811615156110e557600080fd5b60015460408051600160a060020a03928316815291831660208301524282820152517fc13a1166d81cd3b0b352a367aebab95f3a6f6bc695fdab8e9a9d335239c3861b9181900360600190a16001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600154600160a060020a0316331461117757600080fd5b600254600160a060020a038281169116141561119257600080fd5b600160a060020a03811615156111a757600080fd5b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6008546000908152600560205260408120600c810154640100000000900463ffffffff1691908190819081908190339061120f81612601565b600160a060020a03808416600090815260046020818152604080842060085485528252808420830154845482517f1097b9ee0000000000000000000000000000000000000000000000000000000081526001958101959095529151969d506fffffffffffffffffffffffffffffffff169a5090931693631097b9ee9360248084019491938390030190829087803b1580156112a957600080fd5b505af11580156112bd573d6000803e3d6000fd5b505050506040513d60208110156112d357600080fd5b5051600854600160a060020a038416600090815260036020526040812060020154670de0b6b3a76400009389029390930498509550141561131d5761131a82600854612697565b93505b50600160a060020a031660009081526004602090815260408083206008548452909152902060050154959694959394929391926801000000000000000090920463ffffffff16919050565b6008546000908152600560205260409020600101544391565b33600090815260036020526040812060020154819015156113a157600080fd5b3391506113ad82612852565b9050600081116113bc57600080fd5b600160a060020a0382166000908152600360205260409020600101546113e8908263ffffffff6125f116565b600160a060020a038316600081815260036020908152604091829020600101939093558051918252918101839052428183015290517f8ea11b70a47e5aaa4024df0985799a384faaaf34e6da0aadbadcae0fbfca45ac9181900360600190a1604051600160a060020a0383169082156108fc029083906000818181858888f1935050505015801561147d573d6000803e3d6000fd5b505050565b600154600160a060020a0316331461149957600080fd5b6007805460ff19169055604080516000815242602082015281517fb04e455982e111d37c1d6ff02f82a465d673bb8931f9595e16b3aaf421001e56929181900390910190a16114e66116cf565b565b600154600160a060020a031633146114ff57600080fd5b6007805460ff1916600117908190556040805160ff929092161515825242602083015280517fb04e455982e111d37c1d6ff02f82a465d673bb8931f9595e16b3aaf421001e569281900390910190a1565b600061155a612b90565b33321461156657600080fd5b60075460ff1615801561157b57506000600854115b80156115a55750600a548914806115965750600a54600a0289145b806115a55750600a5460640289145b80156115c4575060085460009081526005602052604090206001015443105b15156115cf57600080fd5b610140810188905261012081018790526101608101859052610180810184905260ff83166101a0820152600a543392508981151561160957fe5b0463ffffffff1661010082015260008054604080517f52dde1c3000000000000000000000000000000000000000000000000000000008152600481018d9052600160a060020a038681166024830152915191909216926352dde1c392604480820193602093909283900390910190829087803b15801561168857600080fd5b505af115801561169c573d6000803e3d6000fd5b505050506040513d60208110156116b257600080fd5b50519850600089116116c357600080fd5b610796828a8884611825565b60015460009081908190600160a060020a031633146116ed57600080fd5b60075460ff16156116fd57600080fd5b600880546001908101918290556000918252600560205260409091204380825563128a18000191810191909155600a546002820181905560095491945092506117479084906128ed565b9050670de0b6b3a7640000611762828463ffffffff61295916565b81151561176b57fe5b0460048401819055600954909150611789908263ffffffff61298516565b6009556008546040805191825243602083015280517fae4bf3465111e7661119cb02fb9f8d726b606da9622ebcd75cabb5d611a0d04b9281900390910190a1505050565b3360009081526004602090815260408083206008548452909152902060018101546005820154600290920154909263ffffffff808416936801000000000000000090041690565b611820600954346125f1565b600955565b600160a060020a038416600081815260046020908152604080832060085480855290835281842060058452828520958552600390935290832060020154919392918291829182911461199c57600160a060020a038a16600090815260036020526040902060020154156118ff57600160a060020a038a166000908152600360205260409020600201546118b9908b9061238d565b600160a060020a038b166000908152600360205260409020549094506118e5908563ffffffff6125f116565b600160a060020a038b166000908152600360205260409020555b600854600160a060020a038b16600081815260036020908152604080832060020194909455600c8901805467ffffffff00000000198082166401000000009283900463ffffffff908116600101811684029190911780855560058f0180549185900483168502919093161790915591540416825260078901905291909120805473ffffffffffffffffffffffffffffffffffffffff191690911790555b6101208701511515806119b25750600186015415155b156119c1576119c18a88611e29565b61010087015160058701805463ffffffff191663ffffffff909216919091179055600b546138408115156119f157fe5b4391900481016002880155604080516020808201939093526c01000000000000000000000000600160a060020a038e168102828401523002605482015281516048818303018152606890910191829052805190928291908401908083835b60208310611a6e5780518252601f199092019160209182019101611a4f565b5181516020939093036101000a6000190180199091169216919091179052604051920182900390912060018a01555060649150611aae90508a6005612959565b811515611ab757fe5b049250611ad3838a0386600401546125f190919063ffffffff16565b600480870191909155600054604080517fc671b934000000000000000000000000000000000000000000000000000000008152600160a060020a038e8116948201949094528b841660248201529051929091169163c671b934918691604480830192602092919082900301818588803b158015611b4f57600080fd5b505af1158015611b63573d6000803e3d6000fd5b50505050506040513d6020811015611b7a57600080fd5b50516004870180546fffffffffffffffffffffffffffffffff8082168401166fffffffffffffffffffffffffffffffff199091161790559150611bd9856064611bca8c603c63ffffffff61295916565b811515611bd357fe5b046128ed565b506064611bed8a601463ffffffff61295916565b811515611bf657fe5b60028701549190049950611c188a670de0b6b3a764000063ffffffff61295916565b811515611c2157fe5b049050611c3b8186600501546125f190919063ffffffff16565b60058601556003850154611c55908263ffffffff6125f116565b60038601558554611c6c908263ffffffff6125f116565b86556005850154670de0b6b3a76400001015611cb45760058501546004860154611ca490670de0b6b3a764000063ffffffff61295916565b811515611cad57fe5b0460028601555b611cc68567016345785d8a000061299a565b600854600187015460028801547f5ac0b4edd12a08f65800ba1acbf27d7c2be5f7c546be8a7406ac44db6a2cc29f928d9290918660058c01600060088104919091015460408051600160a060020a03989098168852602088019690965286860194909452606086019290925260808501526007166004026101000a900463ffffffff1660a08301525160c0918190039190910190a150505050505050505050565b600c81015463ffffffff16600080808084118015611d8e575063400000008463ffffffff16105b15611e2257600c8501805463ffffffff19166340000000861763ffffffff9081169190911790915560028601546006870154909450670de0b6b3a764000091611dda9190869061295916565b811515611de357fe5b0491506064611df383600a612959565b811515611dfc57fe5b049050611e14816009546125f190919063ffffffff16565b600955611e2285600061299a565b5050505050565b600160a060020a038216600090815260046020908152604080832060085484528252808320600590925282206101208401519192909181908190819015801590611e7b57508560010154876101200151145b1515611e8657600080fd5b6000808852602088015263ffffffff6060880152600286015443101580611fdd575060025461014088015161012089015160408051602080820194909452808201929092528051808303820181526060909201908190528151600160a060020a03909416936001938291908401908083835b60208310611f175780518252601f199092019160209182019101611ef8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020896101a001518a61016001518b6101800151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015611fc7573d6000803e3d6000fd5b50505060206040510351600160a060020a031614155b15611feb5760006101408801525b600586015461014088015168010000000000000000820463ffffffff908116921602019350600084121561201e57600093505b63ffffffff8413156120325763ffffffff93505b6005860180546bffffffff000000000000000019166801000000000000000063ffffffff871602179055839250600091505b600882101561213857600a8501826010811061207c57fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff16905086604001518111156120bb576040870181905260a087018290525b86606001518110156120d65760608701819052608087018290525b6005860154640100000000900463ffffffff16600a860160088401601081106120fb57fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff16141561212d576001820160c08801525b600190910190612064565b60a0870151600a8601906008016010811061214f57fe5b60088104919091015460079091166004026101000a900463ffffffff1660e088015260c0870151600010156121d6578285600a0160018960c001510360108110151561219757fe5b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff16021790555060018760200190151590811515815250506122a2565b86606001518311156122a2578285600a0188608001516010811015156121f857fe5b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff16021790555085600501600160038110151561223357fe5b600891828204019190066004029054906101000a900463ffffffff1685600a01886080015160080160108110151561226757fe5b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff16021790555060018760200190151590811515815250505b866040015183111561230b57600586015460e088015163ffffffff908116640100000000909204161461230b57600b54620151808115156122df57fe5b044301600186810191909155600c8601805463ffffffff80821684011663ffffffff1990911617905587525b60006001808801919091556008549086015488516020808b01516040805195865291850193909352838101879052600160a060020a038c166060850152901515608084015290151560a0830152517f2628150fa1da4e0b851fdaa0287546130f9fd453be51323b489a81f6c4bf00679181900360c00190a15050505050505050565b6000806000806000806000806000808a600360008e600160a060020a0316600160a060020a03168152602001908152602001600020600201541415806123d157508a155b156123df57600099506125e2565b600560008c815260200190815260200160002098506000975088600201549650600460008d600160a060020a0316600160a060020a0316815260200190815260200160002060008c8152602001908152602001600020945084600001549550612475670de0b6b3a764000061245d898961295990919063ffffffff16565b81151561246657fe5b8a91900463ffffffff6125f116565b600c8a0154909850634000000063ffffffff909116106125de576006890154600094508493506064906124d590603c90670de0b6b3a7640000906124bf908c63ffffffff61295916565b8115156124c857fe5b049063ffffffff61295916565b8115156124de57fe5b049150600090505b60088110156125be57612532600a8a01826010811061250157fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff16846125f190919063ffffffff16565b6005860154909350640100000000900463ffffffff16600a8a01600883016010811061255a57fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff1614156125b657600a8901816010811061259157fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff1693505b6001016124e6565b60008311156125de576125db8361245d848763ffffffff61295916565b97505b8799505b50505050505050505092915050565b81810182811015610fff57600080fd5b60028101546003820154600091829182612645670de0b6b3a764000061262d848663ffffffff61295916565b81151561263657fe5b8691900463ffffffff6125f116565b600687015490945060649061267190603c90670de0b6b3a7640000906124bf908863ffffffff61295916565b81151561267a57fe5b04905061268d848263ffffffff6125f116565b9695505050505050565b6000806000806000806000806000808a600360008e600160a060020a0316600160a060020a03168152602001908152602001600020600201541415806126db57508a155b156126e957600099506125e2565b600560008c815260200190815260200160002098506000975088600201549650600460008d600160a060020a0316600160a060020a0316815260200190815260200160002060008c8152602001908152602001600020945084600001549550612767670de0b6b3a764000061245d898961295990919063ffffffff16565b60068a01549098506000945084935060649061279a90603c90670de0b6b3a7640000906124bf908c63ffffffff61295916565b8115156127a357fe5b049150600090505b60088110156125be576127c6600a8a01826010811061250157fe5b6005860154909350640100000000900463ffffffff16600a8a0160088301601081106127ee57fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff16141561284a57600a8901816010811061282557fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff1693505b6001016127ab565b600160a060020a03811660009081526003602052604081206002015481906128a49061287f90859061238d565b600160a060020a0385166000908152600360205260409020549063ffffffff6125f116565b600160a060020a038416600090815260036020526040902060010154909150811115610ffb57600160a060020a0383166000908152600360205260409020600101549003610fff565b6002820154600090819061290f84670de0b6b3a764000063ffffffff61295916565b81151561291857fe5b0490506129328185600601546125f190919063ffffffff16565b6006850155600584015461294c908263ffffffff6125f116565b6005850155905092915050565b600082151561296a57506000610fff565b5081810281838281151561297a57fe5b0414610fff57600080fd5b60008282111561299457600080fd5b50900390565b6002820154600683015460009081908190670de0b6b3a7640000906129c5908663ffffffff61295916565b8115156129ce57fe5b04925060646129de846019612959565b8115156129e757fe5b04915060646129f7846005612959565b811515612a0057fe5b0490508560090154811115612ad9576009860154900384811115612ad9576009860154612a33908263ffffffff6125f116565b600987015560008054600154604080517fc671b934000000000000000000000000000000000000000000000000000000008152600160a060020a03928316600482015260248101949094525191169163c671b93491849160448082019260209290919082900301818588803b158015612aab57600080fd5b505af1158015612abf573d6000803e3d6000fd5b50505050506040513d6020811015612ad657600080fd5b50505b8560080154821115612b885785600801548203915084821115612b88576008860154612b0b908363ffffffff6125f116565b600887015560008054604080517f16ff1c760000000000000000000000000000000000000000000000000000000081529051600160a060020a03909216926316ff1c76928692600480820193929182900301818588803b158015612b6e57600080fd5b505af1158015612b82573d6000803e3d6000fd5b50505050505b505050505050565b604080516101c081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081019190915290565b6101006040519081016040528060089060208202803883395091929150505600a165627a7a72305820b6c67ad01a9ffbfe57f423cb641607c78fbf19eb22cf8db028083a48718a6dea0029
Swarm Source
bzzr://b6c67ad01a9ffbfe57f423cb641607c78fbf19eb22cf8db028083a48718a6dea
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $2,224.71 | 0.1924 | $428.04 |
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.