Overview
ETH Balance
11.722207715728709255 ETH
Eth Value
$37,052.28 (@ $3,160.86/ETH)Token Holdings
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 1,345 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer | 15097946 | 736 days ago | IN | 0.001 ETH | 0.00661498 | ||||
Withdraw | 7042326 | 2010 days ago | IN | 0 ETH | 0.00023572 | ||||
Withdraw | 7042309 | 2010 days ago | IN | 0 ETH | 0.00023572 | ||||
Withdraw | 7029429 | 2013 days ago | IN | 0 ETH | 0.000333 | ||||
Re Load Xaddr | 7018303 | 2015 days ago | IN | 0 ETH | 0.00007254 | ||||
Re Load Xaddr | 7018300 | 2015 days ago | IN | 0 ETH | 0.00007254 | ||||
Withdraw | 6972163 | 2023 days ago | IN | 0 ETH | 0.00012823 | ||||
Register Name | 6961644 | 2025 days ago | IN | 0.01 ETH | 0.00387289 | ||||
Withdraw | 6942223 | 2028 days ago | IN | 0 ETH | 0.000333 | ||||
Withdraw | 6877080 | 2039 days ago | IN | 0 ETH | 0.00036813 | ||||
Withdraw | 6874522 | 2039 days ago | IN | 0 ETH | 0.000333 | ||||
Withdraw | 6816153 | 2049 days ago | IN | 0 ETH | 0.000222 | ||||
Withdraw | 6815888 | 2049 days ago | IN | 0 ETH | 0.00036813 | ||||
Withdraw | 6739274 | 2061 days ago | IN | 0 ETH | 0.00030678 | ||||
Transfer | 6731157 | 2063 days ago | IN | 0.1 ETH | 0.00127026 | ||||
Withdraw | 6721944 | 2064 days ago | IN | 0 ETH | 0.00036138 | ||||
Withdraw | 6721829 | 2064 days ago | IN | 0 ETH | 0.00027069 | ||||
Transfer | 6721819 | 2064 days ago | IN | 1 ETH | 0.00837399 | ||||
Transfer | 6714442 | 2066 days ago | IN | 1.12 ETH | 0.00250544 | ||||
Transfer | 6709245 | 2066 days ago | IN | 1.2 ETH | 0.00210408 | ||||
Transfer | 6703354 | 2067 days ago | IN | 1.11 ETH | 0.00250544 | ||||
Transfer | 6697396 | 2068 days ago | IN | 1.1 ETH | 0.00187908 | ||||
Transfer | 6691281 | 2069 days ago | IN | 1.1 ETH | 0.00280544 | ||||
Transfer | 6685486 | 2070 days ago | IN | 1.09 ETH | 0.00210408 | ||||
Transfer | 6679384 | 2071 days ago | IN | 1.1 ETH | 0.00284424 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
6972163 | 2023 days ago | 0.03340148 ETH | ||||
6961644 | 2025 days ago | 0.01 ETH | ||||
6877080 | 2039 days ago | 0.53520311 ETH | ||||
6815888 | 2049 days ago | 0.04573012 ETH | ||||
6739274 | 2061 days ago | 0.09666608 ETH | ||||
6721944 | 2064 days ago | 0.02418788 ETH | ||||
6721829 | 2064 days ago | 10.04827919 ETH | ||||
6721819 | 2064 days ago | 7.18831655 ETH | ||||
6721819 | 2064 days ago | 0.89853956 ETH | ||||
6714442 | 2066 days ago | 0.02236029 ETH | ||||
6709245 | 2066 days ago | 0.02218282 ETH | ||||
6703354 | 2067 days ago | 0.02200677 ETH | ||||
6697396 | 2068 days ago | 0.02183211 ETH | ||||
6691281 | 2069 days ago | 0.02165884 ETH | ||||
6685486 | 2070 days ago | 0.02148695 ETH | ||||
6679384 | 2071 days ago | 0.02131641 ETH | ||||
6679341 | 2071 days ago | 0.02114724 ETH | ||||
6674163 | 2072 days ago | 0.0209794 ETH | ||||
6673909 | 2072 days ago | 0.0208129 ETH | ||||
6670745 | 2073 days ago | 0.02064772 ETH | ||||
6664722 | 2074 days ago | 0.02048385 ETH | ||||
6658687 | 2075 days ago | 0.02032128 ETH | ||||
6652672 | 2076 days ago | 0.02016 ETH | ||||
6651905 | 2076 days ago | 0.79197959 ETH | ||||
6648290 | 2076 days ago | 0.25727194 ETH |
Loading...
Loading
Contract Name:
ReserveBag
Compiler Version
v0.4.24+commit.e67f0147
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-09-27 */ pragma solidity ^0.4.24; // File: contracts/interface/PlayerBookInterface.sol interface PlayerBookInterface { function getPlayerID(address _addr) external returns(uint256); function getPlayerName(uint256 _pID) external view returns(bytes32); function getPlayerLAff(uint256 _pID) external view returns(uint256); function getPlayerAddr(uint256 _pID) external view returns(address); function getNameFee() external view returns(uint256); function registerNameXIDFromDapp(address _addr, bytes32 _name, uint256 _affCode, bool _all) external payable returns(bool, uint256); function registerNameXaddrFromDapp(address _addr, bytes32 _name, address _affCode, bool _all) external payable returns(bool, uint256); function registerNameXnameFromDapp(address _addr, bytes32 _name, bytes32 _affCode, bool _all) external payable returns(bool, uint256); } // File: contracts/interface/TeamPerfitForwarderInterface.sol interface TeamPerfitForwarderInterface { function deposit() external payable returns(bool); function status() external view returns(address, address); } // File: contracts/interface/DRSCoinInterface.sol interface DRSCoinInterface { function mint(address _to, uint256 _amount) external; function profitEth() external payable; } // File: contracts/library/SafeMath.sol /** * @title SafeMath v0.1.9 * @dev Math operations with safety checks that throw on error * change notes: original SafeMath library from OpenZeppelin modified by Inventor * - added sqrt * - added sq * - added pwr * - changed asserts to requires with error log outputs * - removed div, its useless */ library SafeMath { /** * @dev Multiplies two numbers, throws on overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256 c) { if (a == 0) { return 0; } c = a * b; require(c / a == b, "SafeMath mul failed"); return c; } /** * @dev Integer division of two numbers, truncating the quotient. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { assert(b > 0); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a, "SafeMath sub failed"); return a - b; } /** * @dev Adds two numbers, throws on overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256 c) { c = a + b; require(c >= a, "SafeMath add failed"); return c; } /** * @dev gives square root of given x. */ function sqrt(uint256 x) internal pure returns (uint256 y) { uint256 z = ((add(x,1)) / 2); y = x; while (z < y) { y = z; z = ((add((x / z),z)) / 2); } } /** * @dev gives square. multiplies x by x */ function sq(uint256 x) internal pure returns (uint256) { return (mul(x,x)); } /** * @dev x to the power of y */ function pwr(uint256 x, uint256 y) internal pure returns (uint256) { if (x==0) return (0); else if (y==0) return (1); else { uint256 z = x; for (uint256 i=1; i < y; i++) z = mul(z,x); return (z); } } } // File: contracts/library/NameFilter.sol library NameFilter { /** * @dev filters name strings * -converts uppercase to lower case. * -makes sure it does not start/end with a space * -makes sure it does not contain multiple spaces in a row * -cannot be only numbers * -cannot start with 0x * -restricts characters to A-Z, a-z, 0-9, and space. * @return reprocessed string in bytes32 format */ function nameFilter(string _input) internal pure returns(bytes32) { bytes memory _temp = bytes(_input); uint256 _length = _temp.length; //sorry limited to 32 characters require (_length <= 32 && _length > 0, "string must be between 1 and 32 characters"); // make sure it doesnt start with or end with space require(_temp[0] != 0x20 && _temp[_length-1] != 0x20, "string cannot start or end with space"); // make sure first two characters are not 0x if (_temp[0] == 0x30) { require(_temp[1] != 0x78, "string cannot start with 0x"); require(_temp[1] != 0x58, "string cannot start with 0X"); } // create a bool to track if we have a non number character bool _hasNonNumber; // convert & check for (uint256 i = 0; i < _length; i++) { // if its uppercase A-Z if (_temp[i] > 0x40 && _temp[i] < 0x5b) { // convert to lower case a-z _temp[i] = byte(uint(_temp[i]) + 32); // we have a non number if (_hasNonNumber == false) _hasNonNumber = true; } else { require ( // require character is a space _temp[i] == 0x20 || // OR lowercase a-z (_temp[i] > 0x60 && _temp[i] < 0x7b) || // or 0-9 (_temp[i] > 0x2f && _temp[i] < 0x3a), "string contains invalid characters" ); // make sure theres not 2x spaces in a row if (_temp[i] == 0x20) require( _temp[i+1] != 0x20, "string cannot contain consecutive spaces"); // see if we have a character other than a number if (_hasNonNumber == false && (_temp[i] < 0x30 || _temp[i] > 0x39)) _hasNonNumber = true; } } require(_hasNonNumber == true, "string cannot be only numbers"); bytes32 _ret; assembly { _ret := mload(add(_temp, 32)) } return (_ret); } } // File: contracts/library/DRSDatasets.sol // structs ============================================================================== library DRSDatasets { //compressedData key // [24-14][13-3][2][1][0] // 0 - new player (bool) // 1 - joined round (bool) // 2 - new leader (bool) // 3-13 - round end time // 14 - 24 timestamp //compressedIDs key // [77-52][51-26][25-0] // 0-25 - pID // 26-51 - winPID // 52-77 - rID struct EventReturns { uint256 compressedData; uint256 compressedIDs; address winnerAddr; // winner address bytes32 winnerName; // winner name uint256 amountWon; // amount won uint256 newPot; // amount in new pot uint256 genAmount; // amount distributed to gen uint256 potAmount; // amount added to pot address genAddr; uint256 genKeyPrice; } function setNewPlayerFlag(EventReturns _event) internal pure returns(EventReturns) { _event.compressedData = _event.compressedData + 1; return _event; } function setJoinedRoundFlag(EventReturns _event) internal pure returns(EventReturns) { _event.compressedData = _event.compressedData + 10; return _event; } function setNewLeaderFlag(EventReturns _event) internal pure returns(EventReturns) { _event.compressedData = _event.compressedData + 100; return _event; } function setRoundEndTime(EventReturns _event, uint256 roundEndTime) internal pure returns(EventReturns) { _event.compressedData = _event.compressedData + roundEndTime * (10**3); return _event; } function setTimestamp(EventReturns _event, uint256 timestamp) internal pure returns(EventReturns) { _event.compressedData = _event.compressedData + timestamp * (10**14); return _event; } function setPID(EventReturns _event, uint256 _pID) internal pure returns(EventReturns) { _event.compressedIDs = _event.compressedIDs + _pID; return _event; } function setWinPID(EventReturns _event, uint256 _winPID) internal pure returns(EventReturns) { _event.compressedIDs = _event.compressedIDs + (_winPID * (10**26)); return _event; } function setRID(EventReturns _event, uint256 _rID) internal pure returns(EventReturns) { _event.compressedIDs = _event.compressedIDs + (_rID * (10**52)); return _event; } function setWinner(EventReturns _event, address _winnerAddr, bytes32 _winnerName, uint256 _amountWon) internal pure returns(EventReturns) { _event.winnerAddr = _winnerAddr; _event.winnerName = _winnerName; _event.amountWon = _amountWon; return _event; } function setGenInfo(EventReturns _event, address _genAddr, uint256 _genKeyPrice) internal pure returns(EventReturns) { _event.genAddr = _genAddr; _event.genKeyPrice = _genKeyPrice; } function setNewPot(EventReturns _event, uint256 _newPot) internal pure returns(EventReturns) { _event.newPot = _newPot; return _event; } function setGenAmount(EventReturns _event, uint256 _genAmount) internal pure returns(EventReturns) { _event.genAmount = _genAmount; return _event; } function setPotAmount(EventReturns _event, uint256 _potAmount) internal pure returns(EventReturns) { _event.potAmount = _potAmount; return _event; } struct Player { address addr; // player address bytes32 name; // player name uint256 win; // winnings vault uint256 gen; // general vault // uint256 aff; // affiliate vault uint256 lrnd; // last round played // uint256 laff; // last affiliate id used } struct PlayerRound { uint256 eth; // eth player has added to round (used for eth limiter) uint256 keys; // keys } struct Round { uint256 plyr; // pID of player in lead uint256 end; // time ends/ended bool ended; // has round end function been ran uint256 strt; // time round started uint256 keys; // keys uint256 eth; // total eth in uint256 pot; // eth to pot (during round) / final amount paid to winner (after round ends) } struct BuyInfo { address addr; // player address bytes32 name; // player name uint256 pid; // player id uint256 keyPrice; uint256 keyIndex; } } // File: contracts/DRSEvents.sol contract DRSEvents { // fired whenever a player registers a name event onNewName ( uint256 indexed playerID, address indexed playerAddress, bytes32 indexed playerName, bool isNewPlayer, // uint256 affiliateID, // address affiliateAddress, // bytes32 affiliateName, uint256 amountPaid, uint256 timeStamp ); // fired at end of buy or reload event onEndTx ( uint256 compressedData, uint256 compressedIDs, bytes32 playerName, address playerAddress, uint256 ethIn, uint256 keyIndex, address winnerAddr, bytes32 winnerName, uint256 amountWon, uint256 newPot, uint256 genAmount, uint256 potAmount, address genAddr, uint256 genKeyPrice ); // fired whenever theres a withdraw event onWithdraw ( uint256 indexed playerID, address playerAddress, bytes32 playerName, uint256 ethOut, uint256 timeStamp ); // fired whenever a withdraw forces end round to be ran event onWithdrawAndDistribute ( address playerAddress, bytes32 playerName, uint256 ethOut, uint256 compressedData, uint256 compressedIDs, address winnerAddr, bytes32 winnerName, uint256 amountWon, uint256 newPot, uint256 genAmount ); // fired whenever a player tries a buy after round timer // hit zero, and causes end round to be ran. event onBuyAndDistribute ( address playerAddress, bytes32 playerName, uint256 ethIn, uint256 compressedData, uint256 compressedIDs, address winnerAddr, bytes32 winnerName, uint256 amountWon, uint256 newPot, uint256 genAmount ); // fired whenever a player tries a reload after round timer // hit zero, and causes end round to be ran. event onReLoadAndDistribute ( address playerAddress, bytes32 playerName, uint256 compressedData, uint256 compressedIDs, address winnerAddr, bytes32 winnerName, uint256 amountWon, uint256 newPot, uint256 genAmount ); event onBuyKeyFailure ( uint256 roundID, uint256 indexed playerID, uint256 amount, uint256 keyPrice, uint256 timeStamp ); } // File: contracts/ReserveBag.sol contract ReserveBag is DRSEvents { using SafeMath for uint256; using NameFilter for string; using DRSDatasets for DRSDatasets.EventReturns; TeamPerfitForwarderInterface public teamPerfit; PlayerBookInterface public playerBook; DRSCoinInterface public drsCoin; // game settings string constant public name = "Reserve Bag"; string constant public symbol = "RB"; uint256 constant private initKeyPrice = (10**18); uint256 private rndExtra_ = 0; // length of the very first ICO uint256 private rndGap_ = 0; // length of ICO phase, set to 1 year for EOS. uint256 constant private rndMax_ = 24 hours; // max length a round timer can be // uint256 constant private rndMax_ = 5 seconds; // max length a round timer can be uint256 public rID_; // round id number / total rounds that have happened uint256 public keyPrice = initKeyPrice; uint256 public keyBought = 0; address public owner; uint256 public teamPerfitAmuont = 0; uint256 public rewardInternal = 36; // uint256 public potRatio = 8; uint256 public keyPriceIncreaseRatio = 8; uint256 public genRatio = 90; uint256 public drsCoinDividendRatio = 40; uint256 public teamPerfitRatio = 5; uint256 public ethMintDRSCoinRate = 100; bool public activated_ = false; // PLAYER DATA mapping(address => uint256) public pIDxAddr_; // (addr => pID) returns player id by address mapping(bytes32 => uint256) public pIDxName_; // (name => pID) returns player id by name mapping(uint256 => DRSDatasets.Player) public plyr_; // (pID => data) player data mapping(uint256 => mapping(uint256 => DRSDatasets.PlayerRound)) public plyrRnds_; // (pID => rID => data) player round data by player id & round id mapping(uint256 => mapping(bytes32 => bool)) public plyrNames_; // (pID => name => bool) list of names a player owns. (used so you can change your display name amongst any name you own) DRSDatasets.BuyInfo[] buyinfos; uint256 private startIndex; uint256 private endIndex; // ROUND DATA mapping(uint256 => DRSDatasets.Round) public round_; // (rID => data) round data // event Info(uint256 _value); constructor(address _teamPerfit, address _playBook, address _drsCoin) public { owner = msg.sender; teamPerfit = TeamPerfitForwarderInterface(_teamPerfit); playerBook = PlayerBookInterface(_playBook); drsCoin = DRSCoinInterface(_drsCoin); startIndex = 0; endIndex = 0; } modifier onlyOwner { assert(owner == msg.sender); _; } /** * @dev prevents contracts from interacting with ReserveBag */ modifier isHuman() { address _addr = msg.sender; require(_addr == tx.origin); uint256 _codeLength; assembly {_codeLength := extcodesize(_addr)} require(_codeLength == 0, "sorry humans only"); _; } /** * @dev sets boundaries for incoming tx */ modifier isWithinLimits(uint256 _eth) { require(_eth >= 1000000000, "pocket lint: not a valid currency"); require(_eth <= 100000 * (10**18), "no vitalik, no"); _; } function pushBuyInfo(DRSDatasets.BuyInfo info) internal { if(endIndex == buyinfos.length) { buyinfos.push(info); } else if(endIndex < buyinfos.length) { buyinfos[endIndex] = info; } else { // cannot happen revert(); } endIndex = (endIndex + 1) % (rewardInternal + 1); if(endIndex == startIndex) { startIndex = (startIndex + 1) % (rewardInternal + 1); } } /** * @dev emergency buy uses last stored affiliate ID and team snek */ function() isActivated() isHuman() isWithinLimits(msg.value) public payable { // set up our tx event data and determine if player is new or not DRSDatasets.EventReturns memory _eventData_; _eventData_ = determinePID(_eventData_); // fetch player id uint256 _pID = pIDxAddr_[msg.sender]; // buy core buyCore(_pID, _eventData_); } function buyKey() isActivated() isHuman() isWithinLimits(msg.value) public payable { // set up our tx event data and determine if player is new or not DRSDatasets.EventReturns memory _eventData_; _eventData_ = determinePID(_eventData_); // fetch player id uint256 _pID = pIDxAddr_[msg.sender]; // buy core buyCore(_pID, _eventData_); } function reLoadXaddr(uint256 _eth) isActivated() isHuman() isWithinLimits(_eth) public { // fetch player ID uint256 _pID = pIDxAddr_[msg.sender]; require(_pID != 0, "reLoadXaddr can not be called by new players"); // set up our tx event data DRSDatasets.EventReturns memory _eventData_; // reload core reLoadCore(_pID, _eth, _eventData_); } function withdrawTeamPerfit() isActivated() onlyOwner() public { if(teamPerfitAmuont > 0) { uint256 _perfit = teamPerfitAmuont; teamPerfitAmuont = 0; owner.transfer(_perfit); } } function getTeamPerfitAmuont() public view returns(uint256) { return teamPerfitAmuont; } /** * @dev withdraws all of your earnings. * -functionhash- 0x3ccfd60b */ function withdraw() isActivated() isHuman() public { // fetch player ID uint256 _pID = pIDxAddr_[msg.sender]; require(_pID != 0, "withdraw can not be called by new players"); // setup local rID uint256 _rID = rID_; // grab time uint256 _now = now; // setup temp var for player eth uint256 _eth; // check to see if round has ended and no one has run round end yet if(_now > round_[_rID].end && !round_[_rID].ended && round_[_rID].plyr != 0) { // set up our tx event data DRSDatasets.EventReturns memory _eventData_; // end the round (distributes pot) round_[_rID].ended = true; _eventData_ = endRound(_eventData_); // get their earnings _eth = withdrawEarnings(_pID); // withdraw eth if(_eth > 0) { plyr_[_pID].addr.transfer(_eth); } // build event data _eventData_ = _eventData_.setTimestamp(_now); _eventData_ = _eventData_.setPID(_pID); // fire withdraw and distribute event emit DRSEvents.onWithdrawAndDistribute ( msg.sender, plyr_[_pID].name, _eth, _eventData_.compressedData, _eventData_.compressedIDs, _eventData_.winnerAddr, _eventData_.winnerName, _eventData_.amountWon, _eventData_.newPot, _eventData_.genAmount ); } else { // get their earnings _eth = withdrawEarnings(_pID); // withdraw eth if(_eth > 0) { plyr_[_pID].addr.transfer(_eth); } // fire withdraw event emit DRSEvents.onWithdraw(_pID, msg.sender, plyr_[_pID].name, _eth, _now); } } function registerName(string _nameString, bool _all) isHuman() public payable { bytes32 _name = _nameString.nameFilter(); address _addr = msg.sender; uint256 _paid = msg.value; (bool _isNewPlayer, ) = playerBook.registerNameXaddrFromDapp.value(msg.value)(msg.sender, _name, address(0), _all); uint256 _pID = pIDxAddr_[_addr]; emit DRSEvents.onNewName(_pID, _addr, _name, _isNewPlayer, _paid, now); } /** * @dev return the price buyer will pay for next 1 individual key. * -functionhash- 0x018a25e8 * @return price for next key bought (in wei format) */ function getBuyPrice() public view returns(uint256) { return keyPrice; } /** * @dev returns time left. dont spam this, you'll ddos yourself from your node provider * -functionhash- 0xc7e284b8 * @return time left in seconds */ function getTimeLeft() public view returns(uint256) { uint256 _rID = rID_; uint256 _now = now; if(_now < round_[_rID].end) if(_now > round_[_rID].strt + rndGap_) return (round_[_rID].end).sub(_now); else return (round_[_rID].strt + rndGap_).sub(_now); else return 0; } /** * @dev returns player earnings per vaults * -functionhash- 0x63066434 * @return winnings vault * @return general vault */ function getPlayerVaults(uint256 _pID) public view returns(uint256, uint256) { uint256 _rID = rID_; uint256 _now = now; // if round has ended. but round end has not been run (so contract has not distributed winnings) if(_now > round_[_rID].end && !round_[_rID].ended && round_[_rID].plyr != 0) { // if player is winner if(round_[_rID].plyr == _pID) { return ( (plyr_[_pID].win).add(getWin(round_[_rID].pot)), plyr_[_pID].gen ); } } return (plyr_[_pID].win, plyr_[_pID].gen); } /** * @dev returns all current round info needed for front end * -functionhash- 0x747dff42 * @return round id * @return total keys for round * @return time round ends * @return time round started * @return current pot * @return key price * @return current key * @return current player ID in lead * @return current player address in leads * @return current player name in leads */ function getCurrentRoundInfo() public view returns(uint256, uint256, uint256, uint256, uint256, uint256, uint256, address, bytes32) { uint256 _rID = rID_; uint256 _winPID = round_[_rID].plyr; return ( _rID, //0 round_[_rID].end, //1 round_[_rID].strt, //2 round_[_rID].pot, //3 keyPrice, //4 keyBought.add(1), //5 _winPID, //6 plyr_[_winPID].addr, //7 plyr_[_winPID].name //8 ); } /** * @dev returns player info based on address. if no address is given, it will * use msg.sender * -functionhash- 0xee0b5d8b * @param _addr address of the player you want to lookup * @return player ID * @return player name * @return keys owned (current round) * @return winnings vault * @return general vault * @return player round eth */ function getPlayerInfoByAddress(address _addr) public view returns(uint256, bytes32, uint256, uint256, uint256, uint256) { // setup local rID uint256 _rID = rID_; if(_addr == address(0)) { _addr == msg.sender; } uint256 _pID = pIDxAddr_[_addr]; if(_pID == 0) { return (0, "", 0, 0, 0, 0); } return ( _pID, //0 plyr_[_pID].name, //1 plyrRnds_[_pID][_rID].keys, //2 plyr_[_pID].win, //3 plyr_[_pID].gen, //4 plyrRnds_[_pID][_rID].eth //5 ); } /** * @dev logic runs whenever a buy order is executed. determines how to handle * incoming eth depending on if we are in an active round or not */ function buyCore(uint256 _pID, DRSDatasets.EventReturns memory _eventData_) private { uint256 _rID = rID_; // grab time uint256 _now = now; // if round is active if(_now >= round_[_rID].strt.add(rndGap_) && (_now <= round_[_rID].end || round_[_rID].plyr == 0)) { // call core core(_rID, _pID, msg.value, _eventData_); // if round is not active } else { // check to see if end round needs to be ran if(_now > round_[_rID].end && !round_[_rID].ended) { // end the round (distributes pot) & start new round round_[_rID].ended = true; _eventData_ = endRound(_eventData_); // build event data _eventData_ = _eventData_.setTimestamp(_now); _eventData_ = _eventData_.setPID(_pID); // fire buy and distribute event emit DRSEvents.onBuyAndDistribute ( msg.sender, plyr_[_pID].name, msg.value, _eventData_.compressedData, _eventData_.compressedIDs, _eventData_.winnerAddr, _eventData_.winnerName, _eventData_.amountWon, _eventData_.newPot, _eventData_.genAmount ); } // put eth in players vault plyr_[_pID].gen = plyr_[_pID].gen.add(msg.value); } } /** * @dev logic runs whenever a reload order is executed. determines how to handle * incoming eth depending on if we are in an active round or not */ function reLoadCore(uint256 _pID, uint256 _eth, DRSDatasets.EventReturns memory _eventData_) private { uint256 _rID = rID_; uint256 _now = now; // if round is active if(_now > round_[_rID].strt.add(rndGap_) && (_now <= round_[_rID].end || round_[_rID].plyr == 0)) { // get earnings from all vaults and return unused to gen vault // because we use a custom safemath library. this will throw if player // tried to spend more eth than they have. plyr_[_pID].gen = withdrawEarnings(_pID).sub(_eth); // call core core(_rID, _pID, _eth, _eventData_); // if round is not active and end round needs to be ran } else { // check to see if end round needs to be ran if(_now > round_[_rID].end && !round_[_rID].ended) { // end the round (distributes pot) & start new round round_[_rID].ended = true; _eventData_ = endRound(_eventData_); // build event data _eventData_ = _eventData_.setTimestamp(_now); _eventData_ = _eventData_.setPID(_pID); // fire buy and distribute event emit DRSEvents.onReLoadAndDistribute ( msg.sender, plyr_[_pID].name, _eventData_.compressedData, _eventData_.compressedIDs, _eventData_.winnerAddr, _eventData_.winnerName, _eventData_.amountWon, _eventData_.newPot, _eventData_.genAmount ); } } } /** * @dev this is the core logic for any buy/reload that happens while a round is live. */ function core(uint256 _rID, uint256 _pID, uint256 _eth, DRSDatasets.EventReturns memory _eventData_) private { if(_eth < keyPrice) { plyr_[_pID].gen = plyr_[_pID].gen.add(_eth); emit onBuyKeyFailure(_rID, _pID, _eth, keyPrice, now); return; } // if player is new to round if(plyrRnds_[_pID][_rID].keys == 0) { _eventData_ = managePlayer(_pID, _eventData_); } // mint the new key uint256 _keys = 1; uint256 _ethUsed = keyPrice; uint256 _ethLeft = _eth.sub(keyPrice); updateTimer(_rID); // set new leaders if(round_[_rID].plyr != _pID) { round_[_rID].plyr = _pID; } // set the new leader bool to true _eventData_ = _eventData_.setNewLeaderFlag(); // update player plyrRnds_[_pID][_rID].keys = _keys.add(plyrRnds_[_pID][_rID].keys); plyrRnds_[_pID][_rID].eth = _ethUsed.add(plyrRnds_[_pID][_rID].eth); // update round round_[_rID].keys = _keys.add(round_[_rID].keys); round_[_rID].eth = _ethUsed.add(round_[_rID].eth); // distribute eth uint256 _ethExt = distributeExternal(_ethUsed); _eventData_ = distributeInternal(_rID, _ethUsed, _ethExt, _eventData_); bytes32 _name = plyr_[_pID].name; pushBuyInfo(DRSDatasets.BuyInfo(msg.sender, _name, _pID, keyPrice, keyBought)); // key index player bought uint256 _keyIndex = keyBought; keyBought = keyBought.add(1); keyPrice = keyPrice.mul(1000 + keyPriceIncreaseRatio).div(1000); if(_ethLeft > 0) { plyr_[_pID].gen = _ethLeft.add(plyr_[_pID].gen); } // call end tx function to fire end tx event. endTx(_pID, _ethUsed, _keyIndex, _eventData_); } /** * @dev receives name/player info from names contract */ function receivePlayerInfo(uint256 _pID, address _addr, bytes32 _name) external { require(msg.sender == address(playerBook), "your not playerNames contract."); if(pIDxAddr_[_addr] != _pID) pIDxAddr_[_addr] = _pID; if(pIDxName_[_name] != _pID) pIDxName_[_name] = _pID; if(plyr_[_pID].addr != _addr) plyr_[_pID].addr = _addr; if(plyr_[_pID].name != _name) plyr_[_pID].name = _name; if(!plyrNames_[_pID][_name]) plyrNames_[_pID][_name] = true; } /** * @dev receives entire player name list */ function receivePlayerNameList(uint256 _pID, bytes32 _name) external { require(msg.sender == address(playerBook), "your not playerNames contract."); if(!plyrNames_[_pID][_name]) plyrNames_[_pID][_name] = true; } /** * @dev gets existing or registers new pID. use this when a player may be new * @return pID */ function determinePID(DRSDatasets.EventReturns memory _eventData_) private returns(DRSDatasets.EventReturns) { uint256 _pID = pIDxAddr_[msg.sender]; // if player is new to this version of ReserveBag if(_pID == 0) { // grab their player ID, name from player names contract _pID = playerBook.getPlayerID(msg.sender); bytes32 _name = playerBook.getPlayerName(_pID); // set up player account pIDxAddr_[msg.sender] = _pID; plyr_[_pID].addr = msg.sender; if(_name != "") { pIDxName_[_name] = _pID; plyr_[_pID].name = _name; plyrNames_[_pID][_name] = true; } // set the new player bool to true _eventData_ = _eventData_.setNewPlayerFlag(); } return _eventData_; } function managePlayer(uint256 _pID, DRSDatasets.EventReturns memory _eventData_) private returns(DRSDatasets.EventReturns) { // update player's last round played plyr_[_pID].lrnd = rID_; // set the joined round bool to true _eventData_ = _eventData_.setJoinedRoundFlag(); return _eventData_; } function getWin(uint256 _pot) private pure returns(uint256) { return _pot / 2; } function getDRSCoinDividend(uint256 _pot) private view returns(uint256) { return _pot.mul(drsCoinDividendRatio).div(100); } function getTeamPerfit(uint256 _pot) private view returns(uint256) { return _pot.mul(teamPerfitRatio).div(100); } function mintDRSCoin() private { // empty buyinfos if(startIndex == endIndex) { return; } // have one element if((startIndex + 1) % (rewardInternal + 1) == endIndex) { return; } // have more than one element for(uint256 i = startIndex; (i + 1) % (rewardInternal + 1) != endIndex; i = (i + 1) % (rewardInternal + 1)) { drsCoin.mint(buyinfos[i].addr, buyinfos[i].keyPrice.mul(ethMintDRSCoinRate).div(100)); } } /** * @dev ends the round. manages paying out winner/splitting up pot */ function endRound(DRSDatasets.EventReturns memory _eventData_) private returns(DRSDatasets.EventReturns) { uint256 _rID = rID_; uint256 _winPID = round_[_rID].plyr; uint256 _pot = round_[_rID].pot; // eth for last player's prize uint256 _win = getWin(_pot); // eth for drsCoin dividend uint256 _drsCoinDividend = getDRSCoinDividend(_pot); // eth for team perfit uint256 _com = getTeamPerfit(_pot); // eth put to next round's pot uint256 _newPot = _pot.sub(_win).sub(_drsCoinDividend).sub(_com); // deposit team perfit depositTeamPerfit(_com); // pay our winner plyr_[_winPID].win = _win.add(plyr_[_winPID].win); // mint DRSCoin mintDRSCoin(); // distribute eth to drsCoin holders drsCoin.profitEth.value(_drsCoinDividend)(); // prepare event data _eventData_ = _eventData_.setRoundEndTime(round_[_rID].end); _eventData_ = _eventData_.setWinPID(_winPID); _eventData_ = _eventData_.setWinner(plyr_[_winPID].addr, plyr_[_winPID].name, _win); _eventData_ = _eventData_.setNewPot(_newPot); // start next round rID_++; _rID++; round_[_rID].strt = now; round_[_rID].end = now.add(rndMax_).add(rndGap_); keyPrice = initKeyPrice; keyBought = 0; startIndex = 0; endIndex = 0; // add rest eth to next round's pot round_[_rID].pot = _newPot; return _eventData_; } /** * @dev updates round timer based on number of whole keys bought. */ function updateTimer(uint256 _rID) private { round_[_rID].end = rndMax_.add(now); } function depositTeamPerfit(uint256 _eth) private { if(teamPerfit == address(0)) { teamPerfitAmuont = teamPerfitAmuont.add(_eth); return; } bool res = teamPerfit.deposit.value(_eth)(); if(!res) { teamPerfitAmuont = teamPerfitAmuont.add(_eth); return; } } /** * @dev distributes eth based on fees to team */ function distributeExternal(uint256 _eth) private returns(uint256) { // pay 2% out to community rewards uint256 _com = _eth / 50; depositTeamPerfit(_com); return _com; } /** * @dev distributes eth based on fees to gen and pot */ function distributeInternal(uint256 _rID, uint256 _eth, uint256 _ethExt, DRSDatasets.EventReturns memory _eventData_) private returns(DRSDatasets.EventReturns) { uint256 _gen = 0; uint256 _pot = 0; if(keyBought < rewardInternal) { _gen = 0; _pot = _eth.sub(_ethExt); } else { _gen = _eth.mul(genRatio).div(100); _pot = _eth.sub(_ethExt).sub(_gen); DRSDatasets.BuyInfo memory info = buyinfos[startIndex]; uint256 firstPID = info.pid; plyr_[firstPID].gen = _gen.add(plyr_[firstPID].gen); _eventData_.setGenInfo(info.addr, info.keyPrice); } if(_pot > 0) { round_[_rID].pot = _pot.add(round_[_rID].pot); } _eventData_.setGenAmount(_gen.add(_eventData_.genAmount)); _eventData_.setPotAmount(_pot); return _eventData_; } /** * @dev adds up unmasked earnings, & vault earnings, sets them all to 0 * @return earnings in wei format */ function withdrawEarnings(uint256 _pID) private returns(uint256) { uint256 _earnings = (plyr_[_pID].win).add(plyr_[_pID].gen); if(_earnings > 0) { plyr_[_pID].win = 0; plyr_[_pID].gen = 0; } return _earnings; } /** * @dev prepares compression data and fires event for buy or reload tx's */ function endTx(uint256 _pID, uint256 _eth, uint256 _keyIndex, DRSDatasets.EventReturns memory _eventData_) private { _eventData_ = _eventData_.setTimestamp(now); _eventData_ = _eventData_.setPID(_pID); _eventData_ = _eventData_.setRID(rID_); emit DRSEvents.onEndTx ( _eventData_.compressedData, _eventData_.compressedIDs, plyr_[_pID].name, msg.sender, _eth, _keyIndex, _eventData_.winnerAddr, _eventData_.winnerName, _eventData_.amountWon, _eventData_.newPot, _eventData_.genAmount, _eventData_.potAmount, _eventData_.genAddr, _eventData_.genKeyPrice ); } modifier isActivated() { require(activated_, "its not activated yet."); _; } function activate() onlyOwner() public { // can only be ran once require(!activated_, "ReserveBag already activated"); uint256 _now = now; // activate the contract activated_ = true; // lets start first round rID_ = 1; round_[1].strt = _now.add(rndExtra_).sub(rndGap_); round_[1].end = _now.add(rndMax_).add(rndExtra_); } function getActivated() public view returns(bool) { return activated_; } function setTeamPerfitAddress(address _newTeamPerfitAddress) onlyOwner() public { teamPerfit = TeamPerfitForwarderInterface(_newTeamPerfitAddress); } function setPlayerBookAddress(address _newPlayerBookAddress) onlyOwner() public { playerBook = PlayerBookInterface(_newPlayerBookAddress); } function setDRSCoinAddress(address _newDRSCoinAddress) onlyOwner() public { drsCoin = DRSCoinInterface(_newDRSCoinAddress); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"getBuyPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"genRatio","outputs":[{"name":"","type":"uint256"}],"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":"activate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"keyPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"pIDxAddr_","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_pID","type":"uint256"},{"name":"_addr","type":"address"},{"name":"_name","type":"bytes32"}],"name":"receivePlayerInfo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"round_","outputs":[{"name":"plyr","type":"uint256"},{"name":"end","type":"uint256"},{"name":"ended","type":"bool"},{"name":"strt","type":"uint256"},{"name":"keys","type":"uint256"},{"name":"eth","type":"uint256"},{"name":"pot","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"bytes32"}],"name":"plyrNames_","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"pIDxName_","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"playerBook","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdrawTeamPerfit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_eth","type":"uint256"}],"name":"reLoadXaddr","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"drsCoinDividendRatio","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"teamPerfit","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rewardInternal","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_nameString","type":"string"},{"name":"_all","type":"bool"}],"name":"registerName","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"rID_","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_pID","type":"uint256"}],"name":"getPlayerVaults","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"drsCoin","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getCurrentRoundInfo","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"address"},{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getActivated","outputs":[{"name":"","type":"bool"}],"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":"_pID","type":"uint256"},{"name":"_name","type":"bytes32"}],"name":"receivePlayerNameList","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":"","type":"uint256"}],"name":"plyrRnds_","outputs":[{"name":"eth","type":"uint256"},{"name":"keys","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newDRSCoinAddress","type":"address"}],"name":"setDRSCoinAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"teamPerfitAmuont","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getTimeLeft","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newPlayerBookAddress","type":"address"}],"name":"setPlayerBookAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ethMintDRSCoinRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"activated_","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newTeamPerfitAddress","type":"address"}],"name":"setTeamPerfitAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"plyr_","outputs":[{"name":"addr","type":"address"},{"name":"name","type":"bytes32"},{"name":"win","type":"uint256"},{"name":"gen","type":"uint256"},{"name":"lrnd","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"keyBought","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getTeamPerfitAmuont","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"buyKey","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"keyPriceIncreaseRatio","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"}],"name":"getPlayerInfoByAddress","outputs":[{"name":"","type":"uint256"},{"name":"","type":"bytes32"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"teamPerfitRatio","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_teamPerfit","type":"address"},{"name":"_playBook","type":"address"},{"name":"_drsCoin","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"playerID","type":"uint256"},{"indexed":true,"name":"playerAddress","type":"address"},{"indexed":true,"name":"playerName","type":"bytes32"},{"indexed":false,"name":"isNewPlayer","type":"bool"},{"indexed":false,"name":"amountPaid","type":"uint256"},{"indexed":false,"name":"timeStamp","type":"uint256"}],"name":"onNewName","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"compressedData","type":"uint256"},{"indexed":false,"name":"compressedIDs","type":"uint256"},{"indexed":false,"name":"playerName","type":"bytes32"},{"indexed":false,"name":"playerAddress","type":"address"},{"indexed":false,"name":"ethIn","type":"uint256"},{"indexed":false,"name":"keyIndex","type":"uint256"},{"indexed":false,"name":"winnerAddr","type":"address"},{"indexed":false,"name":"winnerName","type":"bytes32"},{"indexed":false,"name":"amountWon","type":"uint256"},{"indexed":false,"name":"newPot","type":"uint256"},{"indexed":false,"name":"genAmount","type":"uint256"},{"indexed":false,"name":"potAmount","type":"uint256"},{"indexed":false,"name":"genAddr","type":"address"},{"indexed":false,"name":"genKeyPrice","type":"uint256"}],"name":"onEndTx","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"playerID","type":"uint256"},{"indexed":false,"name":"playerAddress","type":"address"},{"indexed":false,"name":"playerName","type":"bytes32"},{"indexed":false,"name":"ethOut","type":"uint256"},{"indexed":false,"name":"timeStamp","type":"uint256"}],"name":"onWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"playerAddress","type":"address"},{"indexed":false,"name":"playerName","type":"bytes32"},{"indexed":false,"name":"ethOut","type":"uint256"},{"indexed":false,"name":"compressedData","type":"uint256"},{"indexed":false,"name":"compressedIDs","type":"uint256"},{"indexed":false,"name":"winnerAddr","type":"address"},{"indexed":false,"name":"winnerName","type":"bytes32"},{"indexed":false,"name":"amountWon","type":"uint256"},{"indexed":false,"name":"newPot","type":"uint256"},{"indexed":false,"name":"genAmount","type":"uint256"}],"name":"onWithdrawAndDistribute","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"playerAddress","type":"address"},{"indexed":false,"name":"playerName","type":"bytes32"},{"indexed":false,"name":"ethIn","type":"uint256"},{"indexed":false,"name":"compressedData","type":"uint256"},{"indexed":false,"name":"compressedIDs","type":"uint256"},{"indexed":false,"name":"winnerAddr","type":"address"},{"indexed":false,"name":"winnerName","type":"bytes32"},{"indexed":false,"name":"amountWon","type":"uint256"},{"indexed":false,"name":"newPot","type":"uint256"},{"indexed":false,"name":"genAmount","type":"uint256"}],"name":"onBuyAndDistribute","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"playerAddress","type":"address"},{"indexed":false,"name":"playerName","type":"bytes32"},{"indexed":false,"name":"compressedData","type":"uint256"},{"indexed":false,"name":"compressedIDs","type":"uint256"},{"indexed":false,"name":"winnerAddr","type":"address"},{"indexed":false,"name":"winnerName","type":"bytes32"},{"indexed":false,"name":"amountWon","type":"uint256"},{"indexed":false,"name":"newPot","type":"uint256"},{"indexed":false,"name":"genAmount","type":"uint256"}],"name":"onReLoadAndDistribute","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"roundID","type":"uint256"},{"indexed":true,"name":"playerID","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"keyPrice","type":"uint256"},{"indexed":false,"name":"timeStamp","type":"uint256"}],"name":"onBuyKeyFailure","type":"event"}]
Contract Creation Code
6080604052600060038190556004819055670de0b6b3a764000060065560078190556009556024600a556008600b55605a600c556028600d556005600e556064600f556010805460ff1916905534801561005857600080fd5b50604051606080613b5c83398101604090815281516020830151919092015160088054600160a060020a0319908116331790915560008054600160a060020a03958616908316178155600180549486169483169490941790935560028054949092169316929092179091556017819055601855613a82806100da6000396000f3006080604052600436106101df5763ffffffff60e060020a600035041663018a25e8811461039e57806304272424146103c557806306fdde03146103da5780630f15f4c01461046457806310e569731461047b57806310f01eba146104905780631fda5b45146104b157806324c33d33146104d85780632660316e146105285780632e19ebdc146105575780632fa241fc1461056f5780633ccfd60b146105a057806345a2a3df146105b55780634c38c366146105ca5780634f9a37c9146105e25780634fea1538146105f75780635cf2ff171461060c5780636050024514610621578063624ae5c01461067157806363066434146106865780636a5784ce146106b7578063747dff42146106cc5780638893eb13146107315780638da5cb5b146107465780638f7140ea1461075b57806395d89b4114610776578063a2bccae91461078b578063b2879d45146107a6578063b33f4e9f146107c7578063c7e284b8146107dc578063cd11731d146107f1578063cf86f67414610812578063d53b267914610827578063d543f9d61461083c578063de7874f31461085d578063df2fcc4c146108aa578063e2d31df4146108bf578063e95db6f9146108d4578063edf54dcb146108dc578063ee0b5d8b146108f1578063f5732d6f14610945575b6101e761397f565b60105460009060ff161515610234576040805160e560020a62461bcd0281526020600482015260166024820152600080516020613a17833981519152604482015290519081900360640190fd5b33600032821461024357600080fd5b50803b801561028a576040805160e560020a62461bcd0281526020600482015260116024820152600080516020613a37833981519152604482015290519081900360640190fd5b34633b9aca0081101561030d576040805160e560020a62461bcd02815260206004820152602160248201527f706f636b6574206c696e743a206e6f7420612076616c69642063757272656e6360448201527f7900000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b69152d02c7e14af680000081111561036f576040805160e560020a62461bcd02815260206004820152600e60248201527f6e6f20766974616c696b2c206e6f000000000000000000000000000000000000604482015290519081900360640190fd5b6103788561095a565b3360009081526011602052604090205490955093506103978486610b30565b5050505050005b3480156103aa57600080fd5b506103b3610d10565b60408051918252519081900360200190f35b3480156103d157600080fd5b506103b3610d16565b3480156103e657600080fd5b506103ef610d1c565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610429578181015183820152602001610411565b50505050905090810190601f1680156104565780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561047057600080fd5b50610479610d53565b005b34801561048757600080fd5b506103b3610e83565b34801561049c57600080fd5b506103b3600160a060020a0360043516610e89565b3480156104bd57600080fd5b50610479600435600160a060020a0360243516604435610e9b565b3480156104e457600080fd5b506104f0600435611022565b604080519788526020880196909652931515868601526060860192909252608085015260a084015260c0830152519081900360e00190f35b34801561053457600080fd5b50610543600435602435611063565b604080519115158252519081900360200190f35b34801561056357600080fd5b506103b3600435611083565b34801561057b57600080fd5b50610584611095565b60408051600160a060020a039092168252519081900360200190f35b3480156105ac57600080fd5b506104796110a4565b3480156105c157600080fd5b50610479611488565b3480156105d657600080fd5b5061047960043561153f565b3480156105ee57600080fd5b506103b3611770565b34801561060357600080fd5b50610584611776565b34801561061857600080fd5b506103b3611785565b6040805160206004803580820135601f810184900484028501840190955284845261047994369492936024939284019190819084018382808284375094975050505091351515925061178b915050565b34801561067d57600080fd5b506103b3611910565b34801561069257600080fd5b5061069e600435611916565b6040805192835260208301919091528051918290030190f35b3480156106c357600080fd5b50610584611a04565b3480156106d857600080fd5b506106e1611a13565b60408051998a5260208a0198909852888801969096526060880194909452608087019290925260a086015260c0850152600160a060020a031660e084015261010083015251908190036101200190f35b34801561073d57600080fd5b50610543611aca565b34801561075257600080fd5b50610584611ad3565b34801561076757600080fd5b50610479600435602435611ae2565b34801561078257600080fd5b506103ef611b8f565b34801561079757600080fd5b5061069e600435602435611bc6565b3480156107b257600080fd5b50610479600160a060020a0360043516611bea565b3480156107d357600080fd5b506103b3611c20565b3480156107e857600080fd5b506103b3611c26565b3480156107fd57600080fd5b50610479600160a060020a0360043516611cbd565b34801561081e57600080fd5b506103b3611cf3565b34801561083357600080fd5b50610543611cf9565b34801561084857600080fd5b50610479600160a060020a0360043516611d02565b34801561086957600080fd5b50610875600435611d38565b60408051600160a060020a03909616865260208601949094528484019290925260608401526080830152519081900360a00190f35b3480156108b657600080fd5b506103b3611d71565b3480156108cb57600080fd5b506103b3611d77565b610479611d7d565b3480156108e857600080fd5b506103b3611f3c565b3480156108fd57600080fd5b50610912600160a060020a0360043516611f42565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b34801561095157600080fd5b506103b3611fe2565b61096261397f565b3360009081526011602052604081205490811515610b2857600154604080517fe56556a90000000000000000000000000000000000000000000000000000000081523360048201529051600160a060020a039092169163e56556a9916024808201926020929091908290030181600087803b1580156109e057600080fd5b505af11580156109f4573d6000803e3d6000fd5b505050506040513d6020811015610a0a57600080fd5b5051600154604080517f82e37b2c000000000000000000000000000000000000000000000000000000008152600481018490529051929450600160a060020a03909116916382e37b2c916024808201926020929091908290030181600087803b158015610a7657600080fd5b505af1158015610a8a573d6000803e3d6000fd5b505050506040513d6020811015610aa057600080fd5b5051336000818152601160209081526040808320879055868352601390915290208054600160a060020a031916909117905590508015610b1c57600081815260126020908152604080832085905584835260138252808320600190810185905560158352818420858552909252909120805460ff191690911790555b610b2584611fe8565b93505b509192915050565b6005546004546000828152601960205260409020600301544291610b5a919063ffffffff611ffb16565b8110158015610b90575060008281526019602052604090206001015481111580610b905750600082815260196020526040902054155b15610ba657610ba18285348661205c565b610d0a565b60008281526019602052604090206001015481118015610bd8575060008281526019602052604090206002015460ff16155b15610cd5576000828152601960205260409020600201805460ff19166001179055610c028361234a565b9250610c14838263ffffffff61256416565b9250610c26838563ffffffff61258016565b60008581526013602090815260409182902060010154835182850151848601516060808801516080808a015160a0808c015160c0808e01518d513381529c8d019b909b52348c8e0152958b019890985291890195909552600160a060020a039093169287019290925285015260e084015261010083015261012082015290519194507f5905265be09e3f6f7813c1dce4febfad76d4b3a46288aa344d2531532c3519c991908190036101400190a15b600084815260136020526040902060030154610cf7903463ffffffff611ffb16565b6000858152601360205260409020600301555b50505050565b60065490565b600c5481565b60408051808201909152600b81527f5265736572766520426167000000000000000000000000000000000000000000602082015281565b600854600090600160a060020a03163314610d6a57fe5b60105460ff1615610dc5576040805160e560020a62461bcd02815260206004820152601c60248201527f5265736572766542616720616c72656164792061637469766174656400000000604482015290519081900360640190fd5b506010805460ff191660019081179091556005556004546003544291610e0291610df690849063ffffffff611ffb16565b9063ffffffff61259816565b600160005260196020527ffc941c3961fb6541da34150022cddf959da0fb2353866a6bfbd249c2da09291755600354610e5490610e48836201518063ffffffff611ffb16565b9063ffffffff611ffb16565b600160005260196020527ffc941c3961fb6541da34150022cddf959da0fb2353866a6bfbd249c2da0929155550565b60065481565b60116020526000908152604090205481565b600154600160a060020a03163314610efd576040805160e560020a62461bcd02815260206004820152601e60248201527f796f7572206e6f7420706c617965724e616d657320636f6e74726163742e0000604482015290519081900360640190fd5b600160a060020a0382166000908152601160205260409020548314610f3857600160a060020a03821660009081526011602052604090208390555b6000818152601260205260409020548314610f5f5760008181526012602052604090208390555b600083815260136020526040902054600160a060020a03838116911614610fa85760008381526013602052604090208054600160a060020a031916600160a060020a0384161790555b6000838152601360205260409020600101548114610fd55760008381526013602052604090206001018190555b600083815260156020908152604080832084845290915290205460ff16151561101d5760008381526015602090815260408083208484529091529020805460ff191660011790555b505050565b60196020526000908152604090208054600182015460028301546003840154600485015460058601546006909601549495939460ff90931693919290919087565b601560209081526000928352604080842090915290825290205460ff1681565b60126020526000908152604090205481565b600154600160a060020a031681565b6000806000806110b261397f565b60105460ff1615156110fc576040805160e560020a62461bcd0281526020600482015260166024820152600080516020613a17833981519152604482015290519081900360640190fd5b33600032821461110b57600080fd5b50803b8015611152576040805160e560020a62461bcd0281526020600482015260116024820152600080516020613a37833981519152604482015290519081900360640190fd5b3360009081526011602052604090205496508615156111e1576040805160e560020a62461bcd02815260206004820152602960248201527f77697468647261772063616e206e6f742062652063616c6c6564206279206e6560448201527f7720706c61796572730000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6005546000818152601960205260409020600101549096504295508511801561121c575060008681526019602052604090206002015460ff16155b8015611235575060008681526019602052604090205415155b156113c9576000868152601960205260409020600201805460ff1916600117905561125f8361234a565b925061126a876125f8565b935060008411156112bb57600087815260136020526040808220549051600160a060020a039091169186156108fc02918791818181858888f193505050501580156112b9573d6000803e3d6000fd5b505b6112cb838663ffffffff61256416565b92506112dd838863ffffffff61258016565b92507f9e9c9331834267c84342f2dce38f9ba35eb0bfbcc207c64872e1e74f9706f2a333601360008a8152602001908152602001600020600101548686600001518760200151886040015189606001518a608001518b60a001518c60c00151604051808b600160a060020a0316600160a060020a031681526020018a6000191660001916815260200189815260200188815260200187815260200186600160a060020a0316600160a060020a0316815260200185600019166000191681526020018481526020018381526020018281526020019a505050505050505050505060405180910390a161147f565b6113d2876125f8565b9350600084111561142357600087815260136020526040808220549051600160a060020a039091169186156108fc02918791818181858888f19350505050158015611421573d6000803e3d6000fd5b505b6000878152601360209081526040918290206001015482513381529182015280820186905260608101879052905188917f8f36579a548bc439baa172a6521207464154da77f411e2da3db2f53affe6cc3a919081900360800190a25b50505050505050565b60105460009060ff1615156114d5576040805160e560020a62461bcd0281526020600482015260166024820152600080516020613a17833981519152604482015290519081900360640190fd5b600854600160a060020a031633146114e957fe5b6000600954111561153c5750600980546000918290556008546040519192600160a060020a039091169183156108fc0291849190818181858888f1935050505015801561153a573d6000803e3d6000fd5b505b50565b600061154961397f565b60105460ff161515611593576040805160e560020a62461bcd0281526020600482015260166024820152600080516020613a17833981519152604482015290519081900360640190fd5b3360003282146115a257600080fd5b50803b80156115e9576040805160e560020a62461bcd0281526020600482015260116024820152600080516020613a37833981519152604482015290519081900360640190fd5b84633b9aca0081101561166c576040805160e560020a62461bcd02815260206004820152602160248201527f706f636b6574206c696e743a206e6f7420612076616c69642063757272656e6360448201527f7900000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b69152d02c7e14af68000008111156116ce576040805160e560020a62461bcd02815260206004820152600e60248201527f6e6f20766974616c696b2c206e6f000000000000000000000000000000000000604482015290519081900360640190fd5b33600090815260116020526040902054945084151561175d576040805160e560020a62461bcd02815260206004820152602c60248201527f72654c6f616458616464722063616e206e6f742062652063616c6c656420627960448201527f206e657720706c61796572730000000000000000000000000000000000000000606482015290519081900360840190fd5b61176885878661264d565b505050505050565b600d5481565b600054600160a060020a031681565b600a5481565b600080808080338132821461179f57600080fd5b50803b80156117e6576040805160e560020a62461bcd0281526020600482015260116024820152600080516020613a37833981519152604482015290519081900360640190fd5b6117ef89612813565b600154604080517faa4d490b000000000000000000000000000000000000000000000000000000008152336004820181905260248201859052600060448301528c151560648301528251949b509950349850600160a060020a039092169263aa4d490b928992608480830193919282900301818588803b15801561187257600080fd5b505af1158015611886573d6000803e3d6000fd5b50505050506040513d604081101561189d57600080fd5b5051600160a060020a03871660008181526011602090815260409182902054825185151581529182018a905242828401529151939750909550899286917f9513976e3c07d9fef6952de4c2b3157458f24b4043d491729c9209d8d9c64541919081900360600190a4505050505050505050565b60055481565b60055460008181526019602052604081206001015490918291429081118015611951575060008281526019602052604090206002015460ff16155b801561196a575060008281526019602052604090205415155b156119de576000828152601960205260409020548514156119de576000828152601960205260409020600601546119c2906119a490613026565b6000878152601360205260409020600201549063ffffffff611ffb16565b60008681526013602052604090206003015490945092506119fd565b6000858152601360205260409020600281015460039091015490945092505b5050915091565b600254600160a060020a031681565b60055460008181526019602052604081208054600180830154600384015460069485015494546007549697889788978897889788978897889788979694958795939492939092611a69919063ffffffff611ffb16565b866013600089815260200190815260200160002060000160009054906101000a9004600160a060020a0316601360008a8152602001908152602001600020600101549a509a509a509a509a509a509a509a509a505050909192939495969798565b60105460ff1690565b600854600160a060020a031681565b600154600160a060020a03163314611b44576040805160e560020a62461bcd02815260206004820152601e60248201527f796f7572206e6f7420706c617965724e616d657320636f6e74726163742e0000604482015290519081900360640190fd5b600082815260156020908152604080832084845290915290205460ff16151561153a5760008281526015602090815260408083208484529091529020805460ff191660011790555050565b60408051808201909152600281527f5242000000000000000000000000000000000000000000000000000000000000602082015281565b60146020908152600092835260408084209091529082529020805460019091015482565b600854600160a060020a03163314611bfe57fe5b60028054600160a060020a031916600160a060020a0392909216919091179055565b60095481565b6005546000818152601960205260408120600101549091904290811015611cb35760045460008381526019602052604090206003015401811115611c8d57600082815260196020526040902060010154611c86908263ffffffff61259816565b9250611cb8565b600454600083815260196020526040902060030154611c8691018263ffffffff61259816565b600092505b505090565b600854600160a060020a03163314611cd157fe5b60018054600160a060020a031916600160a060020a0392909216919091179055565b600f5481565b60105460ff1681565b600854600160a060020a03163314611d1657fe5b60008054600160a060020a031916600160a060020a0392909216919091179055565b60136020526000908152604090208054600182015460028301546003840154600490940154600160a060020a0390931693919290919085565b60075481565b60095490565b611d8561397f565b60105460009060ff161515611dd2576040805160e560020a62461bcd0281526020600482015260166024820152600080516020613a17833981519152604482015290519081900360640190fd5b336000328214611de157600080fd5b50803b8015611e28576040805160e560020a62461bcd0281526020600482015260116024820152600080516020613a37833981519152604482015290519081900360640190fd5b34633b9aca00811015611eab576040805160e560020a62461bcd02815260206004820152602160248201527f706f636b6574206c696e743a206e6f7420612076616c69642063757272656e6360448201527f7900000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b69152d02c7e14af6800000811115611f0d576040805160e560020a62461bcd02815260206004820152600e60248201527f6e6f20766974616c696b2c206e6f000000000000000000000000000000000000604482015290519081900360640190fd5b611f168561095a565b336000908152601160205260409020549095509350611f358486610b30565b5050505050565b600b5481565b600080600080600080600080600554915050600160a060020a038816600090815260116020526040902054801515611f8c5760009750879650869550859450849350839250611fd7565b600081815260136020908152604080832060018082015460148552838620888752909452919093209081015460028401546003909401549154949b5091995090975090955093509150865b505091939550919395565b600e5481565b611ff061397f565b508051600101815290565b81810182811015612056576040805160e560020a62461bcd02815260206004820152601360248201527f536166654d61746820616464206661696c656400000000000000000000000000604482015290519081900360640190fd5b92915050565b6000806000806000806006548810156120f557600089815260136020526040902060030154612091908963ffffffff611ffb16565b60008a8152601360209081526040918290206003019290925560065481518d81529283018b905282820152426060830152518a917f085abcef752f58a6914d7bc87d7c4f55a03b723d72e677889be09a9db9395e10919081900360800190a261233e565b60008981526014602090815260408083208d8452909152902060010154151561212557612122898861302d565b96505b60065460019650945061213e888663ffffffff61259816565b93506121498a61305a565b60008a81526019602052604090205489146121705760008a81526019602052604090208990555b61217987613082565b60008a81526014602090815260408083208e84529091529020600101549097506121aa90879063ffffffff611ffb16565b60008a81526014602090815260408083208e845290915290206001810191909155546121d7908690611ffb565b60008a81526014602090815260408083208e845282528083209390935560199052206004015461220e90879063ffffffff611ffb16565b60008b815260196020526040902060048101919091556005015461223990869063ffffffff611ffb16565b60008b81526019602052604090206005015561225485613095565b92506122628a86858a6130a4565b60008a81526013602090815260409182902060010154825160a0810184523381529182018190529181018c90526006546060820152600754608082015291985092506122ad90613253565b506007546122c281600163ffffffff611ffb16565b600755600b546006546122f0916103e8916122e491830163ffffffff61342316565b9063ffffffff61349a16565b60065560008411156123325760008981526013602052604090206003015461231f90859063ffffffff611ffb16565b60008a8152601360205260409020600301555b61233e8986838a6134ba565b50505050505050505050565b61235261397f565b60055460008181526019602052604081208054600690910154909180808061237985613026565b935061238485613620565b925061238f8561363c565b91506123a782610df68581898963ffffffff61259816565b90506123b282613658565b6000868152601360205260409020600201546123d590859063ffffffff611ffb16565b6000878152601360205260409020600201556123ef613721565b600260009054906101000a9004600160a060020a0316600160a060020a0316638b77071c846040518263ffffffff1660e060020a0281526004016000604051808303818588803b15801561244257600080fd5b505af1158015612456573d6000803e3d6000fd5b50505060008981526019602052604090206001015461247e92508b915063ffffffff61387b16565b9850612490898763ffffffff61389316565b60008781526013602052604090208054600190910154919a506124c5918b91600160a060020a0316908763ffffffff6138ba16565b98506124d7898263ffffffff6138e116565b600580546001908101909155979097016000818152601960205260409020426003909101819055600454989a50909761251d91610e48906201518063ffffffff611ffb16565b60008881526019602052604081206001810192909255670de0b6b3a76400006006908155600782905560178290556018919091550181905588975050505050505050919050565b61256c61397f565b508151655af3107a40009190910201815290565b61258861397f565b5060208201805191909101905290565b6000828211156125f2576040805160e560020a62461bcd02815260206004820152601360248201527f536166654d61746820737562206661696c656400000000000000000000000000604482015290519081900360640190fd5b50900390565b600081815260136020526040812060038101546002909101548291612623919063ffffffff611ffb16565b90506000811115612056576000838152601360205260408120600281018290556003015592915050565b6005546004546000828152601960205260409020600301544291612677919063ffffffff611ffb16565b811180156126ac5750600082815260196020526040902060010154811115806126ac5750600082815260196020526040902054155b156126e1576126be84610df6876125f8565b6000868152601360205260409020600301556126dc8286868661205c565b611f35565b60008281526019602052604090206001015481118015612713575060008281526019602052604090206002015460ff16155b15611f35576000828152601960205260409020600201805460ff1916600117905561273d8361234a565b925061274f838263ffffffff61256416565b9250612761838663ffffffff61258016565b60008681526013602090815260409182902060010154835182850151848601516060808801516080808a015160a0808c015160c0808e01518d513381529c8d019b909b528b8d0199909952948a0196909652600160a060020a0390941690880152928601929092529184019190915260e083015261010082015290519194507f603a740c9291cc914e0c8d16b355cdb091aefd5d9bbdf4f95371ce756f5e8a4091908190036101200190a15050505050565b805160009082908280806020841180159061282e5750600084115b15156128aa576040805160e560020a62461bcd02815260206004820152602a60248201527f737472696e67206d757374206265206265747765656e203120616e642033322060448201527f6368617261637465727300000000000000000000000000000000000000000000606482015290519081900360840190fd5b8460008151811015156128b957fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a0214158015612920575084600185038151811015156128f857fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a0214155b151561299c576040805160e560020a62461bcd02815260206004820152602560248201527f737472696e672063616e6e6f74207374617274206f7220656e6420776974682060448201527f7370616365000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b8460008151811015156129ab57fe5b90602001015160f860020a900460f860020a02600160f860020a031916603060f860020a021415612aee578460018151811015156129e557fe5b90602001015160f860020a900460f860020a02600160f860020a031916607860f860020a0214151515612a62576040805160e560020a62461bcd02815260206004820152601b60248201527f737472696e672063616e6e6f7420737461727420776974682030780000000000604482015290519081900360640190fd5b846001815181101515612a7157fe5b90602001015160f860020a900460f860020a02600160f860020a031916605860f860020a0214151515612aee576040805160e560020a62461bcd02815260206004820152601b60248201527f737472696e672063616e6e6f7420737461727420776974682030580000000000604482015290519081900360640190fd5b600091505b83821015612fbe5784517f400000000000000000000000000000000000000000000000000000000000000090869084908110612b2b57fe5b90602001015160f860020a900460f860020a02600160f860020a031916118015612b9f575084517f5b0000000000000000000000000000000000000000000000000000000000000090869084908110612b8057fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b15612c0c578482815181101515612bb257fe5b90602001015160f860020a900460f860020a0260f860020a900460200160f860020a028583815181101515612be357fe5b906020010190600160f860020a031916908160001a905350821515612c0757600192505b612fb3565b8482815181101515612c1a57fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a021480612cea575084517f600000000000000000000000000000000000000000000000000000000000000090869084908110612c7657fe5b90602001015160f860020a900460f860020a02600160f860020a031916118015612cea575084517f7b0000000000000000000000000000000000000000000000000000000000000090869084908110612ccb57fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b80612d94575084517f2f0000000000000000000000000000000000000000000000000000000000000090869084908110612d2057fe5b90602001015160f860020a900460f860020a02600160f860020a031916118015612d94575084517f3a0000000000000000000000000000000000000000000000000000000000000090869084908110612d7557fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b1515612e10576040805160e560020a62461bcd02815260206004820152602260248201527f737472696e6720636f6e7461696e7320696e76616c696420636861726163746560448201527f7273000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b8482815181101515612e1e57fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a021415612efd578482600101815181101515612e5a57fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a0214151515612efd576040805160e560020a62461bcd02815260206004820152602860248201527f737472696e672063616e6e6f7420636f6e7461696e20636f6e7365637574697660448201527f6520737061636573000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b82158015612fa9575084517f300000000000000000000000000000000000000000000000000000000000000090869084908110612f3657fe5b90602001015160f860020a900460f860020a02600160f860020a0319161080612fa9575084517f390000000000000000000000000000000000000000000000000000000000000090869084908110612f8a57fe5b90602001015160f860020a900460f860020a02600160f860020a031916115b15612fb357600192505b600190910190612af3565b600183151514613018576040805160e560020a62461bcd02815260206004820152601d60248201527f737472696e672063616e6e6f74206265206f6e6c79206e756d62657273000000604482015290519081900360640190fd5b505050506020015192915050565b6002900490565b61303561397f565b600554600084815260136020526040902060040155613053826138f2565b9392505050565b61306d620151804263ffffffff611ffb16565b60009182526019602052604090912060010155565b61308a61397f565b508051606401815290565b60006032820461205681613658565b6130ac61397f565b6000806130b76139e8565b600080935060009250600a5460075410156130e757600093506130e0888863ffffffff61259816565b92506131ce565b61310160646122e4600c548b61342390919063ffffffff16565b935061311784610df68a8a63ffffffff61259816565b9250601660175481548110151561312a57fe5b600091825260208083206040805160a08101825260059094029091018054600160a060020a0316845260018101548484015260028101548483018190526003808301546060870152600490920154608086015280865260139093529320909201549093509091506131a290859063ffffffff611ffb16565b600082815260136020526040902060030155815160608301516131cc91889163ffffffff61390516565b505b600083111561320d576000898152601960205260409020600601546131fa90849063ffffffff611ffb16565b60008a8152601960205260409020600601555b6132346132278760c0015186611ffb90919063ffffffff16565b879063ffffffff61392b16565b50613245868463ffffffff61393c16565b509498975050505050505050565b6016546018541415613361576016805460018101825560009190915281517fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428960059092029182018054600160a060020a031916600160a060020a0390921691909117905560208201517fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428a82015560408201517fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428b82015560608201517fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428c82015560808201517fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428d909101556133e3565b60165460185410156133de5780601660185481548110151561337f57fe5b60009182526020918290208351600592909202018054600160a060020a031916600160a060020a0390921691909117815590820151600182015560408201516002820155606082015160038201556080909101516004909101556133e3565b600080fd5b600a546001016018546001018115156133f857fe5b066018819055601754141561153c57600a5460010160175460010181151561341c57fe5b0660175550565b600082151561343457506000612056565b5081810281838281151561344457fe5b0414612056576040805160e560020a62461bcd02815260206004820152601360248201527f536166654d617468206d756c206661696c656400000000000000000000000000604482015290519081900360640190fd5b6000808083116134a657fe5b82848115156134b157fe5b04949350505050565b6134ca814263ffffffff61256416565b90506134dc818563ffffffff61258016565b90506134f36005548261394d90919063ffffffff16565b90507f20ace7b7423dc4f598c42394a4c732bf0d6a6b3a3addf84f4543c42d6468c5628160000151826020015160136000888152602001908152602001600020600101543387878760400151886060015189608001518a60a001518b60c001518c60e001518d61010001518e6101200151604051808f81526020018e81526020018d600019166000191681526020018c600160a060020a0316600160a060020a031681526020018b81526020018a815260200189600160a060020a0316600160a060020a03168152602001886000191660001916815260200187815260200186815260200185815260200184815260200183600160a060020a0316600160a060020a031681526020018281526020019e50505050505050505050505050505060405180910390a150505050565b600061205660646122e4600d548561342390919063ffffffff16565b600061205660646122e4600e548561342390919063ffffffff16565b60008054600160a060020a031615156136865760095461367e908363ffffffff611ffb16565b60095561153a565b6000809054906101000a9004600160a060020a0316600160a060020a031663d0e30db0836040518263ffffffff1660e060020a0281526004016020604051808303818588803b1580156136d857600080fd5b505af11580156136ec573d6000803e3d6000fd5b50505050506040513d602081101561370357600080fd5b5051905080151561153a5760095461367e908363ffffffff611ffb16565b600060185460175414156137345761153c565b601854600a5460010160175460010181151561374c57fe5b0614156137585761153c565b506017545b601854600a546001018260010181151561377357fe5b061461153c5760025460168054600160a060020a03909216916340c10f1991908490811061379d57fe5b6000918252602090912060059091020154600f5460168054600160a060020a03909316926137f6926064926122e492899081106137d657fe5b90600052602060002090600502016003015461342390919063ffffffff16565b6040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050600060405180830381600087803b15801561384857600080fd5b505af115801561385c573d6000803e3d6000fd5b50505050600a546001018160010181151561387357fe5b06905061375d565b61388361397f565b5081516103e89190910201815290565b61389b61397f565b506020820180516a52b7d2dcc80cd2e400000083020190528192915050565b6138c261397f565b50600160a060020a039290921660408401526060830152608082015290565b6138e961397f565b5060a082015290565b6138fa61397f565b508051600a01815290565b61390d61397f565b600160a060020a039092166101008401526101209092019190915290565b61393361397f565b5060c082015290565b61394461397f565b5060e082015290565b61395561397f565b50602082018051751aba4714957d300d0e549208b31adb1000000000000083020190528192915050565b6101406040519081016040528060008152602001600081526020016000600160a060020a0316815260200160008019168152602001600081526020016000815260200160008152602001600081526020016000600160a060020a03168152602001600081525090565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152905600697473206e6f7420616374697661746564207965742e00000000000000000000736f7272792068756d616e73206f6e6c79000000000000000000000000000000a165627a7a7230582048290fc59c3e46a5aaa65a168fa42c5487bc909a96d25432522646122cced421002900000000000000000000000001ceb9dddea083d647fa7b09942474dece629c7e000000000000000000000000567dc1d64bbc362caccfebb7a3bb5b900d22eefe0000000000000000000000006b249a94182219cb1af58a197573dccd9ab94144
Deployed Bytecode
0x6080604052600436106101df5763ffffffff60e060020a600035041663018a25e8811461039e57806304272424146103c557806306fdde03146103da5780630f15f4c01461046457806310e569731461047b57806310f01eba146104905780631fda5b45146104b157806324c33d33146104d85780632660316e146105285780632e19ebdc146105575780632fa241fc1461056f5780633ccfd60b146105a057806345a2a3df146105b55780634c38c366146105ca5780634f9a37c9146105e25780634fea1538146105f75780635cf2ff171461060c5780636050024514610621578063624ae5c01461067157806363066434146106865780636a5784ce146106b7578063747dff42146106cc5780638893eb13146107315780638da5cb5b146107465780638f7140ea1461075b57806395d89b4114610776578063a2bccae91461078b578063b2879d45146107a6578063b33f4e9f146107c7578063c7e284b8146107dc578063cd11731d146107f1578063cf86f67414610812578063d53b267914610827578063d543f9d61461083c578063de7874f31461085d578063df2fcc4c146108aa578063e2d31df4146108bf578063e95db6f9146108d4578063edf54dcb146108dc578063ee0b5d8b146108f1578063f5732d6f14610945575b6101e761397f565b60105460009060ff161515610234576040805160e560020a62461bcd0281526020600482015260166024820152600080516020613a17833981519152604482015290519081900360640190fd5b33600032821461024357600080fd5b50803b801561028a576040805160e560020a62461bcd0281526020600482015260116024820152600080516020613a37833981519152604482015290519081900360640190fd5b34633b9aca0081101561030d576040805160e560020a62461bcd02815260206004820152602160248201527f706f636b6574206c696e743a206e6f7420612076616c69642063757272656e6360448201527f7900000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b69152d02c7e14af680000081111561036f576040805160e560020a62461bcd02815260206004820152600e60248201527f6e6f20766974616c696b2c206e6f000000000000000000000000000000000000604482015290519081900360640190fd5b6103788561095a565b3360009081526011602052604090205490955093506103978486610b30565b5050505050005b3480156103aa57600080fd5b506103b3610d10565b60408051918252519081900360200190f35b3480156103d157600080fd5b506103b3610d16565b3480156103e657600080fd5b506103ef610d1c565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610429578181015183820152602001610411565b50505050905090810190601f1680156104565780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561047057600080fd5b50610479610d53565b005b34801561048757600080fd5b506103b3610e83565b34801561049c57600080fd5b506103b3600160a060020a0360043516610e89565b3480156104bd57600080fd5b50610479600435600160a060020a0360243516604435610e9b565b3480156104e457600080fd5b506104f0600435611022565b604080519788526020880196909652931515868601526060860192909252608085015260a084015260c0830152519081900360e00190f35b34801561053457600080fd5b50610543600435602435611063565b604080519115158252519081900360200190f35b34801561056357600080fd5b506103b3600435611083565b34801561057b57600080fd5b50610584611095565b60408051600160a060020a039092168252519081900360200190f35b3480156105ac57600080fd5b506104796110a4565b3480156105c157600080fd5b50610479611488565b3480156105d657600080fd5b5061047960043561153f565b3480156105ee57600080fd5b506103b3611770565b34801561060357600080fd5b50610584611776565b34801561061857600080fd5b506103b3611785565b6040805160206004803580820135601f810184900484028501840190955284845261047994369492936024939284019190819084018382808284375094975050505091351515925061178b915050565b34801561067d57600080fd5b506103b3611910565b34801561069257600080fd5b5061069e600435611916565b6040805192835260208301919091528051918290030190f35b3480156106c357600080fd5b50610584611a04565b3480156106d857600080fd5b506106e1611a13565b60408051998a5260208a0198909852888801969096526060880194909452608087019290925260a086015260c0850152600160a060020a031660e084015261010083015251908190036101200190f35b34801561073d57600080fd5b50610543611aca565b34801561075257600080fd5b50610584611ad3565b34801561076757600080fd5b50610479600435602435611ae2565b34801561078257600080fd5b506103ef611b8f565b34801561079757600080fd5b5061069e600435602435611bc6565b3480156107b257600080fd5b50610479600160a060020a0360043516611bea565b3480156107d357600080fd5b506103b3611c20565b3480156107e857600080fd5b506103b3611c26565b3480156107fd57600080fd5b50610479600160a060020a0360043516611cbd565b34801561081e57600080fd5b506103b3611cf3565b34801561083357600080fd5b50610543611cf9565b34801561084857600080fd5b50610479600160a060020a0360043516611d02565b34801561086957600080fd5b50610875600435611d38565b60408051600160a060020a03909616865260208601949094528484019290925260608401526080830152519081900360a00190f35b3480156108b657600080fd5b506103b3611d71565b3480156108cb57600080fd5b506103b3611d77565b610479611d7d565b3480156108e857600080fd5b506103b3611f3c565b3480156108fd57600080fd5b50610912600160a060020a0360043516611f42565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b34801561095157600080fd5b506103b3611fe2565b61096261397f565b3360009081526011602052604081205490811515610b2857600154604080517fe56556a90000000000000000000000000000000000000000000000000000000081523360048201529051600160a060020a039092169163e56556a9916024808201926020929091908290030181600087803b1580156109e057600080fd5b505af11580156109f4573d6000803e3d6000fd5b505050506040513d6020811015610a0a57600080fd5b5051600154604080517f82e37b2c000000000000000000000000000000000000000000000000000000008152600481018490529051929450600160a060020a03909116916382e37b2c916024808201926020929091908290030181600087803b158015610a7657600080fd5b505af1158015610a8a573d6000803e3d6000fd5b505050506040513d6020811015610aa057600080fd5b5051336000818152601160209081526040808320879055868352601390915290208054600160a060020a031916909117905590508015610b1c57600081815260126020908152604080832085905584835260138252808320600190810185905560158352818420858552909252909120805460ff191690911790555b610b2584611fe8565b93505b509192915050565b6005546004546000828152601960205260409020600301544291610b5a919063ffffffff611ffb16565b8110158015610b90575060008281526019602052604090206001015481111580610b905750600082815260196020526040902054155b15610ba657610ba18285348661205c565b610d0a565b60008281526019602052604090206001015481118015610bd8575060008281526019602052604090206002015460ff16155b15610cd5576000828152601960205260409020600201805460ff19166001179055610c028361234a565b9250610c14838263ffffffff61256416565b9250610c26838563ffffffff61258016565b60008581526013602090815260409182902060010154835182850151848601516060808801516080808a015160a0808c015160c0808e01518d513381529c8d019b909b52348c8e0152958b019890985291890195909552600160a060020a039093169287019290925285015260e084015261010083015261012082015290519194507f5905265be09e3f6f7813c1dce4febfad76d4b3a46288aa344d2531532c3519c991908190036101400190a15b600084815260136020526040902060030154610cf7903463ffffffff611ffb16565b6000858152601360205260409020600301555b50505050565b60065490565b600c5481565b60408051808201909152600b81527f5265736572766520426167000000000000000000000000000000000000000000602082015281565b600854600090600160a060020a03163314610d6a57fe5b60105460ff1615610dc5576040805160e560020a62461bcd02815260206004820152601c60248201527f5265736572766542616720616c72656164792061637469766174656400000000604482015290519081900360640190fd5b506010805460ff191660019081179091556005556004546003544291610e0291610df690849063ffffffff611ffb16565b9063ffffffff61259816565b600160005260196020527ffc941c3961fb6541da34150022cddf959da0fb2353866a6bfbd249c2da09291755600354610e5490610e48836201518063ffffffff611ffb16565b9063ffffffff611ffb16565b600160005260196020527ffc941c3961fb6541da34150022cddf959da0fb2353866a6bfbd249c2da0929155550565b60065481565b60116020526000908152604090205481565b600154600160a060020a03163314610efd576040805160e560020a62461bcd02815260206004820152601e60248201527f796f7572206e6f7420706c617965724e616d657320636f6e74726163742e0000604482015290519081900360640190fd5b600160a060020a0382166000908152601160205260409020548314610f3857600160a060020a03821660009081526011602052604090208390555b6000818152601260205260409020548314610f5f5760008181526012602052604090208390555b600083815260136020526040902054600160a060020a03838116911614610fa85760008381526013602052604090208054600160a060020a031916600160a060020a0384161790555b6000838152601360205260409020600101548114610fd55760008381526013602052604090206001018190555b600083815260156020908152604080832084845290915290205460ff16151561101d5760008381526015602090815260408083208484529091529020805460ff191660011790555b505050565b60196020526000908152604090208054600182015460028301546003840154600485015460058601546006909601549495939460ff90931693919290919087565b601560209081526000928352604080842090915290825290205460ff1681565b60126020526000908152604090205481565b600154600160a060020a031681565b6000806000806110b261397f565b60105460ff1615156110fc576040805160e560020a62461bcd0281526020600482015260166024820152600080516020613a17833981519152604482015290519081900360640190fd5b33600032821461110b57600080fd5b50803b8015611152576040805160e560020a62461bcd0281526020600482015260116024820152600080516020613a37833981519152604482015290519081900360640190fd5b3360009081526011602052604090205496508615156111e1576040805160e560020a62461bcd02815260206004820152602960248201527f77697468647261772063616e206e6f742062652063616c6c6564206279206e6560448201527f7720706c61796572730000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6005546000818152601960205260409020600101549096504295508511801561121c575060008681526019602052604090206002015460ff16155b8015611235575060008681526019602052604090205415155b156113c9576000868152601960205260409020600201805460ff1916600117905561125f8361234a565b925061126a876125f8565b935060008411156112bb57600087815260136020526040808220549051600160a060020a039091169186156108fc02918791818181858888f193505050501580156112b9573d6000803e3d6000fd5b505b6112cb838663ffffffff61256416565b92506112dd838863ffffffff61258016565b92507f9e9c9331834267c84342f2dce38f9ba35eb0bfbcc207c64872e1e74f9706f2a333601360008a8152602001908152602001600020600101548686600001518760200151886040015189606001518a608001518b60a001518c60c00151604051808b600160a060020a0316600160a060020a031681526020018a6000191660001916815260200189815260200188815260200187815260200186600160a060020a0316600160a060020a0316815260200185600019166000191681526020018481526020018381526020018281526020019a505050505050505050505060405180910390a161147f565b6113d2876125f8565b9350600084111561142357600087815260136020526040808220549051600160a060020a039091169186156108fc02918791818181858888f19350505050158015611421573d6000803e3d6000fd5b505b6000878152601360209081526040918290206001015482513381529182015280820186905260608101879052905188917f8f36579a548bc439baa172a6521207464154da77f411e2da3db2f53affe6cc3a919081900360800190a25b50505050505050565b60105460009060ff1615156114d5576040805160e560020a62461bcd0281526020600482015260166024820152600080516020613a17833981519152604482015290519081900360640190fd5b600854600160a060020a031633146114e957fe5b6000600954111561153c5750600980546000918290556008546040519192600160a060020a039091169183156108fc0291849190818181858888f1935050505015801561153a573d6000803e3d6000fd5b505b50565b600061154961397f565b60105460ff161515611593576040805160e560020a62461bcd0281526020600482015260166024820152600080516020613a17833981519152604482015290519081900360640190fd5b3360003282146115a257600080fd5b50803b80156115e9576040805160e560020a62461bcd0281526020600482015260116024820152600080516020613a37833981519152604482015290519081900360640190fd5b84633b9aca0081101561166c576040805160e560020a62461bcd02815260206004820152602160248201527f706f636b6574206c696e743a206e6f7420612076616c69642063757272656e6360448201527f7900000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b69152d02c7e14af68000008111156116ce576040805160e560020a62461bcd02815260206004820152600e60248201527f6e6f20766974616c696b2c206e6f000000000000000000000000000000000000604482015290519081900360640190fd5b33600090815260116020526040902054945084151561175d576040805160e560020a62461bcd02815260206004820152602c60248201527f72654c6f616458616464722063616e206e6f742062652063616c6c656420627960448201527f206e657720706c61796572730000000000000000000000000000000000000000606482015290519081900360840190fd5b61176885878661264d565b505050505050565b600d5481565b600054600160a060020a031681565b600a5481565b600080808080338132821461179f57600080fd5b50803b80156117e6576040805160e560020a62461bcd0281526020600482015260116024820152600080516020613a37833981519152604482015290519081900360640190fd5b6117ef89612813565b600154604080517faa4d490b000000000000000000000000000000000000000000000000000000008152336004820181905260248201859052600060448301528c151560648301528251949b509950349850600160a060020a039092169263aa4d490b928992608480830193919282900301818588803b15801561187257600080fd5b505af1158015611886573d6000803e3d6000fd5b50505050506040513d604081101561189d57600080fd5b5051600160a060020a03871660008181526011602090815260409182902054825185151581529182018a905242828401529151939750909550899286917f9513976e3c07d9fef6952de4c2b3157458f24b4043d491729c9209d8d9c64541919081900360600190a4505050505050505050565b60055481565b60055460008181526019602052604081206001015490918291429081118015611951575060008281526019602052604090206002015460ff16155b801561196a575060008281526019602052604090205415155b156119de576000828152601960205260409020548514156119de576000828152601960205260409020600601546119c2906119a490613026565b6000878152601360205260409020600201549063ffffffff611ffb16565b60008681526013602052604090206003015490945092506119fd565b6000858152601360205260409020600281015460039091015490945092505b5050915091565b600254600160a060020a031681565b60055460008181526019602052604081208054600180830154600384015460069485015494546007549697889788978897889788978897889788979694958795939492939092611a69919063ffffffff611ffb16565b866013600089815260200190815260200160002060000160009054906101000a9004600160a060020a0316601360008a8152602001908152602001600020600101549a509a509a509a509a509a509a509a509a505050909192939495969798565b60105460ff1690565b600854600160a060020a031681565b600154600160a060020a03163314611b44576040805160e560020a62461bcd02815260206004820152601e60248201527f796f7572206e6f7420706c617965724e616d657320636f6e74726163742e0000604482015290519081900360640190fd5b600082815260156020908152604080832084845290915290205460ff16151561153a5760008281526015602090815260408083208484529091529020805460ff191660011790555050565b60408051808201909152600281527f5242000000000000000000000000000000000000000000000000000000000000602082015281565b60146020908152600092835260408084209091529082529020805460019091015482565b600854600160a060020a03163314611bfe57fe5b60028054600160a060020a031916600160a060020a0392909216919091179055565b60095481565b6005546000818152601960205260408120600101549091904290811015611cb35760045460008381526019602052604090206003015401811115611c8d57600082815260196020526040902060010154611c86908263ffffffff61259816565b9250611cb8565b600454600083815260196020526040902060030154611c8691018263ffffffff61259816565b600092505b505090565b600854600160a060020a03163314611cd157fe5b60018054600160a060020a031916600160a060020a0392909216919091179055565b600f5481565b60105460ff1681565b600854600160a060020a03163314611d1657fe5b60008054600160a060020a031916600160a060020a0392909216919091179055565b60136020526000908152604090208054600182015460028301546003840154600490940154600160a060020a0390931693919290919085565b60075481565b60095490565b611d8561397f565b60105460009060ff161515611dd2576040805160e560020a62461bcd0281526020600482015260166024820152600080516020613a17833981519152604482015290519081900360640190fd5b336000328214611de157600080fd5b50803b8015611e28576040805160e560020a62461bcd0281526020600482015260116024820152600080516020613a37833981519152604482015290519081900360640190fd5b34633b9aca00811015611eab576040805160e560020a62461bcd02815260206004820152602160248201527f706f636b6574206c696e743a206e6f7420612076616c69642063757272656e6360448201527f7900000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b69152d02c7e14af6800000811115611f0d576040805160e560020a62461bcd02815260206004820152600e60248201527f6e6f20766974616c696b2c206e6f000000000000000000000000000000000000604482015290519081900360640190fd5b611f168561095a565b336000908152601160205260409020549095509350611f358486610b30565b5050505050565b600b5481565b600080600080600080600080600554915050600160a060020a038816600090815260116020526040902054801515611f8c5760009750879650869550859450849350839250611fd7565b600081815260136020908152604080832060018082015460148552838620888752909452919093209081015460028401546003909401549154949b5091995090975090955093509150865b505091939550919395565b600e5481565b611ff061397f565b508051600101815290565b81810182811015612056576040805160e560020a62461bcd02815260206004820152601360248201527f536166654d61746820616464206661696c656400000000000000000000000000604482015290519081900360640190fd5b92915050565b6000806000806000806006548810156120f557600089815260136020526040902060030154612091908963ffffffff611ffb16565b60008a8152601360209081526040918290206003019290925560065481518d81529283018b905282820152426060830152518a917f085abcef752f58a6914d7bc87d7c4f55a03b723d72e677889be09a9db9395e10919081900360800190a261233e565b60008981526014602090815260408083208d8452909152902060010154151561212557612122898861302d565b96505b60065460019650945061213e888663ffffffff61259816565b93506121498a61305a565b60008a81526019602052604090205489146121705760008a81526019602052604090208990555b61217987613082565b60008a81526014602090815260408083208e84529091529020600101549097506121aa90879063ffffffff611ffb16565b60008a81526014602090815260408083208e845290915290206001810191909155546121d7908690611ffb565b60008a81526014602090815260408083208e845282528083209390935560199052206004015461220e90879063ffffffff611ffb16565b60008b815260196020526040902060048101919091556005015461223990869063ffffffff611ffb16565b60008b81526019602052604090206005015561225485613095565b92506122628a86858a6130a4565b60008a81526013602090815260409182902060010154825160a0810184523381529182018190529181018c90526006546060820152600754608082015291985092506122ad90613253565b506007546122c281600163ffffffff611ffb16565b600755600b546006546122f0916103e8916122e491830163ffffffff61342316565b9063ffffffff61349a16565b60065560008411156123325760008981526013602052604090206003015461231f90859063ffffffff611ffb16565b60008a8152601360205260409020600301555b61233e8986838a6134ba565b50505050505050505050565b61235261397f565b60055460008181526019602052604081208054600690910154909180808061237985613026565b935061238485613620565b925061238f8561363c565b91506123a782610df68581898963ffffffff61259816565b90506123b282613658565b6000868152601360205260409020600201546123d590859063ffffffff611ffb16565b6000878152601360205260409020600201556123ef613721565b600260009054906101000a9004600160a060020a0316600160a060020a0316638b77071c846040518263ffffffff1660e060020a0281526004016000604051808303818588803b15801561244257600080fd5b505af1158015612456573d6000803e3d6000fd5b50505060008981526019602052604090206001015461247e92508b915063ffffffff61387b16565b9850612490898763ffffffff61389316565b60008781526013602052604090208054600190910154919a506124c5918b91600160a060020a0316908763ffffffff6138ba16565b98506124d7898263ffffffff6138e116565b600580546001908101909155979097016000818152601960205260409020426003909101819055600454989a50909761251d91610e48906201518063ffffffff611ffb16565b60008881526019602052604081206001810192909255670de0b6b3a76400006006908155600782905560178290556018919091550181905588975050505050505050919050565b61256c61397f565b508151655af3107a40009190910201815290565b61258861397f565b5060208201805191909101905290565b6000828211156125f2576040805160e560020a62461bcd02815260206004820152601360248201527f536166654d61746820737562206661696c656400000000000000000000000000604482015290519081900360640190fd5b50900390565b600081815260136020526040812060038101546002909101548291612623919063ffffffff611ffb16565b90506000811115612056576000838152601360205260408120600281018290556003015592915050565b6005546004546000828152601960205260409020600301544291612677919063ffffffff611ffb16565b811180156126ac5750600082815260196020526040902060010154811115806126ac5750600082815260196020526040902054155b156126e1576126be84610df6876125f8565b6000868152601360205260409020600301556126dc8286868661205c565b611f35565b60008281526019602052604090206001015481118015612713575060008281526019602052604090206002015460ff16155b15611f35576000828152601960205260409020600201805460ff1916600117905561273d8361234a565b925061274f838263ffffffff61256416565b9250612761838663ffffffff61258016565b60008681526013602090815260409182902060010154835182850151848601516060808801516080808a015160a0808c015160c0808e01518d513381529c8d019b909b528b8d0199909952948a0196909652600160a060020a0390941690880152928601929092529184019190915260e083015261010082015290519194507f603a740c9291cc914e0c8d16b355cdb091aefd5d9bbdf4f95371ce756f5e8a4091908190036101200190a15050505050565b805160009082908280806020841180159061282e5750600084115b15156128aa576040805160e560020a62461bcd02815260206004820152602a60248201527f737472696e67206d757374206265206265747765656e203120616e642033322060448201527f6368617261637465727300000000000000000000000000000000000000000000606482015290519081900360840190fd5b8460008151811015156128b957fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a0214158015612920575084600185038151811015156128f857fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a0214155b151561299c576040805160e560020a62461bcd02815260206004820152602560248201527f737472696e672063616e6e6f74207374617274206f7220656e6420776974682060448201527f7370616365000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b8460008151811015156129ab57fe5b90602001015160f860020a900460f860020a02600160f860020a031916603060f860020a021415612aee578460018151811015156129e557fe5b90602001015160f860020a900460f860020a02600160f860020a031916607860f860020a0214151515612a62576040805160e560020a62461bcd02815260206004820152601b60248201527f737472696e672063616e6e6f7420737461727420776974682030780000000000604482015290519081900360640190fd5b846001815181101515612a7157fe5b90602001015160f860020a900460f860020a02600160f860020a031916605860f860020a0214151515612aee576040805160e560020a62461bcd02815260206004820152601b60248201527f737472696e672063616e6e6f7420737461727420776974682030580000000000604482015290519081900360640190fd5b600091505b83821015612fbe5784517f400000000000000000000000000000000000000000000000000000000000000090869084908110612b2b57fe5b90602001015160f860020a900460f860020a02600160f860020a031916118015612b9f575084517f5b0000000000000000000000000000000000000000000000000000000000000090869084908110612b8057fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b15612c0c578482815181101515612bb257fe5b90602001015160f860020a900460f860020a0260f860020a900460200160f860020a028583815181101515612be357fe5b906020010190600160f860020a031916908160001a905350821515612c0757600192505b612fb3565b8482815181101515612c1a57fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a021480612cea575084517f600000000000000000000000000000000000000000000000000000000000000090869084908110612c7657fe5b90602001015160f860020a900460f860020a02600160f860020a031916118015612cea575084517f7b0000000000000000000000000000000000000000000000000000000000000090869084908110612ccb57fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b80612d94575084517f2f0000000000000000000000000000000000000000000000000000000000000090869084908110612d2057fe5b90602001015160f860020a900460f860020a02600160f860020a031916118015612d94575084517f3a0000000000000000000000000000000000000000000000000000000000000090869084908110612d7557fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b1515612e10576040805160e560020a62461bcd02815260206004820152602260248201527f737472696e6720636f6e7461696e7320696e76616c696420636861726163746560448201527f7273000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b8482815181101515612e1e57fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a021415612efd578482600101815181101515612e5a57fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a0214151515612efd576040805160e560020a62461bcd02815260206004820152602860248201527f737472696e672063616e6e6f7420636f6e7461696e20636f6e7365637574697660448201527f6520737061636573000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b82158015612fa9575084517f300000000000000000000000000000000000000000000000000000000000000090869084908110612f3657fe5b90602001015160f860020a900460f860020a02600160f860020a0319161080612fa9575084517f390000000000000000000000000000000000000000000000000000000000000090869084908110612f8a57fe5b90602001015160f860020a900460f860020a02600160f860020a031916115b15612fb357600192505b600190910190612af3565b600183151514613018576040805160e560020a62461bcd02815260206004820152601d60248201527f737472696e672063616e6e6f74206265206f6e6c79206e756d62657273000000604482015290519081900360640190fd5b505050506020015192915050565b6002900490565b61303561397f565b600554600084815260136020526040902060040155613053826138f2565b9392505050565b61306d620151804263ffffffff611ffb16565b60009182526019602052604090912060010155565b61308a61397f565b508051606401815290565b60006032820461205681613658565b6130ac61397f565b6000806130b76139e8565b600080935060009250600a5460075410156130e757600093506130e0888863ffffffff61259816565b92506131ce565b61310160646122e4600c548b61342390919063ffffffff16565b935061311784610df68a8a63ffffffff61259816565b9250601660175481548110151561312a57fe5b600091825260208083206040805160a08101825260059094029091018054600160a060020a0316845260018101548484015260028101548483018190526003808301546060870152600490920154608086015280865260139093529320909201549093509091506131a290859063ffffffff611ffb16565b600082815260136020526040902060030155815160608301516131cc91889163ffffffff61390516565b505b600083111561320d576000898152601960205260409020600601546131fa90849063ffffffff611ffb16565b60008a8152601960205260409020600601555b6132346132278760c0015186611ffb90919063ffffffff16565b879063ffffffff61392b16565b50613245868463ffffffff61393c16565b509498975050505050505050565b6016546018541415613361576016805460018101825560009190915281517fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428960059092029182018054600160a060020a031916600160a060020a0390921691909117905560208201517fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428a82015560408201517fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428b82015560608201517fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428c82015560808201517fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428d909101556133e3565b60165460185410156133de5780601660185481548110151561337f57fe5b60009182526020918290208351600592909202018054600160a060020a031916600160a060020a0390921691909117815590820151600182015560408201516002820155606082015160038201556080909101516004909101556133e3565b600080fd5b600a546001016018546001018115156133f857fe5b066018819055601754141561153c57600a5460010160175460010181151561341c57fe5b0660175550565b600082151561343457506000612056565b5081810281838281151561344457fe5b0414612056576040805160e560020a62461bcd02815260206004820152601360248201527f536166654d617468206d756c206661696c656400000000000000000000000000604482015290519081900360640190fd5b6000808083116134a657fe5b82848115156134b157fe5b04949350505050565b6134ca814263ffffffff61256416565b90506134dc818563ffffffff61258016565b90506134f36005548261394d90919063ffffffff16565b90507f20ace7b7423dc4f598c42394a4c732bf0d6a6b3a3addf84f4543c42d6468c5628160000151826020015160136000888152602001908152602001600020600101543387878760400151886060015189608001518a60a001518b60c001518c60e001518d61010001518e6101200151604051808f81526020018e81526020018d600019166000191681526020018c600160a060020a0316600160a060020a031681526020018b81526020018a815260200189600160a060020a0316600160a060020a03168152602001886000191660001916815260200187815260200186815260200185815260200184815260200183600160a060020a0316600160a060020a031681526020018281526020019e50505050505050505050505050505060405180910390a150505050565b600061205660646122e4600d548561342390919063ffffffff16565b600061205660646122e4600e548561342390919063ffffffff16565b60008054600160a060020a031615156136865760095461367e908363ffffffff611ffb16565b60095561153a565b6000809054906101000a9004600160a060020a0316600160a060020a031663d0e30db0836040518263ffffffff1660e060020a0281526004016020604051808303818588803b1580156136d857600080fd5b505af11580156136ec573d6000803e3d6000fd5b50505050506040513d602081101561370357600080fd5b5051905080151561153a5760095461367e908363ffffffff611ffb16565b600060185460175414156137345761153c565b601854600a5460010160175460010181151561374c57fe5b0614156137585761153c565b506017545b601854600a546001018260010181151561377357fe5b061461153c5760025460168054600160a060020a03909216916340c10f1991908490811061379d57fe5b6000918252602090912060059091020154600f5460168054600160a060020a03909316926137f6926064926122e492899081106137d657fe5b90600052602060002090600502016003015461342390919063ffffffff16565b6040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050600060405180830381600087803b15801561384857600080fd5b505af115801561385c573d6000803e3d6000fd5b50505050600a546001018160010181151561387357fe5b06905061375d565b61388361397f565b5081516103e89190910201815290565b61389b61397f565b506020820180516a52b7d2dcc80cd2e400000083020190528192915050565b6138c261397f565b50600160a060020a039290921660408401526060830152608082015290565b6138e961397f565b5060a082015290565b6138fa61397f565b508051600a01815290565b61390d61397f565b600160a060020a039092166101008401526101209092019190915290565b61393361397f565b5060c082015290565b61394461397f565b5060e082015290565b61395561397f565b50602082018051751aba4714957d300d0e549208b31adb1000000000000083020190528192915050565b6101406040519081016040528060008152602001600081526020016000600160a060020a0316815260200160008019168152602001600081526020016000815260200160008152602001600081526020016000600160a060020a03168152602001600081525090565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152905600697473206e6f7420616374697661746564207965742e00000000000000000000736f7272792068756d616e73206f6e6c79000000000000000000000000000000a165627a7a7230582048290fc59c3e46a5aaa65a168fa42c5487bc909a96d25432522646122cced4210029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000001ceb9dddea083d647fa7b09942474dece629c7e000000000000000000000000567dc1d64bbc362caccfebb7a3bb5b900d22eefe0000000000000000000000006b249a94182219cb1af58a197573dccd9ab94144
-----Decoded View---------------
Arg [0] : _teamPerfit (address): 0x01CEb9DdDea083D647Fa7B09942474DECe629c7e
Arg [1] : _playBook (address): 0x567dc1d64Bbc362CACCFEbb7a3bb5B900D22EeFE
Arg [2] : _drsCoin (address): 0x6b249a94182219cb1aF58A197573DccD9aB94144
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 00000000000000000000000001ceb9dddea083d647fa7b09942474dece629c7e
Arg [1] : 000000000000000000000000567dc1d64bbc362caccfebb7a3bb5b900d22eefe
Arg [2] : 0000000000000000000000006b249a94182219cb1af58a197573dccd9ab94144
Swarm Source
bzzr://48290fc59c3e46a5aaa65a168fa42c5487bc909a96d25432522646122cced421
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | Ether (ETH) | 100.00% | $3,160.86 | 11.7222 | $37,052.28 |
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.