Source Code
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 38 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Withdraw | 24533364 | 17 days ago | IN | 0 ETH | 0.00000375 | ||||
| Withdraw | 8172470 | 2431 days ago | IN | 0 ETH | 0.00010482 | ||||
| Buy Xaddr | 8172428 | 2431 days ago | IN | 16.7971431 ETH | 0.00121598 | ||||
| Buy Xaddr | 8172418 | 2431 days ago | IN | 0.01119963 ETH | 0.00204762 | ||||
| Buy Xaddr | 7646958 | 2513 days ago | IN | 0.0111937 ETH | 0.00307143 | ||||
| Buy Xaddr | 7560129 | 2527 days ago | IN | 0.01117594 ETH | 0.00153571 | ||||
| Buy Xaddr | 7516704 | 2534 days ago | IN | 0.01117594 ETH | 0.00038813 | ||||
| Buy Xaddr | 7516677 | 2534 days ago | IN | 0.01117594 ETH | 0.00038813 | ||||
| Buy Xaddr | 7516669 | 2534 days ago | IN | 0.01117003 ETH | 0.00204762 | ||||
| Buy Xaddr | 7492182 | 2537 days ago | IN | 0.0111523 ETH | 0.00511906 | ||||
| Buy Xaddr | 7473584 | 2540 days ago | IN | 0.0111523 ETH | 0.00030347 | ||||
| Buy Xaddr | 7473090 | 2540 days ago | IN | 0.0111523 ETH | 0.00035417 | ||||
| Buy Xname | 7473084 | 2540 days ago | IN | 0.0001 ETH | 0.00005729 | ||||
| Buy Xaddr | 7473066 | 2540 days ago | IN | 0.01114642 ETH | 0.00011019 | ||||
| Buy Xaddr | 7473065 | 2540 days ago | IN | 0.01114642 ETH | 0.00011019 | ||||
| Buy Xaddr | 7473065 | 2540 days ago | IN | 0.01114642 ETH | 0.00225238 | ||||
| Buy Xaddr | 7417753 | 2549 days ago | IN | 0.01109351 ETH | 0.00200981 | ||||
| Buy Xaddr | 7416906 | 2549 days ago | IN | 0.02218702 ETH | 0.00038813 | ||||
| Buy Xaddr | 7416842 | 2549 days ago | IN | 0.01109351 ETH | 0.00038813 | ||||
| Buy Xaddr | 7416832 | 2549 days ago | IN | 0.01109351 ETH | 0.00038813 | ||||
| Buy Xaddr | 7416821 | 2549 days ago | IN | 0.01109351 ETH | 0.00038813 | ||||
| Buy Xaddr | 7416816 | 2549 days ago | IN | 0.01109351 ETH | 0.0002911 | ||||
| Buy Xaddr | 7416810 | 2549 days ago | IN | 0.02218702 ETH | 0.00038813 | ||||
| Buy Xaddr | 7416801 | 2549 days ago | IN | 0.01108763 ETH | 0.00204762 | ||||
| Buy Xaddr | 7414569 | 2550 days ago | IN | 0.01108176 ETH | 0.00204762 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| - | 8172470 | 2431 days ago | 13.44667893 ETH | ||||
| - | 8172428 | 2431 days ago | 12.04597816 ETH | ||||
| - | 8172428 | 2431 days ago | 0.83985715 ETH | ||||
| - | 8172418 | 2431 days ago | 0.00055998 ETH | ||||
| - | 8172418 | 2431 days ago | 0.00358198 ETH | ||||
| - | 7646958 | 2513 days ago | 0.00055968 ETH | ||||
| - | 7646958 | 2513 days ago | 0.0035763 ETH | ||||
| - | 7560129 | 2527 days ago | 0.00055879 ETH | ||||
| - | 7560129 | 2527 days ago | 0.01072701 ETH | ||||
| - | 7516704 | 2534 days ago | 0.00055879 ETH | ||||
| - | 7516677 | 2534 days ago | 0.00055879 ETH | ||||
| - | 7516669 | 2534 days ago | 0.0005585 ETH | ||||
| - | 7516669 | 2534 days ago | 0.00356873 ETH | ||||
| - | 7492182 | 2537 days ago | 0.00055761 ETH | ||||
| - | 7492182 | 2537 days ago | 0.01070432 ETH | ||||
| - | 7473584 | 2540 days ago | 0.00055761 ETH | ||||
| - | 7473090 | 2540 days ago | 0.00055761 ETH | ||||
| - | 7473065 | 2540 days ago | 0.00055732 ETH | ||||
| - | 7473065 | 2540 days ago | 0.00354992 ETH | ||||
| - | 7417753 | 2549 days ago | 0.00055467 ETH | ||||
| - | 7417753 | 2549 days ago | 0.03194743 ETH | ||||
| - | 7416906 | 2549 days ago | 0.00110935 ETH | ||||
| - | 7416842 | 2549 days ago | 0.00055467 ETH | ||||
| - | 7416832 | 2549 days ago | 0.00055467 ETH | ||||
| - | 7416821 | 2549 days ago | 0.00055467 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
LuckyCoin
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 2019-03-04
*/
pragma solidity ^0.4.24;
contract Coinevents {
// 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
);
event onBuy (
address playerAddress,
uint256 begin,
uint256 end,
uint256 round,
bytes32 playerName
);
// fired whenever theres a withdraw
event onWithdraw
(
uint256 indexed playerID,
address playerAddress,
bytes32 playerName,
uint256 ethOut,
uint256 timeStamp
);
// settle the contract
event onSettle(
uint256 rid,
uint256 ticketsout,
address winner,
uint256 luckynum,
uint256 jackpot
);
// settle the contract
event onActivate(
uint256 rid
);
}
contract LuckyCoin is Coinevents{
using SafeMath for *;
using NameFilter for string;
//**************** game settings ****************
string constant public name = "LuckyCoin Super";
string constant public symbol = "LuckyCoin";
uint256 constant private rndGap_ = 2 hours; // round timer starts at this
//uint256 constant private rndGap_ = 5 minutes;
uint256 ticketstotal_ = 1500; // ticket total amonuts
uint256 grouptotal_ = 250; // ticketstotal_ divend to six parts
//uint ticketprice_ = 0.005 ether; // current ticket init price
uint256 jackpot = 10 ether;
uint256 public rID_= 0; // current round id number / total rounds that have happened
uint256 _headtickets = 500; // head of 500, distributes valuet
bool public activated_ = false;
//address community_addr = 0x2b5006d3dce09dafec33bfd08ebec9327f1612d8; // community addr
//address prize_addr = 0x2b5006d3dce09dafec33bfd08ebec9327f1612d8; // prize addr
address community_addr = 0x180A14aF38384dc15Ce96cbcabCfC8F47794AC3E; // community addr
address prize_addr = 0x180A14aF38384dc15Ce96cbcabCfC8F47794AC3E; // prize addr
address activate_addr2 = 0x180A14aF38384dc15Ce96cbcabCfC8F47794AC3E; // activate addr2
address activate_addr1 = 0x6C7DFE3c255a098Ea031f334436DD50345cFC737; // activate addr1
PlayerBookInterface constant private PlayerBook = PlayerBookInterface(0xc87a693dbba31aefb9457683b7d245dad756db88);
//**************** ROUND DATA ****************
mapping (uint256 => Coindatasets.Round) public round_; // (rID => data) round data
//**************** PLAYER DATA ****************
event LogbuyNums(address addr, uint begin, uint end);
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 => Coindatasets.Player) public plyr_; // (pID => data) player data
mapping (uint256 => mapping (uint256 => Coindatasets.PlayerRounds)) 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)
//**************** ORDER DATA ****************
mapping (uint256=>mapping(uint=> mapping(uint=>uint))) orders; // (rid=>pid=group=>ticketnum)
constructor() public{
//round_[rID_].jackpot = 10 ether;
}
// callback function
function ()
payable
{
// fllows addresses only can activate the game
if (
msg.sender == activate_addr2 || msg.sender == activate_addr1
){
activate();
}else if(msg.value > 0){ //bet order
// fetch player id
address _addr = msg.sender;
uint256 _codeLength;
require(tx.origin == msg.sender, "sorry humans only origin");
assembly {_codeLength := extcodesize(_addr)}
require(_codeLength == 0, "sorry humans only=================");
determinePID();
uint256 _pID = pIDxAddr_[msg.sender];
uint256 _ticketprice = getBuyPrice();
require(_ticketprice > 0);
uint256 _tickets = msg.value / _ticketprice;
require(_tickets > 0);
// buy tickets
require(activated_ == true, "its not ready yet. contact administrators");
require(_tickets <= ticketstotal_ - round_[rID_].tickets);
buyTicket(_pID, plyr_[_pID].laff, _tickets);
}
}
// purchase value limit
modifier isWithinLimits(uint256 _eth, uint256 _tickets) {
uint256 _ticketprice = getBuyPrice();
require(_eth >= _tickets * _ticketprice);
require(_eth <= 100000000000000000000000);
_;
}
modifier isTicketsLimits(uint256 _tickets){
require(_tickets <= ticketstotal_ - round_[rID_].tickets);
_;
}
modifier isActivated(){
require(activated_, "not activate");
_;
}
modifier isHuman() {
address _addr = msg.sender;
uint256 _codeLength;
require(tx.origin == msg.sender, "sorry humans only origin");
assembly {_codeLength := extcodesize(_addr)}
require(_codeLength == 0, "sorry humans only=================");
_;
}
function buyXid(uint _tickets, uint256 _affCode)
isHuman()
isWithinLimits(msg.value, _tickets)
isTicketsLimits(_tickets)
isActivated
public
payable
{
// set up our tx event data and determine if player is new or not
//Coindatasets.EventReturns memory _eventData_ = determinePID(_eventData_);
determinePID();
// fetch player id
uint256 _pID = pIDxAddr_[msg.sender];
// manage affiliate residuals
// if no affiliate code was given or player tried to use their own, lolz
if (_affCode == 0 || _affCode == _pID)
{
// use last stored affiliate code
_affCode = plyr_[_pID].laff;
// if affiliate code was given & its not the same as previously stored
} else if (_affCode != plyr_[_pID].laff) {
// update last affiliate
plyr_[_pID].laff = _affCode;
}
buyTicket(_pID, _affCode, _tickets);
}
function buyXaddr(uint _tickets, address _affCode)
isHuman()
isWithinLimits(msg.value, _tickets)
isTicketsLimits(_tickets)
isActivated
public
payable
{
// set up our tx event data and determine if player is new or not
//Coindatasets.EventReturns memory _eventData_ = determinePID(_eventData_);
// determine if player is new or not
determinePID();
uint256 _affID;
// fetch player id
uint256 _pID = pIDxAddr_[msg.sender];
if (_affCode == address(0) || _affCode == msg.sender)
{
// use last stored affiliate code
_affID = plyr_[_pID].laff;
// if affiliate code was given
} else {
// get affiliate ID from aff Code
_affID = pIDxAddr_[_affCode];
// if affID is not the same as previously stored
if (_affID != plyr_[_pID].laff)
{
// update last affiliate
plyr_[_pID].laff = _affID;
}
}
buyTicket(_pID, _affID, _tickets);
}
function buyXname(uint _tickets, bytes32 _affCode)
isHuman()
isWithinLimits(msg.value, _tickets)
isTicketsLimits(_tickets)
isActivated
public
payable
{
// set up our tx event data and determine if player is new or not
//Coindatasets.EventReturns memory _eventData_ = determinePID(_eventData_);
determinePID();
// fetch player id
uint256 _pID = pIDxAddr_[msg.sender];
// manage affiliate residuals
uint256 _affID;
// if no affiliate code was given or player tried to use their own, lolz
if (_affCode == '' || _affCode == plyr_[_pID].name)
{
// use last stored affiliate code
_affID = plyr_[_pID].laff;
// if affiliate code was given
} else {
// get affiliate ID from aff Code
_affID = pIDxName_[_affCode];
// if affID is not the same as previously stored
if (_affID != plyr_[_pID].laff)
{
// update last affiliate
plyr_[_pID].laff = _affID;
}
}
buyTicket(_pID, _affID, _tickets);
}
function reLoadXaddr(uint256 _tickets, address _affCode)
isHuman()
isActivated
isTicketsLimits(_tickets)
public
{
// fetch player id
uint256 _pID = pIDxAddr_[msg.sender];
uint256 _affID;
if (_affCode == address(0) || _affCode == msg.sender){
_affID = plyr_[_pID].laff;
}
else{
// get affiliate ID from aff Code
_affID = pIDxAddr_[_affCode];
// if affID is not the same as previously stored
if (_affID != plyr_[_pID].laff)
{
// update last affiliate
plyr_[_pID].laff = _affID;
}
}
reloadTickets(_pID, _affID, _tickets);
}
function reLoadXname(uint256 _tickets, bytes32 _affCode)
isHuman()
isActivated
isTicketsLimits(_tickets)
public
{
// fetch player id
uint256 _pID = pIDxAddr_[msg.sender];
uint256 _affID;
if (_affCode == '' || _affCode == plyr_[_pID].name){
_affID = plyr_[_pID].laff;
}
else{
// get affiliate ID from aff Code
_affID = pIDxName_[_affCode];
// if affID is not the same as previously stored
if (_affID != plyr_[_pID].laff)
{
// update last affiliate
plyr_[_pID].laff = _affID;
}
}
reloadTickets(_pID, _affID, _tickets);
}
function reloadTickets(uint256 _pID, uint256 _affID, uint256 _tickets)
isActivated
private
{
//************** ******************
// setup local rID
uint256 _rID = rID_;
// grab time
uint256 _now = now;
// if round is active
if (_now > round_[_rID].start && _now < round_[_rID].end && round_[_rID].ended == false){
// call ticket
uint256 _eth = getBuyPrice().mul(_tickets);
//plyr_[_pID].gen = withdrawEarnings(_pID).sub(_eth);
reloadEarnings(_pID, _eth);
ticket(_pID, _rID, _tickets, _affID, _eth);
if (round_[_rID].tickets == ticketstotal_){
round_[_rID].ended = true;
round_[_rID].end = now;
endRound();
}
}else if (_now > round_[_rID].end && round_[_rID].ended == false){
// end the round (distributes pot) & start new round
round_[_rID].ended = true;
//endRound();
bool autopurchase = endRound();
// put eth in players vault
if (autopurchase){
ticket(_pID, rID_, _tickets, _affID, msg.value);
}else{
plyr_[_pID].gen = plyr_[_pID].gen.add(msg.value);
}
}
}
function withdraw()
isHuman()
public
{
// setup local rID
//uint256 _rID = rID_;
// grab time
uint256 _now = now;
// fetch player ID
uint256 _pID = pIDxAddr_[msg.sender];
// setup temp var for player eth
uint256 _eth;
// check to see if round has ended and no one has run round end yet
_eth = withdrawEarnings(_pID);
if (_eth > 0){
plyr_[_pID].addr.transfer(_eth);
emit Coinevents.onWithdraw(_pID, msg.sender, plyr_[_pID].name, _eth, _now);
}
}
function reloadEarnings(uint256 _pID, uint256 _eth)
private
returns(uint256)
{
// update gen vault
updateTicketVault(_pID, plyr_[_pID].lrnd);
uint256 _earnings = (plyr_[_pID].win).add(plyr_[_pID].gen).add(plyr_[_pID].aff);
require(_earnings >= _eth, "earnings too lower");
if (plyr_[_pID].gen >= _eth) {
plyr_[_pID].gen = plyr_[_pID].gen.sub(_eth);
return;
}else{
_eth = _eth.sub(plyr_[_pID].gen);
plyr_[_pID].gen = 0;
}
if (plyr_[_pID].aff >= _eth){
plyr_[_pID].aff = plyr_[_pID].aff.sub(_eth);
return;
}else{
_eth = _eth.sub(plyr_[_pID].aff);
plyr_[_pID].aff = 0;
}
plyr_[_pID].win = plyr_[_pID].win.sub(_eth);
}
function withdrawEarnings(uint256 _pID)
private
returns(uint256)
{
// update gen vault
updateTicketVault(_pID, plyr_[_pID].lrnd);
uint256 _earnings = (plyr_[_pID].win).add(plyr_[_pID].gen).add(plyr_[_pID].aff);
if (_earnings > 0)
{
plyr_[_pID].win = 0; // winner
plyr_[_pID].gen = 0; //ticket valuet
plyr_[_pID].aff = 0; // aff player
}
return(_earnings);
}
// aquire buy ticket price
function getBuyPrice()
public
view
returns(uint256)
{
return round_[rID_].jackpot.mul(150) / 100 / 1500;
}
/**
* @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 buyTicket( uint256 _pID, uint256 _affID, uint256 _tickets)
private
{
//************** ******************
// setup local rID
uint256 _rID = rID_;
// grab time
uint256 _now = now;
// if round is active
if (_now > round_[_rID].start && _now < round_[_rID].end){
// call ticket
ticket(_pID, _rID, _tickets, _affID, msg.value);
if (round_[_rID].tickets == ticketstotal_){
round_[_rID].ended = true;
round_[_rID].end = now;
endRound();
}
}else if (_now > round_[_rID].end && round_[_rID].ended == false){
// end the round (distributes pot) & start new round
round_[_rID].ended = true;
//_eventData_ = endRound(_eventData_);
bool autopurchase = endRound();
// put eth in players vault
if (autopurchase){
ticket(_pID, _rID, _tickets, _affID, msg.value);
}else{
plyr_[_pID].gen = plyr_[_pID].gen.add(msg.value);
}
//plyr_[_pID].gen = plyr_[_pID].gen.add(msg.value);
}
//ticket(_pID, _rID, _tickets, _affID, msg.value);
}
function ticket(uint256 _pID, uint256 _rID, uint256 _tickets, uint256 _affID, uint256 _eth)
private
{
// if player is new to round
if (plyrRnds_[_pID][rID_].tickets == 0){
managePlayer(_pID);
round_[rID_].playernums += 1;
plyrRnds_[_affID][rID_].affnums += 1;
}
// ********** buy ticket *************
uint tickets = round_[rID_].tickets;
uint groups = (tickets + _tickets - 1) / grouptotal_ - tickets / grouptotal_;
uint offset = tickets / grouptotal_;
if (groups == 0){
if (((tickets + _tickets) % grouptotal_) == 0){
orders[rID_][_pID][offset] = calulateXticket(orders[rID_][_pID][offset], grouptotal_, tickets % grouptotal_);
}else{
orders[rID_][_pID][offset] = calulateXticket(orders[rID_][_pID][offset], (tickets + _tickets) % grouptotal_, tickets % grouptotal_);
}
}else{
for(uint256 i = 0; i < groups + 1; i++){
if (i == 0){
orders[rID_][_pID][offset+i] = calulateXticket(orders[rID_][_pID][offset + i], grouptotal_, tickets % grouptotal_);
}
if (i > 0 && i < groups){
orders[rID_][_pID][offset + i] = calulateXticket(orders[rID_][_pID][offset + i], grouptotal_, 0);
}
if (i == groups){
if (((tickets + _tickets) % grouptotal_) == 0){
orders[rID_][_pID][offset + i] = calulateXticket(orders[rID_][_pID][offset + i], grouptotal_, 0);
}else{
orders[rID_][_pID][offset + i] = calulateXticket(orders[rID_][_pID][offset + i], (tickets + _tickets) % grouptotal_, 0);
}
}
}
}
if (round_[rID_].tickets < _headtickets){
if (_tickets.add(round_[rID_].tickets) <= _headtickets){
plyrRnds_[_pID][rID_].luckytickets = _tickets.add(plyrRnds_[_pID][rID_].luckytickets);
}
else{
plyrRnds_[_pID][rID_].luckytickets = (_headtickets - round_[rID_].tickets).add(plyrRnds_[_pID][rID_].luckytickets);
}
}
// set up purchase tickets
round_[rID_].tickets = _tickets.add(round_[rID_].tickets);
plyrRnds_[_pID][rID_].tickets = _tickets.add(plyrRnds_[_pID][rID_].tickets);
plyrRnds_[_pID][rID_].eth = _eth.add(plyrRnds_[_pID][rID_].eth);
round_[rID_].blocknum = block.number;
// distributes valuet
distributeVault(_pID, rID_, _affID, _eth, _tickets);
// order event log
//emit onBuy(msg.sender, tickets+1, tickets +_tickets,_rID, _eth, plyr_[_pID].name);
emit Coinevents.onBuy(msg.sender, tickets+1, tickets +_tickets,rID_, plyr_[_pID].name);
}
function distributeVault(uint256 _pID, uint256 _rID, uint256 _affID, uint256 _eth, uint256 _tickets)
private
{
// distributes gen
uint256 _gen = 0;
uint256 _genvault = 0;
uint256 ticketprice_ = getBuyPrice();
if (round_[_rID].tickets > _headtickets){
if (round_[_rID].tickets.sub(_tickets) > _headtickets){
_gen = _tickets;
//plyrRnds_[_pID][_rID].luckytickets =
}else{
_gen = round_[_rID].tickets.sub(_headtickets);
}
}
if (_gen > 0){
//_genvault = (((_gen / _tickets).mul(_eth)).mul(20)) / 100; // 20 % to gen tickets
_genvault = ((ticketprice_ * _gen).mul(20)) / 100;
round_[_rID].mask = _genvault.add(round_[_rID].mask); // update mask
}
uint256 _aff = _eth / 10; //to================10%(aff)
uint256 _com = _eth / 20; //to================5%(community)
uint256 _found = _eth.mul(32) / 100;
round_[_rID].found = _found.add(round_[_rID].found); //to============prize found
if (_affID != 0){
plyr_[_affID].aff = _aff.add(plyr_[_affID].aff);
community_addr.transfer(_com);
}else{
_com = _com.add(_aff);
community_addr.transfer(_com);
}
// ============to perhaps next round pool
uint256 _nextpot = _eth.sub(_genvault);
if (_affID != 0){
_nextpot = _nextpot.sub(_aff);
}
_nextpot = _nextpot.sub(_com);
_nextpot = _nextpot.sub(_found);
round_[_rID].nextpot = _nextpot.add(round_[_rID].nextpot); // next round pool
}
function calulateXticket(uint256 _target, uint256 _start, uint256 _end) pure private returns(uint256){
return _target ^ (2 ** _start - 2 ** _end);
}
function endRound()
private
returns(bool)
{
// setup local rID
uint256 _rID = rID_;
uint256 prize_callback = 0;
round_[_rID].lucknum = randNums();
bool autopurchase = false;
// 1. if win
if (round_[_rID].tickets >= round_[_rID].lucknum){
// community_addr.transfer(round_[_rID].income.sub(_com).sub(_gen));
// need administrators take in 10 ETH activate next round
prize_callback = round_[_rID].found.add(round_[_rID].nextpot);
if (prize_callback > 0) {
prize_addr.transfer(prize_callback);
activated_ = false; // need administrators to activate
emit onSettle(_rID, round_[_rID].tickets, address(0), round_[_rID].lucknum, round_[_rID].jackpot);
}
}else{
// 2. if nobody win
// directly start next round
prize_callback = round_[_rID].found;
if (prize_callback > 0) {
prize_addr.transfer(prize_callback);
}
rID_ ++;
_rID ++;
round_[_rID].start = now;
round_[_rID].end = now.add(rndGap_);
round_[_rID].jackpot = round_[_rID-1].jackpot.add(round_[_rID-1].nextpot);
autopurchase = true;
emit onSettle(_rID-1, round_[_rID-1].tickets, address(0), round_[_rID-1].lucknum, round_[_rID-1].jackpot);
}
return autopurchase;
}
/**
* @dev moves any unmasked earnings to ticket vault. updates earnings
*/
// _pID: player pid _rIDlast: last roundid
function updateTicketVault(uint256 _pID, uint256 _rIDlast) private{
uint256 _gen = (plyrRnds_[_pID][_rIDlast].luckytickets.mul(round_[_rIDlast].mask / _headtickets)).sub(plyrRnds_[_pID][_rIDlast].mask);
uint256 _jackpot = 0;
if (judgeWin(_rIDlast, _pID) && address(round_[_rIDlast].winner) == 0) {
_jackpot = round_[_rIDlast].jackpot;
round_[_rIDlast].winner = msg.sender;
}
plyr_[_pID].gen = _gen.add(plyr_[_pID].gen); // ticket valuet
plyr_[_pID].win = _jackpot.add(plyr_[_pID].win); // player win
plyrRnds_[_pID][_rIDlast].mask = plyrRnds_[_pID][_rIDlast].mask.add(_gen);
}
function managePlayer(uint256 _pID)
private
{
// if player has played a previous round, move their unmasked earnings
// from that round to gen vault.
if (plyr_[_pID].lrnd != 0)
updateTicketVault(_pID, plyr_[_pID].lrnd);
// update player's last round played
plyr_[_pID].lrnd = rID_;
}
//==============================================================================
// _ _ | _ | _ _|_ _ _ _ .
// (_(_||(_|_||(_| | (_)| _\ .
//==============================================================================
/**
* @dev calculates unmasked earnings (just calculates, does not update ticket)
* @return earnings in wei format
*/
//计算每轮中pid前500ticket的分红
function calcTicketEarnings(uint256 _pID, uint256 _rIDlast)
private
view
returns(uint256)
{ // per round ticket valuet
return (plyrRnds_[_pID][_rIDlast].luckytickets.mul(round_[_rIDlast].mask / _headtickets)).sub(plyrRnds_[_pID][_rIDlast].mask);
}
//====================/=========================================================
/** upon contract deploy, it will be deactivated. this is a one time
* use function that will activate the contract. we do this so devs
* have time to set things up on the web end **/
function activate()
isHuman()
public
payable
{
// can only be ran once
require(
msg.sender == activate_addr2 ||msg.sender == activate_addr1);
require(activated_ == false, "LuckyCoin already activated");
//uint256 _jackpot = 10 ether;
require(msg.value == jackpot, "activate game need 10 ether");
if (rID_ != 0) {
require(round_[rID_].tickets >= round_[rID_].lucknum, "nobody win");
}
//activate the contract
activated_ = true;
//lets start first round
rID_ ++;
round_[rID_].start = now;
round_[rID_].end = now + rndGap_;
round_[rID_].jackpot = msg.value;
emit onActivate(rID_);
}
/**
* @dev receives name/player info from names contract
*/
function receivePlayerInfo(uint256 _pID, address _addr, bytes32 _name, uint256 _laff)
external
{
require (msg.sender == address(PlayerBook), "your not playerNames contract... hmmm..");
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 (plyr_[_pID].laff != _laff)
plyr_[_pID].laff = _laff;
if (plyrNames_[_pID][_name] == false)
plyrNames_[_pID][_name] = true;
}
//==============================PLAYER==========================================
/**
* @dev receives entire player name list
*/
function receivePlayerNameList(uint256 _pID, bytes32 _name)
external
{
require (msg.sender == address(PlayerBook), "your not playerNames contract... hmmm..");
if(plyrNames_[_pID][_name] == false)
plyrNames_[_pID][_name] = true;
}
/**
* @dev gets existing or registers new pID. use this when a player may be new
* @return pID
*/
function determinePID()
private
//returns (Coindatasets.EventReturns)
{
uint256 _pID = pIDxAddr_[msg.sender];
// if player is new to this version of luckycoin
if (_pID == 0)
{
// grab their player ID, name and last aff ID, from player names contract
_pID = PlayerBook.getPlayerID(msg.sender);
bytes32 _name = PlayerBook.getPlayerName(_pID);
uint256 _laff = PlayerBook.getPlayerLAff(_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;
}
if (_laff != 0 && _laff != _pID)
plyr_[_pID].laff = _laff;
// set the new player bool to true
//_eventData_.compressedData = _eventData_.compressedData + 1;
}
//return (_eventData_);
}
// only support Name by name
function registerNameXname(string _nameString, bytes32 _affCode, bool _all)
isHuman()
public
payable
{
bytes32 _name = _nameString.nameFilter();
address _addr = msg.sender;
uint256 _paid = msg.value;
(bool _isNewPlayer, uint256 _affID) = PlayerBook.registerNameXnameFromDapp.value(msg.value)(msg.sender, _name, _affCode, _all);
uint256 _pID = pIDxAddr_[_addr];
// fire event
emit Coinevents.onNewName(_pID, _addr, _name, _isNewPlayer, _affID, plyr_[_affID].addr, plyr_[_affID].name, _paid, now);
}
function registerNameXaddr(string _nameString, address _affCode, bool _all)
isHuman()
public
payable
{
bytes32 _name = _nameString.nameFilter();
address _addr = msg.sender;
uint256 _paid = msg.value;
(bool _isNewPlayer, uint256 _affID) = PlayerBook.registerNameXaddrFromDapp.value(msg.value)(msg.sender, _name, _affCode, _all);
uint256 _pID = pIDxAddr_[_addr];
// fire event
emit Coinevents.onNewName(_pID, _addr, _name, _isNewPlayer, _affID, plyr_[_affID].addr, plyr_[_affID].name, _paid, now);
}
/**
* @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)
{
// setup local rID
uint256 _rID = rID_;
// grab time
uint256 _now = now;
if (_now < round_[_rID].end){
return( (round_[_rID].end).sub(_now) );
}
else
return(0);
}
function getCurrentRoundInfo()
public
view
returns(uint256, uint256, uint256, uint256, uint256, uint256, uint256, uint256, uint256, address, bool)
{
// setup local rID
uint256 _rID = rID_;
return
(
rID_,
round_[_rID].tickets,
round_[_rID].start,
round_[_rID].end,
round_[_rID].jackpot,
round_[_rID].nextpot,
round_[_rID].lucknum,
round_[_rID].mask,
round_[_rID].playernums,
round_[_rID].winner,
round_[_rID].ended
);
}
function getPlayerInfoByAddress(address _addr)
public
view
returns(uint256, bytes32, uint256, uint256, uint256, uint256, uint256, uint256)
{
// setup local rID
uint256 _rID = rID_;
if (_addr == address(0))
{
_addr == msg.sender;
}
uint256 _pID = pIDxAddr_[_addr];
uint256 _lrnd = plyr_[_pID].lrnd;
uint256 _jackpot = 0;
if (judgeWin(_lrnd, _pID) && address(round_[_lrnd].winner) == 0){
_jackpot = round_[_lrnd].jackpot;
}
return
(
_pID, //0
plyr_[_pID].name, //1
plyrRnds_[_pID][_rID].tickets, //2
plyr_[_pID].win.add(_jackpot), //3
plyr_[_pID].gen.add(calcTicketEarnings(_pID, _lrnd)), //4
plyr_[_pID].aff, //5
plyrRnds_[_pID][_rID].eth, //6
plyrRnds_[_pID][_rID].affnums // 7
);
}
// generate a number between 1-1500
function randNums() public view returns(uint256) {
return uint256(keccak256(block.difficulty, now, block.coinbase)) % ticketstotal_ + 1;
}
// search user if win
function judgeWin(uint256 _rid, uint256 _pID)private view returns(bool){
uint256 _group = (round_[_rid].lucknum -1) / grouptotal_;
uint256 _temp = round_[_rid].lucknum % grouptotal_;
if (_temp == 0){
_temp = grouptotal_;
}
if (orders[_rid][_pID][_group] & (2 **(_temp-1)) == 2 **(_temp-1)){
return true;
}else{
return false;
}
}
// search the tickets owns
function searchtickets()public view returns(uint256, uint256, uint256, uint256,uint256, uint256){
uint256 _pID = pIDxAddr_[msg.sender];
return (
orders[rID_][_pID][0],
orders[rID_][_pID][1],
orders[rID_][_pID][2],
orders[rID_][_pID][3],
orders[rID_][_pID][4],
orders[rID_][_pID][5]
);
}
// search the tickets by address
function searchTicketsXaddr(address addr) public view returns(uint256, uint256, uint256, uint256,uint256, uint256){
uint256 _pID = pIDxAddr_[addr];
return (
orders[rID_][_pID][0],
orders[rID_][_pID][1],
orders[rID_][_pID][2],
orders[rID_][_pID][3],
orders[rID_][_pID][4],
orders[rID_][_pID][5]
);
}
}
library Coindatasets {
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
}
struct Round {
uint256 tickets; // already purchase ticket
bool ended; // has round end function been ran
uint256 jackpot; // eth to pot, perhaps next round pot
uint256 start; // time round started
uint256 end; // time ends/ended
address winner; //win address
uint256 mask; // global mask
uint256 found; // jackpot found
uint256 lucknum; // win num
uint256 nextpot; // next pot
uint256 blocknum; // current blocknum
uint256 playernums; // playernums
}
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
uint256 luckytickets; // head 500 will acquire distributes vault
}
struct PotSplit {
uint256 community; // % of pot thats paid to key holders of current round
uint256 gen; // % of pot thats paid to tickets holders
uint256 laff; // last affiliate id used
}
struct PlayerRounds {
uint256 eth; // eth player has added to round
uint256 tickets; // tickets
uint256 mask; // player mask,
uint256 affnums;
uint256 luckytickets; // player luckytickets
}
}
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);
}
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);
}
}
/**
* @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);
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);
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);
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);
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":true,"inputs":[],"name":"getBuyPrice","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":"_tickets","type":"uint256"},{"name":"_affCode","type":"bytes32"}],"name":"buyXname","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"searchtickets","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"activate","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"pIDxAddr_","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"round_","outputs":[{"name":"tickets","type":"uint256"},{"name":"ended","type":"bool"},{"name":"jackpot","type":"uint256"},{"name":"start","type":"uint256"},{"name":"end","type":"uint256"},{"name":"winner","type":"address"},{"name":"mask","type":"uint256"},{"name":"found","type":"uint256"},{"name":"lucknum","type":"uint256"},{"name":"nextpot","type":"uint256"},{"name":"blocknum","type":"uint256"},{"name":"playernums","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":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_nameString","type":"string"},{"name":"_affCode","type":"address"},{"name":"_all","type":"bool"}],"name":"registerNameXaddr","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_pID","type":"uint256"},{"name":"_addr","type":"address"},{"name":"_name","type":"bytes32"},{"name":"_laff","type":"uint256"}],"name":"receivePlayerInfo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rID_","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_nameString","type":"string"},{"name":"_affCode","type":"bytes32"},{"name":"_all","type":"bool"}],"name":"registerNameXname","outputs":[],"payable":true,"stateMutability":"payable","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":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"address"},{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tickets","type":"uint256"},{"name":"_affCode","type":"address"}],"name":"reLoadXaddr","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tickets","type":"uint256"},{"name":"_affCode","type":"uint256"}],"name":"buyXid","outputs":[],"payable":true,"stateMutability":"payable","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":"tickets","type":"uint256"},{"name":"mask","type":"uint256"},{"name":"affnums","type":"uint256"},{"name":"luckytickets","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"addr","type":"address"}],"name":"searchTicketsXaddr","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tickets","type":"uint256"},{"name":"_affCode","type":"address"}],"name":"buyXaddr","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"randNums","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":true,"inputs":[],"name":"activated_","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tickets","type":"uint256"},{"name":"_affCode","type":"bytes32"}],"name":"reLoadXname","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":"aff","type":"uint256"},{"name":"lrnd","type":"uint256"},{"name":"laff","type":"uint256"},{"name":"luckytickets","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"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"addr","type":"address"},{"indexed":false,"name":"begin","type":"uint256"},{"indexed":false,"name":"end","type":"uint256"}],"name":"LogbuyNums","type":"event"},{"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":"affiliateID","type":"uint256"},{"indexed":false,"name":"affiliateAddress","type":"address"},{"indexed":false,"name":"affiliateName","type":"bytes32"},{"indexed":false,"name":"amountPaid","type":"uint256"},{"indexed":false,"name":"timeStamp","type":"uint256"}],"name":"onNewName","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"playerAddress","type":"address"},{"indexed":false,"name":"begin","type":"uint256"},{"indexed":false,"name":"end","type":"uint256"},{"indexed":false,"name":"round","type":"uint256"},{"indexed":false,"name":"playerName","type":"bytes32"}],"name":"onBuy","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":"rid","type":"uint256"},{"indexed":false,"name":"ticketsout","type":"uint256"},{"indexed":false,"name":"winner","type":"address"},{"indexed":false,"name":"luckynum","type":"uint256"},{"indexed":false,"name":"jackpot","type":"uint256"}],"name":"onSettle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"rid","type":"uint256"}],"name":"onActivate","type":"event"}]Contract Creation Code
60806040526105dc600090815560fa600155678ac7230489e800006002556003556101f460045560058054600160a860020a03191674180a14af38384dc15ce96cbcabcfc8f47794ac3e001790556006805473180a14af38384dc15ce96cbcabcfc8f47794ac3e600160a060020a0319918216811790925560078054821690921790915560088054736c7dfe3c255a098ea031f334436dd50345cfc73792169190911790553480156100b057600080fd5b50614033806100c06000396000f3006080604052600436106101695763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663018a25e8811461036757806306fdde031461038e57806308752869146104185780630a1a677e146104285780630f15f4c01461047057806310f01eba1461047857806324c33d33146104995780632660316e146105185780632e19ebdc146105475780633ccfd60b1461055f5780633ddd46981461057457806349cc635d146105d0578063624ae5c0146105fa578063685ffd831461060f578063747dff421461066257806381617f8f146106d85780638f38f309146106fc5780638f7140ea1461070a57806395d89b4114610725578063a2bccae91461073a578063a3395a5214610780578063a9287619146107a1578063bf02dbcf146107b8578063c7e284b8146107cd578063d53b2679146107e2578063d574bcdf146107f7578063de7874f314610812578063ee0b5d8b14610875575b6007546000908190819081908190600160a060020a03163314806101975750600854600160a060020a031633145b156101a9576101a46108d7565b610360565b6000341115610360573394503285146101fa576040805160e560020a62461bcd0281526020600482015260186024820152600080516020613fc8833981519152604482015290519081900360640190fd5b843b93508315610250576040805160e560020a62461bcd0281526020600482015260226024820152600080516020613fa8833981519152604482015260f060020a613d3d02606482015290519081900360840190fd5b610258610b59565b336000908152600a60205260409020549250610272610df9565b91506000821161028157600080fd5b813481151561028c57fe5b0490506000811161029c57600080fd5b60055460ff161515600114610321576040805160e560020a62461bcd02815260206004820152602a60248201527f697473206e6f74207265616479207965742e2020636f6e746163742061646d6960448201527f6e6973747261746f727300000000000000000000000000000000000000000000606482015290519081900360840190fd5b60035460009081526009602052604081205490540381111561034257600080fd5b6000838152600c602052604090206006015461036090849083610e3f565b5050505050005b34801561037357600080fd5b5061037c610df9565b60408051918252519081900360200190f35b34801561039a57600080fd5b506103a3610f84565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103dd5781810151838201526020016103c5565b50505050905090810190601f16801561040a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610426600435602435610fbb565b005b34801561043457600080fd5b5061043d6111a7565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b6104266108d7565b34801561048457600080fd5b5061037c600160a060020a036004351661120b565b3480156104a557600080fd5b506104b160043561121d565b604080519c8d529a151560208d01528b8b019990995260608b019790975260808a0195909552600160a060020a0390931660a089015260c088019190915260e087015261010086015261012085015261014084015261016083015251908190036101800190f35b34801561052457600080fd5b5061053360043560243561128d565b604080519115158252519081900360200190f35b34801561055357600080fd5b5061037c6004356112ad565b34801561056b57600080fd5b506104266112bf565b6040805160206004803580820135601f810184900484028501840190955284845261042694369492936024939284019190819084018382808284375094975050600160a060020a03853516955050505050602001351515611430565b3480156105dc57600080fd5b50610426600435600160a060020a036024351660443560643561163e565b34801561060657600080fd5b5061037c61182f565b6040805160206004803580820135601f8101849004840285018401909552848452610426943694929360249392840191908190840183828082843750949750508435955050505050602001351515611835565b34801561066e57600080fd5b5061067761196a565b604080519b8c5260208c019a909a528a8a019890985260608a0196909652608089019490945260a088019290925260c087015260e0860152610100850152600160a060020a0316610120840152151561014083015251908190036101600190f35b3480156106e457600080fd5b50610426600435600160a060020a03602435166119ce565b610426600435602435611b86565b34801561071657600080fd5b50610426600435602435611d4d565b34801561073157600080fd5b506103a3611e2a565b34801561074657600080fd5b50610755600435602435611e61565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b34801561078c57600080fd5b5061043d600160a060020a0360043516611e9b565b610426600435600160a060020a0360243516611f07565b3480156107c457600080fd5b5061037c6120f2565b3480156107d957600080fd5b5061037c612134565b3480156107ee57600080fd5b50610533612188565b34801561080357600080fd5b50610426600435602435612191565b34801561081e57600080fd5b5061082a600435612334565b60408051600160a060020a0390991689526020890197909752878701959095526060870193909352608086019190915260a085015260c084015260e083015251908190036101000190f35b34801561088157600080fd5b50610896600160a060020a0360043516612381565b604080519889526020890197909752878701959095526060870193909352608086019190915260a085015260c084015260e083015251908190036101000190f35b33600032821461091f576040805160e560020a62461bcd0281526020600482015260186024820152600080516020613fc8833981519152604482015290519081900360640190fd5b50803b8015610974576040805160e560020a62461bcd0281526020600482015260226024820152600080516020613fa8833981519152604482015260f060020a613d3d02606482015290519081900360840190fd5b600754600160a060020a03163314806109975750600854600160a060020a031633145b15156109a257600080fd5b60055460ff16156109fd576040805160e560020a62461bcd02815260206004820152601b60248201527f4c75636b79436f696e20616c7265616479206163746976617465640000000000604482015290519081900360640190fd5b6002543414610a56576040805160e560020a62461bcd02815260206004820152601b60248201527f61637469766174652067616d65206e6565642031302065746865720000000000604482015290519081900360640190fd5b60035415610acc576003546000908152600960205260409020600881015490541015610acc576040805160e560020a62461bcd02815260206004820152600a60248201527f6e6f626f64792077696e00000000000000000000000000000000000000000000604482015290519081900360640190fd5b6005805460ff191660019081179091556003805490910180825560009081526009602090815260408083204290850181905584548452818420611c20909101600490910155835483529182902034600291909101559154815190815290517fad61e0b8103cd22dd17df2a02217a2c0f2a064c1a486e27d7951d9080963b38d929181900390910190a15050565b336000908152600a60205260408120549080821515610df457604080517fe56556a9000000000000000000000000000000000000000000000000000000008152336004820152905173c87a693dbba31aefb9457683b7d245dad756db889163e56556a99160248083019260209291908290030181600087803b158015610bde57600080fd5b505af1158015610bf2573d6000803e3d6000fd5b505050506040513d6020811015610c0857600080fd5b5051604080517f82e37b2c00000000000000000000000000000000000000000000000000000000815260048101839052905191945073c87a693dbba31aefb9457683b7d245dad756db88916382e37b2c916024808201926020929091908290030181600087803b158015610c7b57600080fd5b505af1158015610c8f573d6000803e3d6000fd5b505050506040513d6020811015610ca557600080fd5b5051604080517fe3c08adf00000000000000000000000000000000000000000000000000000000815260048101869052905191935073c87a693dbba31aefb9457683b7d245dad756db889163e3c08adf916024808201926020929091908290030181600087803b158015610d1857600080fd5b505af1158015610d2c573d6000803e3d6000fd5b505050506040513d6020811015610d4257600080fd5b5051336000818152600a60209081526040808320889055878352600c9091529020805473ffffffffffffffffffffffffffffffffffffffff1916909117905590508115610dcb576000828152600b60209081526040808320869055858352600c82528083206001908101869055600e8352818420868552909252909120805460ff191690911790555b8015801590610dda5750828114155b15610df4576000838152600c602052604090206006018190555b505050565b6003546000908152600960205260408120600201546105dc90606490610e2690609663ffffffff61250816565b811515610e2f57fe5b04811515610e3957fe5b04905090565b600380546000818152600960205260408120909201549091429182118015610e77575060008381526009602052604090206004015482105b15610ed557610e89868486883461253a565b6000805484825260096020526040909120541415610ed05760008381526009602052604090206001818101805460ff1916909117905542600490910155610ece612b0a565b505b610f7c565b60008381526009602052604090206004015482118015610f07575060008381526009602052604090206001015460ff16155b15610f7c5760008381526009602052604090206001908101805460ff19169091179055610f32612b0a565b90508015610f4757610ed0868486883461253a565b6000868152600c6020526040902060030154610f69903463ffffffff612d7316565b6000878152600c60205260409020600301555b505050505050565b60408051808201909152600f81527f4c75636b79436f696e2053757065720000000000000000000000000000000000602082015281565b6000803381328214611005576040805160e560020a62461bcd0281526020600482015260186024820152600080516020613fc8833981519152604482015290519081900360640190fd5b50803b801561105a576040805160e560020a62461bcd0281526020600482015260226024820152600080516020613fa8833981519152604482015260f060020a613d3d02606482015290519081900360840190fd5b34866000611066610df9565b905081810283101561107757600080fd5b69152d02c7e14af680000083111561108e57600080fd5b60035460009081526009602052604081205490548a9190038111156110b257600080fd5b60055460ff1615156110fc576040805160e560020a62461bcd02815260206004820152600c6024820152600080516020613fe8833981519152604482015290519081900360640190fd5b611104610b59565b336000908152600a6020526040902054975088158061113357506000888152600c602052604090206001015489145b15611151576000888152600c60205260409020600601549650611190565b6000898152600b60209081526040808320548b8452600c909252909120600601549097508714611190576000888152600c602052604090206006018790555b61119b88888c610e3f565b50505050505050505050565b336000908152600a6020908152604080832054600380548552600f8452828520918552908352818420848052909252808320546001845281842054600285528285205493855282852054600486528386205460058752939095205491959094929190565b600a6020526000908152604090205481565b600960208190526000918252604090912080546001820154600283015460038401546004850154600586015460068701546007880154600889015499890154600a8a0154600b909a0154989a60ff90981699969895979496600160a060020a03909416959294919391929091908c565b600e60209081526000928352604080842090915290825290205460ff1681565b600b6020526000908152604090205481565b60008080338132821461130a576040805160e560020a62461bcd0281526020600482015260186024820152600080516020613fc8833981519152604482015290519081900360640190fd5b50803b801561135f576040805160e560020a62461bcd0281526020600482015260226024820152600080516020613fa8833981519152604482015260f060020a613d3d02606482015290519081900360840190fd5b336000908152600a6020526040902054429550935061137d84612d83565b92506000831115611429576000848152600c6020526040808220549051600160a060020a039091169185156108fc02918691818181858888f193505050501580156113cc573d6000803e3d6000fd5b506000848152600c60209081526040918290206001015482513381529182015280820185905260608101879052905185917f8f36579a548bc439baa172a6521207464154da77f411e2da3db2f53affe6cc3a919081900360800190a25b5050505050565b60008080808080338132821461147e576040805160e560020a62461bcd0281526020600482015260186024820152600080516020613fc8833981519152604482015290519081900360640190fd5b50803b80156114d3576040805160e560020a62461bcd0281526020600482015260226024820152600080516020613fa8833981519152604482015260f060020a613d3d02606482015290519081900360840190fd5b6114dc8b612e11565b604080517faa4d490b000000000000000000000000000000000000000000000000000000008152336004820181905260248201849052600160a060020a038e1660448301528c151560648301528251939b50995034985073c87a693dbba31aefb9457683b7d245dad756db889263aa4d490b928a926084808201939182900301818588803b15801561156d57600080fd5b505af1158015611581573d6000803e3d6000fd5b50505050506040513d604081101561159857600080fd5b508051602091820151600160a060020a03808b166000818152600a8652604080822054858352600c8852918190208054600190910154825188151581529889018790529416878201526060870193909352608086018c90524260a0870152915193995091975095508a92909186917fdd6176433ff5026bbce96b068584b7bbe3514227e72df9c630b749ae87e64442919081900360c00190a45050505050505050505050565b3373c87a693dbba31aefb9457683b7d245dad756db88146116cf576040805160e560020a62461bcd02815260206004820152602760248201527f796f7572206e6f7420706c617965724e616d657320636f6e74726163742e2e2e60448201527f20686d6d6d2e2e00000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a0383166000908152600a6020526040902054841461170a57600160a060020a0383166000908152600a602052604090208490555b6000828152600b60205260409020548414611731576000828152600b602052604090208490555b6000848152600c6020526040902054600160a060020a03848116911614611787576000848152600c60205260409020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0385161790555b6000848152600c602052604090206001015482146117b4576000848152600c602052604090206001018290555b6000848152600c602052604090206006015481146117e1576000848152600c602052604090206006018190555b6000848152600e6020908152604080832085845290915290205460ff161515611829576000848152600e602090815260408083208584529091529020805460ff191660011790555b50505050565b60035481565b600080808080803381328214611883576040805160e560020a62461bcd0281526020600482015260186024820152600080516020613fc8833981519152604482015290519081900360640190fd5b50803b80156118d8576040805160e560020a62461bcd0281526020600482015260226024820152600080516020613fa8833981519152604482015260f060020a613d3d02606482015290519081900360840190fd5b6118e18b612e11565b604080517f745ea0c1000000000000000000000000000000000000000000000000000000008152336004820181905260248201849052604482018e90528c151560648301528251939b50995034985073c87a693dbba31aefb9457683b7d245dad756db889263745ea0c1928a926084808201939182900301818588803b15801561156d57600080fd5b600380546000818152600960208190526040909120805493810154600482015460028301549383015460088401546006850154600b8601546005870154600190970154989a95989497969395929491939092600160a060020a039091169160ff1690565b6000803381328214611a18576040805160e560020a62461bcd0281526020600482015260186024820152600080516020613fc8833981519152604482015290519081900360640190fd5b50803b8015611a6d576040805160e560020a62461bcd0281526020600482015260226024820152600080516020613fa8833981519152604482015260f060020a613d3d02606482015290519081900360840190fd5b60055460ff161515611ab7576040805160e560020a62461bcd02815260206004820152600c6024820152600080516020613fe8833981519152604482015290519081900360640190fd5b600354600090815260096020526040812054905487919003811115611adb57600080fd5b336000908152600a60205260409020549450600160a060020a0386161580611b0b5750600160a060020a03861633145b15611b29576000858152600c60205260409020600601549350611b72565b600160a060020a0386166000908152600a6020908152604080832054888452600c909252909120600601549094508414611b72576000858152600c602052604090206006018490555b611b7d858589613624565b50505050505050565b60003381328214611bcf576040805160e560020a62461bcd0281526020600482015260186024820152600080516020613fc8833981519152604482015290519081900360640190fd5b50803b8015611c24576040805160e560020a62461bcd0281526020600482015260226024820152600080516020613fa8833981519152604482015260f060020a613d3d02606482015290519081900360840190fd5b34856000611c30610df9565b9050818102831015611c4157600080fd5b69152d02c7e14af6800000831115611c5857600080fd5b600354600090815260096020526040812054905489919003811115611c7c57600080fd5b60055460ff161515611cc6576040805160e560020a62461bcd02815260206004820152600c6024820152600080516020613fe8833981519152604482015290519081900360640190fd5b611cce610b59565b336000908152600a60205260409020549650871580611cec57508688145b15611d0a576000878152600c60205260409020600601549750611d37565b6000878152600c60205260409020600601548814611d37576000878152600c602052604090206006018890555b611d4287898b610e3f565b505050505050505050565b3373c87a693dbba31aefb9457683b7d245dad756db8814611dde576040805160e560020a62461bcd02815260206004820152602760248201527f796f7572206e6f7420706c617965724e616d657320636f6e74726163742e2e2e60448201527f20686d6d6d2e2e00000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6000828152600e6020908152604080832084845290915290205460ff161515611e26576000828152600e602090815260408083208484529091529020805460ff191660011790555b5050565b60408051808201909152600981527f4c75636b79436f696e0000000000000000000000000000000000000000000000602082015281565b600d602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b600160a060020a03166000908152600a6020908152604080832054600380548552600f8452828520918552908352818420848052909252808320546001845281842054600285528285205493855282852054600486528386205460058752939095205491959094929190565b6000803381328214611f51576040805160e560020a62461bcd0281526020600482015260186024820152600080516020613fc8833981519152604482015290519081900360640190fd5b50803b8015611fa6576040805160e560020a62461bcd0281526020600482015260226024820152600080516020613fa8833981519152604482015260f060020a613d3d02606482015290519081900360840190fd5b34866000611fb2610df9565b9050818102831015611fc357600080fd5b69152d02c7e14af6800000831115611fda57600080fd5b60035460009081526009602052604081205490548a919003811115611ffe57600080fd5b60055460ff161515612048576040805160e560020a62461bcd02815260206004820152600c6024820152600080516020613fe8833981519152604482015290519081900360640190fd5b612050610b59565b336000908152600a60205260409020549650600160a060020a03891615806120805750600160a060020a03891633145b1561209e576000878152600c602052604090206006015497506120e7565b600160a060020a0389166000908152600a60209081526040808320548a8452600c9092529091206006015490985088146120e7576000878152600c602052604090206006018890555b61119b87898c610e3f565b60008054604080514481524260208201526c01000000000000000000000000410281830152905190819003605401902081151561212b57fe5b06600101905090565b600354600081815260096020526040812060040154909190429081101561217e57600082815260096020526040902060040154612177908263ffffffff61380316565b9250612183565b600092505b505090565b60055460ff1681565b60008033813282146121db576040805160e560020a62461bcd0281526020600482015260186024820152600080516020613fc8833981519152604482015290519081900360640190fd5b50803b8015612230576040805160e560020a62461bcd0281526020600482015260226024820152600080516020613fa8833981519152604482015260f060020a613d3d02606482015290519081900360840190fd5b60055460ff16151561227a576040805160e560020a62461bcd02815260206004820152600c6024820152600080516020613fe8833981519152604482015290519081900360640190fd5b60035460009081526009602052604081205490548791900381111561229e57600080fd5b336000908152600a602052604090205494508515806122cd57506000858152600c602052604090206001015486145b156122eb576000858152600c60205260409020600601549350611b72565b6000868152600b6020908152604080832054888452600c909252909120600601549094508414611b72576000858152600c60205260409020600601849055611b7d858589613624565b600c6020526000908152604090208054600182015460028301546003840154600485015460058601546006870154600790970154600160a060020a03909616969495939492939192909188565b6000806000806000806000806000806000806003549350505050600160a060020a038a166000908152600a6020908152604080832054808452600c90925282206005015490916123d18284613818565b80156123f55750600082815260096020526040902060050154600160a060020a0316155b1561240e57506000818152600960205260409020600201545b6000838152600c60208181526040808420600180820154600d85528387208b8852855292862001549488905292909152600290910154859290612457908563ffffffff612d7316565b61248261246488886138c1565b6000898152600c60205260409020600301549063ffffffff612d7316565b600c600089815260200190815260200160002060040154600d60008a815260200190815260200160002060008b815260200190815260200160002060000154600d60008b815260200190815260200160002060008c8152602001908152602001600020600301549b509b509b509b509b509b509b509b5050505050919395975091939597565b600082151561251957506000612534565b5081810281838281151561252957fe5b041461253457600080fd5b92915050565b6000858152600d60209081526040808320600354845290915281206001015481908190819015156125af5761256e89613935565b600380546000908152600960209081526040808320600b01805460019081019091558a8452600d835281842085548552909252909120909101805490910190555b600354600090815260096020526040902054600154909450848115156125d157fe5b046001546001898701038115156125e457fe5b04039250600154848115156125f557fe5b0491508215156126ef5760015487850181151561260e57fe5b06151561267d576003546000908152600f602090815260408083208c845282528083208584529091529020546001546126539190808781151561264d57fe5b06613981565b6003546000908152600f602090815260408083208d845282528083208684529091529020556126ea565b6003546000908152600f602090815260408083208c845282528083208584529091529020546001546126c49190868a018115156126b657fe5b066001548781151561264d57fe5b6003546000908152600f602090815260408083208d845282528083208684529091529020555b6128c6565b5060005b826001018110156128c657801515612767576003546000908152600f602090815260408083208c84528252808320858501845290915290205460015461273f9190808781151561264d57fe5b6003546000908152600f602090815260408083208d8452825280832086860184529091529020555b60008111801561277657508281105b156127d6576003546000908152600f602090815260408083208c8452825280832085850184529091528120546001546127ae92613981565b6003546000908152600f602090815260408083208d8452825280832086860184529091529020555b828114156128be576001548785018115156127ed57fe5b061515612853576003546000908152600f602090815260408083208c84528252808320858501845290915281205460015461282792613981565b6003546000908152600f602090815260408083208d8452825280832086860184529091529020556128be565b6003546000908152600f602090815260408083208c8452825280832085850184529091529020546001546128969190868a0181151561288e57fe5b066000613981565b6003546000908152600f602090815260408083208d8452825280832086860184529091529020555b6001016126f3565b60045460035460009081526009602052604090205410156129bd5760045460035460009081526009602052604090205461290790899063ffffffff612d7316565b11612960576000898152600d60209081526040808320600354845290915290206004015461293c90889063ffffffff612d7316565b60008a8152600d6020908152604080832060035484529091529020600401556129bd565b6000898152600d60209081526040808320600354845282528083206004908101546009909352922054915461299d9290039063ffffffff612d7316565b60008a8152600d6020908152604080832060035484529091529020600401555b6003546000908152600960205260409020546129e090889063ffffffff612d7316565b600380546000908152600960209081526040808320949094558c8252600d815283822092548252919091522060010154612a2190889063ffffffff612d7316565b60008a8152600d602090815260408083206003805485529252808320600101939093555481522054612a54908690612d73565b60008a8152600d6020908152604080832060038054855290835281842094909455835483526009909152902043600a9091015554612a96908a9088888b61398e565b60035460008a8152600c60209081526040918290206001908101548351338152918901928201929092528a88018184015260608101939093526080830152517f5ddced682e01b0b0d834f68b7a992537d4f99d8759ebb95221c23edde4dc87409181900360a00190a1505050505050505050565b6003546000908180612b1a6120f2565b6000848152600960205260408120600881018390555490925010612c2257600083815260096020819052604090912090810154600790910154612b629163ffffffff612d7316565b91506000821115612c1d57600654604051600160a060020a039091169083156108fc029084906000818181858888f19350505050158015612ba7573d6000803e3d6000fd5b506005805460ff19169055600083815260096020908152604080832080546008820154600290920154835189815294850191909152838301949094526060830152608082019290925290517f1d5e2e0a933eb9e711e45060f379b1d32c37bb79fc1458b852cf9d1e460ad30d9181900360a00190a15b612d6c565b6000838152600960205260408120600701549250821115612c7957600654604051600160a060020a039091169083156108fc029084906000818181858888f19350505050158015612c77573d6000803e3d6000fd5b505b600380546001908101825593909301600081815260096020526040902042940184905592612caf90611c2063ffffffff612d7316565b6000848152600960208190526040808320600401939093556000198601825291902090810154600290910154612cea9163ffffffff612d7316565b6000848152600960209081526040808320600290810194909455600019870180845281842080546008820154919096015483519283529382019590955280820193909352606083019390935260808201529051600192507f1d5e2e0a933eb9e711e45060f379b1d32c37bb79fc1458b852cf9d1e460ad30d9181900360a00190a15b9392505050565b8181018281101561253457600080fd5b6000818152600c60205260408120600501548190612da2908490613c3d565b6000838152600c6020526040902060048101546003820154600290920154612de092612dd4919063ffffffff612d7316565b9063ffffffff612d7316565b90506000811115612534576000838152600c6020526040812060028101829055600381018290556004015592915050565b8051600090829082808060208411801590612e2c5750600084115b1515612ea8576040805160e560020a62461bcd02815260206004820152602a60248201527f737472696e67206d757374206265206265747765656e203120616e642033322060448201527f6368617261637465727300000000000000000000000000000000000000000000606482015290519081900360840190fd5b846000815181101515612eb757fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a0214158015612f1e57508460018503815181101515612ef657fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a0214155b1515612f9a576040805160e560020a62461bcd02815260206004820152602560248201527f737472696e672063616e6e6f74207374617274206f7220656e6420776974682060448201527f7370616365000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b846000815181101515612fa957fe5b90602001015160f860020a900460f860020a02600160f860020a031916603060f860020a0214156130ec57846001815181101515612fe357fe5b90602001015160f860020a900460f860020a02600160f860020a031916607860f860020a0214151515613060576040805160e560020a62461bcd02815260206004820152601b60248201527f737472696e672063616e6e6f7420737461727420776974682030780000000000604482015290519081900360640190fd5b84600181518110151561306f57fe5b90602001015160f860020a900460f860020a02600160f860020a031916605860f860020a02141515156130ec576040805160e560020a62461bcd02815260206004820152601b60248201527f737472696e672063616e6e6f7420737461727420776974682030580000000000604482015290519081900360640190fd5b600091505b838210156135bc5784517f40000000000000000000000000000000000000000000000000000000000000009086908490811061312957fe5b90602001015160f860020a900460f860020a02600160f860020a03191611801561319d575084517f5b000000000000000000000000000000000000000000000000000000000000009086908490811061317e57fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b1561320a5784828151811015156131b057fe5b90602001015160f860020a900460f860020a0260f860020a900460200160f860020a0285838151811015156131e157fe5b906020010190600160f860020a031916908160001a90535082151561320557600192505b6135b1565b848281518110151561321857fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a0214806132e8575084517f60000000000000000000000000000000000000000000000000000000000000009086908490811061327457fe5b90602001015160f860020a900460f860020a02600160f860020a0319161180156132e8575084517f7b00000000000000000000000000000000000000000000000000000000000000908690849081106132c957fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b80613392575084517f2f000000000000000000000000000000000000000000000000000000000000009086908490811061331e57fe5b90602001015160f860020a900460f860020a02600160f860020a031916118015613392575084517f3a000000000000000000000000000000000000000000000000000000000000009086908490811061337357fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b151561340e576040805160e560020a62461bcd02815260206004820152602260248201527f737472696e6720636f6e7461696e7320696e76616c696420636861726163746560448201527f7273000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b848281518110151561341c57fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a0214156134fb57848260010181518110151561345857fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a02141515156134fb576040805160e560020a62461bcd02815260206004820152602860248201527f737472696e672063616e6e6f7420636f6e7461696e20636f6e7365637574697660448201527f6520737061636573000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b821580156135a7575084517f30000000000000000000000000000000000000000000000000000000000000009086908490811061353457fe5b90602001015160f860020a900460f860020a02600160f860020a03191610806135a7575084517f39000000000000000000000000000000000000000000000000000000000000009086908490811061358857fe5b90602001015160f860020a900460f860020a02600160f860020a031916115b156135b157600192505b6001909101906130f1565b600183151514613616576040805160e560020a62461bcd02815260206004820152601d60248201527f737472696e672063616e6e6f74206265206f6e6c79206e756d62657273000000604482015290519081900360640190fd5b505050506020015192915050565b60055460009081908190819060ff161515613677576040805160e560020a62461bcd02815260206004820152600c6024820152600080516020613fe8833981519152604482015290519081900360640190fd5b60038054600081815260096020526040902090910154909450429350831180156136b1575060008481526009602052604090206004015483105b80156136cf575060008481526009602052604090206001015460ff16155b15613752576136ec856136e0610df9565b9063ffffffff61250816565b91506136f88783613dc8565b50613706878587898661253a565b600080548582526009602052604090912054141561374d5760008481526009602052604090206001818101805460ff191690911790554260049091015561374b612b0a565b505b611b7d565b60008481526009602052604090206004015483118015613784575060008481526009602052604090206001015460ff16155b15611b7d5760008481526009602052604090206001908101805460ff191690911790556137af612b0a565b905080156137c65761374d8760035487893461253a565b6000878152600c60205260409020600301546137e8903463ffffffff612d7316565b6000888152600c602052604090206003015550505050505050565b60008282111561381257600080fd5b50900390565b6000806000600154600160096000888152602001908152602001600020600801540381151561384357fe5b049150600154600960008781526020019081526020016000206008015481151561386957fe5b06905080151561387857506001545b6000858152600f602090815260408083208784528252808320858452909152902054600019820160020a90811614156138b457600192506138b9565b600092505b505092915050565b6000828152600d60209081526040808320848452825280832060020154600454600990935290832060060154612d6c92613929918115156138fe57fe5b6000888152600d602090815260408083208a845290915290206004015491900463ffffffff61250816565b9063ffffffff61380316565b6000818152600c602052604090206005015415613969576000818152600c6020526040902060050154613969908290613c3d565b6003546000918252600c602052604090912060050155565b600290810a91900a031890565b600080808080808061399e610df9565b60045460008d8152600960205260409020549196501015613a0d5760045460008c8152600960205260409020546139db908a63ffffffff61380316565b11156139e957879650613a0d565b60045460008c815260096020526040902054613a0a9163ffffffff61380316565b96505b6000871115613a6f576064613a2b868902601463ffffffff61250816565b811515613a3457fe5b60008d8152600960205260409020600601549190049650613a5c90879063ffffffff612d7316565b60008c8152600960205260409020600601555b600a890493506014890492506064613a8e8a602063ffffffff61250816565b811515613a9757fe5b60008d8152600960205260409020600701549190049250613abf90839063ffffffff612d7316565b60008c8152600960205260409020600701558915613b525760008a8152600c6020526040902060040154613afa90859063ffffffff612d7316565b60008b8152600c6020526040808220600401929092556005549151610100909204600160a060020a0316916108fc86150291869190818181858888f19350505050158015613b4c573d6000803e3d6000fd5b50613ba4565b613b62838563ffffffff612d7316565b6005546040519194506101009004600160a060020a0316906108fc8515029085906000818181858888f19350505050158015613ba2573d6000803e3d6000fd5b505b613bb4898763ffffffff61380316565b90508915613bcf57613bcc818563ffffffff61380316565b90505b613bdf818463ffffffff61380316565b9050613bf1818363ffffffff61380316565b60008c81526009602081905260409091200154909150613c1890829063ffffffff612d7316565b60009b8c52600960208190526040909c20909b019a909a555050505050505050505050565b6000828152600d602090815260408083208484528252808320600201546004546009909352908320600601548392613ca992916139299190811515613c7e57fe5b6000898152600d602090815260408083208b845290915290206004015491900463ffffffff61250816565b915060009050613cb98385613818565b8015613cdd5750600083815260096020526040902060050154600160a060020a0316155b15613d195750600082815260096020526040902060028101546005909101805473ffffffffffffffffffffffffffffffffffffffff1916331790555b6000848152600c6020526040902060030154613d3c90839063ffffffff612d7316565b6000858152600c60205260409020600381019190915560020154613d6790829063ffffffff612d7316565b6000858152600c60209081526040808320600290810194909455600d825280832087845290915290200154613da2908363ffffffff612d7316565b6000948552600d6020908152604080872095875294905292909320600201919091555050565b6000828152600c60205260408120600501548190613de7908590613c3d565b6000848152600c6020526040902060048101546003820154600290920154613e1992612dd4919063ffffffff612d7316565b905082811015613e73576040805160e560020a62461bcd02815260206004820152601260248201527f6561726e696e677320746f6f206c6f7765720000000000000000000000000000604482015290519081900360640190fd5b6000848152600c60205260409020600301548311613ec4576000848152600c6020526040902060030154613ead908463ffffffff61380316565b6000858152600c6020526040902060030155613fa0565b6000848152600c6020526040902060030154613ee790849063ffffffff61380316565b6000858152600c602052604081206003810191909155600401549093508311613f43576000848152600c6020526040902060040154613f2c908463ffffffff61380316565b6000858152600c6020526040902060040155613fa0565b6000848152600c6020526040902060040154613f6690849063ffffffff61380316565b6000858152600c60205260408120600481019190915560020154909350613f8d9084613803565b6000858152600c60205260409020600201555b50929150505600736f7272792068756d616e73206f6e6c793d3d3d3d3d3d3d3d3d3d3d3d3d3d3d736f7272792068756d616e73206f6e6c79206f726967696e00000000000000006e6f742061637469766174650000000000000000000000000000000000000000a165627a7a72305820dacb375c730cf46d347eac5c4f7f697b994121583d295a6d3f266c4566ffe5620029
Deployed Bytecode
0x6080604052600436106101695763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663018a25e8811461036757806306fdde031461038e57806308752869146104185780630a1a677e146104285780630f15f4c01461047057806310f01eba1461047857806324c33d33146104995780632660316e146105185780632e19ebdc146105475780633ccfd60b1461055f5780633ddd46981461057457806349cc635d146105d0578063624ae5c0146105fa578063685ffd831461060f578063747dff421461066257806381617f8f146106d85780638f38f309146106fc5780638f7140ea1461070a57806395d89b4114610725578063a2bccae91461073a578063a3395a5214610780578063a9287619146107a1578063bf02dbcf146107b8578063c7e284b8146107cd578063d53b2679146107e2578063d574bcdf146107f7578063de7874f314610812578063ee0b5d8b14610875575b6007546000908190819081908190600160a060020a03163314806101975750600854600160a060020a031633145b156101a9576101a46108d7565b610360565b6000341115610360573394503285146101fa576040805160e560020a62461bcd0281526020600482015260186024820152600080516020613fc8833981519152604482015290519081900360640190fd5b843b93508315610250576040805160e560020a62461bcd0281526020600482015260226024820152600080516020613fa8833981519152604482015260f060020a613d3d02606482015290519081900360840190fd5b610258610b59565b336000908152600a60205260409020549250610272610df9565b91506000821161028157600080fd5b813481151561028c57fe5b0490506000811161029c57600080fd5b60055460ff161515600114610321576040805160e560020a62461bcd02815260206004820152602a60248201527f697473206e6f74207265616479207965742e2020636f6e746163742061646d6960448201527f6e6973747261746f727300000000000000000000000000000000000000000000606482015290519081900360840190fd5b60035460009081526009602052604081205490540381111561034257600080fd5b6000838152600c602052604090206006015461036090849083610e3f565b5050505050005b34801561037357600080fd5b5061037c610df9565b60408051918252519081900360200190f35b34801561039a57600080fd5b506103a3610f84565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103dd5781810151838201526020016103c5565b50505050905090810190601f16801561040a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610426600435602435610fbb565b005b34801561043457600080fd5b5061043d6111a7565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b6104266108d7565b34801561048457600080fd5b5061037c600160a060020a036004351661120b565b3480156104a557600080fd5b506104b160043561121d565b604080519c8d529a151560208d01528b8b019990995260608b019790975260808a0195909552600160a060020a0390931660a089015260c088019190915260e087015261010086015261012085015261014084015261016083015251908190036101800190f35b34801561052457600080fd5b5061053360043560243561128d565b604080519115158252519081900360200190f35b34801561055357600080fd5b5061037c6004356112ad565b34801561056b57600080fd5b506104266112bf565b6040805160206004803580820135601f810184900484028501840190955284845261042694369492936024939284019190819084018382808284375094975050600160a060020a03853516955050505050602001351515611430565b3480156105dc57600080fd5b50610426600435600160a060020a036024351660443560643561163e565b34801561060657600080fd5b5061037c61182f565b6040805160206004803580820135601f8101849004840285018401909552848452610426943694929360249392840191908190840183828082843750949750508435955050505050602001351515611835565b34801561066e57600080fd5b5061067761196a565b604080519b8c5260208c019a909a528a8a019890985260608a0196909652608089019490945260a088019290925260c087015260e0860152610100850152600160a060020a0316610120840152151561014083015251908190036101600190f35b3480156106e457600080fd5b50610426600435600160a060020a03602435166119ce565b610426600435602435611b86565b34801561071657600080fd5b50610426600435602435611d4d565b34801561073157600080fd5b506103a3611e2a565b34801561074657600080fd5b50610755600435602435611e61565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b34801561078c57600080fd5b5061043d600160a060020a0360043516611e9b565b610426600435600160a060020a0360243516611f07565b3480156107c457600080fd5b5061037c6120f2565b3480156107d957600080fd5b5061037c612134565b3480156107ee57600080fd5b50610533612188565b34801561080357600080fd5b50610426600435602435612191565b34801561081e57600080fd5b5061082a600435612334565b60408051600160a060020a0390991689526020890197909752878701959095526060870193909352608086019190915260a085015260c084015260e083015251908190036101000190f35b34801561088157600080fd5b50610896600160a060020a0360043516612381565b604080519889526020890197909752878701959095526060870193909352608086019190915260a085015260c084015260e083015251908190036101000190f35b33600032821461091f576040805160e560020a62461bcd0281526020600482015260186024820152600080516020613fc8833981519152604482015290519081900360640190fd5b50803b8015610974576040805160e560020a62461bcd0281526020600482015260226024820152600080516020613fa8833981519152604482015260f060020a613d3d02606482015290519081900360840190fd5b600754600160a060020a03163314806109975750600854600160a060020a031633145b15156109a257600080fd5b60055460ff16156109fd576040805160e560020a62461bcd02815260206004820152601b60248201527f4c75636b79436f696e20616c7265616479206163746976617465640000000000604482015290519081900360640190fd5b6002543414610a56576040805160e560020a62461bcd02815260206004820152601b60248201527f61637469766174652067616d65206e6565642031302065746865720000000000604482015290519081900360640190fd5b60035415610acc576003546000908152600960205260409020600881015490541015610acc576040805160e560020a62461bcd02815260206004820152600a60248201527f6e6f626f64792077696e00000000000000000000000000000000000000000000604482015290519081900360640190fd5b6005805460ff191660019081179091556003805490910180825560009081526009602090815260408083204290850181905584548452818420611c20909101600490910155835483529182902034600291909101559154815190815290517fad61e0b8103cd22dd17df2a02217a2c0f2a064c1a486e27d7951d9080963b38d929181900390910190a15050565b336000908152600a60205260408120549080821515610df457604080517fe56556a9000000000000000000000000000000000000000000000000000000008152336004820152905173c87a693dbba31aefb9457683b7d245dad756db889163e56556a99160248083019260209291908290030181600087803b158015610bde57600080fd5b505af1158015610bf2573d6000803e3d6000fd5b505050506040513d6020811015610c0857600080fd5b5051604080517f82e37b2c00000000000000000000000000000000000000000000000000000000815260048101839052905191945073c87a693dbba31aefb9457683b7d245dad756db88916382e37b2c916024808201926020929091908290030181600087803b158015610c7b57600080fd5b505af1158015610c8f573d6000803e3d6000fd5b505050506040513d6020811015610ca557600080fd5b5051604080517fe3c08adf00000000000000000000000000000000000000000000000000000000815260048101869052905191935073c87a693dbba31aefb9457683b7d245dad756db889163e3c08adf916024808201926020929091908290030181600087803b158015610d1857600080fd5b505af1158015610d2c573d6000803e3d6000fd5b505050506040513d6020811015610d4257600080fd5b5051336000818152600a60209081526040808320889055878352600c9091529020805473ffffffffffffffffffffffffffffffffffffffff1916909117905590508115610dcb576000828152600b60209081526040808320869055858352600c82528083206001908101869055600e8352818420868552909252909120805460ff191690911790555b8015801590610dda5750828114155b15610df4576000838152600c602052604090206006018190555b505050565b6003546000908152600960205260408120600201546105dc90606490610e2690609663ffffffff61250816565b811515610e2f57fe5b04811515610e3957fe5b04905090565b600380546000818152600960205260408120909201549091429182118015610e77575060008381526009602052604090206004015482105b15610ed557610e89868486883461253a565b6000805484825260096020526040909120541415610ed05760008381526009602052604090206001818101805460ff1916909117905542600490910155610ece612b0a565b505b610f7c565b60008381526009602052604090206004015482118015610f07575060008381526009602052604090206001015460ff16155b15610f7c5760008381526009602052604090206001908101805460ff19169091179055610f32612b0a565b90508015610f4757610ed0868486883461253a565b6000868152600c6020526040902060030154610f69903463ffffffff612d7316565b6000878152600c60205260409020600301555b505050505050565b60408051808201909152600f81527f4c75636b79436f696e2053757065720000000000000000000000000000000000602082015281565b6000803381328214611005576040805160e560020a62461bcd0281526020600482015260186024820152600080516020613fc8833981519152604482015290519081900360640190fd5b50803b801561105a576040805160e560020a62461bcd0281526020600482015260226024820152600080516020613fa8833981519152604482015260f060020a613d3d02606482015290519081900360840190fd5b34866000611066610df9565b905081810283101561107757600080fd5b69152d02c7e14af680000083111561108e57600080fd5b60035460009081526009602052604081205490548a9190038111156110b257600080fd5b60055460ff1615156110fc576040805160e560020a62461bcd02815260206004820152600c6024820152600080516020613fe8833981519152604482015290519081900360640190fd5b611104610b59565b336000908152600a6020526040902054975088158061113357506000888152600c602052604090206001015489145b15611151576000888152600c60205260409020600601549650611190565b6000898152600b60209081526040808320548b8452600c909252909120600601549097508714611190576000888152600c602052604090206006018790555b61119b88888c610e3f565b50505050505050505050565b336000908152600a6020908152604080832054600380548552600f8452828520918552908352818420848052909252808320546001845281842054600285528285205493855282852054600486528386205460058752939095205491959094929190565b600a6020526000908152604090205481565b600960208190526000918252604090912080546001820154600283015460038401546004850154600586015460068701546007880154600889015499890154600a8a0154600b909a0154989a60ff90981699969895979496600160a060020a03909416959294919391929091908c565b600e60209081526000928352604080842090915290825290205460ff1681565b600b6020526000908152604090205481565b60008080338132821461130a576040805160e560020a62461bcd0281526020600482015260186024820152600080516020613fc8833981519152604482015290519081900360640190fd5b50803b801561135f576040805160e560020a62461bcd0281526020600482015260226024820152600080516020613fa8833981519152604482015260f060020a613d3d02606482015290519081900360840190fd5b336000908152600a6020526040902054429550935061137d84612d83565b92506000831115611429576000848152600c6020526040808220549051600160a060020a039091169185156108fc02918691818181858888f193505050501580156113cc573d6000803e3d6000fd5b506000848152600c60209081526040918290206001015482513381529182015280820185905260608101879052905185917f8f36579a548bc439baa172a6521207464154da77f411e2da3db2f53affe6cc3a919081900360800190a25b5050505050565b60008080808080338132821461147e576040805160e560020a62461bcd0281526020600482015260186024820152600080516020613fc8833981519152604482015290519081900360640190fd5b50803b80156114d3576040805160e560020a62461bcd0281526020600482015260226024820152600080516020613fa8833981519152604482015260f060020a613d3d02606482015290519081900360840190fd5b6114dc8b612e11565b604080517faa4d490b000000000000000000000000000000000000000000000000000000008152336004820181905260248201849052600160a060020a038e1660448301528c151560648301528251939b50995034985073c87a693dbba31aefb9457683b7d245dad756db889263aa4d490b928a926084808201939182900301818588803b15801561156d57600080fd5b505af1158015611581573d6000803e3d6000fd5b50505050506040513d604081101561159857600080fd5b508051602091820151600160a060020a03808b166000818152600a8652604080822054858352600c8852918190208054600190910154825188151581529889018790529416878201526060870193909352608086018c90524260a0870152915193995091975095508a92909186917fdd6176433ff5026bbce96b068584b7bbe3514227e72df9c630b749ae87e64442919081900360c00190a45050505050505050505050565b3373c87a693dbba31aefb9457683b7d245dad756db88146116cf576040805160e560020a62461bcd02815260206004820152602760248201527f796f7572206e6f7420706c617965724e616d657320636f6e74726163742e2e2e60448201527f20686d6d6d2e2e00000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a0383166000908152600a6020526040902054841461170a57600160a060020a0383166000908152600a602052604090208490555b6000828152600b60205260409020548414611731576000828152600b602052604090208490555b6000848152600c6020526040902054600160a060020a03848116911614611787576000848152600c60205260409020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0385161790555b6000848152600c602052604090206001015482146117b4576000848152600c602052604090206001018290555b6000848152600c602052604090206006015481146117e1576000848152600c602052604090206006018190555b6000848152600e6020908152604080832085845290915290205460ff161515611829576000848152600e602090815260408083208584529091529020805460ff191660011790555b50505050565b60035481565b600080808080803381328214611883576040805160e560020a62461bcd0281526020600482015260186024820152600080516020613fc8833981519152604482015290519081900360640190fd5b50803b80156118d8576040805160e560020a62461bcd0281526020600482015260226024820152600080516020613fa8833981519152604482015260f060020a613d3d02606482015290519081900360840190fd5b6118e18b612e11565b604080517f745ea0c1000000000000000000000000000000000000000000000000000000008152336004820181905260248201849052604482018e90528c151560648301528251939b50995034985073c87a693dbba31aefb9457683b7d245dad756db889263745ea0c1928a926084808201939182900301818588803b15801561156d57600080fd5b600380546000818152600960208190526040909120805493810154600482015460028301549383015460088401546006850154600b8601546005870154600190970154989a95989497969395929491939092600160a060020a039091169160ff1690565b6000803381328214611a18576040805160e560020a62461bcd0281526020600482015260186024820152600080516020613fc8833981519152604482015290519081900360640190fd5b50803b8015611a6d576040805160e560020a62461bcd0281526020600482015260226024820152600080516020613fa8833981519152604482015260f060020a613d3d02606482015290519081900360840190fd5b60055460ff161515611ab7576040805160e560020a62461bcd02815260206004820152600c6024820152600080516020613fe8833981519152604482015290519081900360640190fd5b600354600090815260096020526040812054905487919003811115611adb57600080fd5b336000908152600a60205260409020549450600160a060020a0386161580611b0b5750600160a060020a03861633145b15611b29576000858152600c60205260409020600601549350611b72565b600160a060020a0386166000908152600a6020908152604080832054888452600c909252909120600601549094508414611b72576000858152600c602052604090206006018490555b611b7d858589613624565b50505050505050565b60003381328214611bcf576040805160e560020a62461bcd0281526020600482015260186024820152600080516020613fc8833981519152604482015290519081900360640190fd5b50803b8015611c24576040805160e560020a62461bcd0281526020600482015260226024820152600080516020613fa8833981519152604482015260f060020a613d3d02606482015290519081900360840190fd5b34856000611c30610df9565b9050818102831015611c4157600080fd5b69152d02c7e14af6800000831115611c5857600080fd5b600354600090815260096020526040812054905489919003811115611c7c57600080fd5b60055460ff161515611cc6576040805160e560020a62461bcd02815260206004820152600c6024820152600080516020613fe8833981519152604482015290519081900360640190fd5b611cce610b59565b336000908152600a60205260409020549650871580611cec57508688145b15611d0a576000878152600c60205260409020600601549750611d37565b6000878152600c60205260409020600601548814611d37576000878152600c602052604090206006018890555b611d4287898b610e3f565b505050505050505050565b3373c87a693dbba31aefb9457683b7d245dad756db8814611dde576040805160e560020a62461bcd02815260206004820152602760248201527f796f7572206e6f7420706c617965724e616d657320636f6e74726163742e2e2e60448201527f20686d6d6d2e2e00000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6000828152600e6020908152604080832084845290915290205460ff161515611e26576000828152600e602090815260408083208484529091529020805460ff191660011790555b5050565b60408051808201909152600981527f4c75636b79436f696e0000000000000000000000000000000000000000000000602082015281565b600d602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b600160a060020a03166000908152600a6020908152604080832054600380548552600f8452828520918552908352818420848052909252808320546001845281842054600285528285205493855282852054600486528386205460058752939095205491959094929190565b6000803381328214611f51576040805160e560020a62461bcd0281526020600482015260186024820152600080516020613fc8833981519152604482015290519081900360640190fd5b50803b8015611fa6576040805160e560020a62461bcd0281526020600482015260226024820152600080516020613fa8833981519152604482015260f060020a613d3d02606482015290519081900360840190fd5b34866000611fb2610df9565b9050818102831015611fc357600080fd5b69152d02c7e14af6800000831115611fda57600080fd5b60035460009081526009602052604081205490548a919003811115611ffe57600080fd5b60055460ff161515612048576040805160e560020a62461bcd02815260206004820152600c6024820152600080516020613fe8833981519152604482015290519081900360640190fd5b612050610b59565b336000908152600a60205260409020549650600160a060020a03891615806120805750600160a060020a03891633145b1561209e576000878152600c602052604090206006015497506120e7565b600160a060020a0389166000908152600a60209081526040808320548a8452600c9092529091206006015490985088146120e7576000878152600c602052604090206006018890555b61119b87898c610e3f565b60008054604080514481524260208201526c01000000000000000000000000410281830152905190819003605401902081151561212b57fe5b06600101905090565b600354600081815260096020526040812060040154909190429081101561217e57600082815260096020526040902060040154612177908263ffffffff61380316565b9250612183565b600092505b505090565b60055460ff1681565b60008033813282146121db576040805160e560020a62461bcd0281526020600482015260186024820152600080516020613fc8833981519152604482015290519081900360640190fd5b50803b8015612230576040805160e560020a62461bcd0281526020600482015260226024820152600080516020613fa8833981519152604482015260f060020a613d3d02606482015290519081900360840190fd5b60055460ff16151561227a576040805160e560020a62461bcd02815260206004820152600c6024820152600080516020613fe8833981519152604482015290519081900360640190fd5b60035460009081526009602052604081205490548791900381111561229e57600080fd5b336000908152600a602052604090205494508515806122cd57506000858152600c602052604090206001015486145b156122eb576000858152600c60205260409020600601549350611b72565b6000868152600b6020908152604080832054888452600c909252909120600601549094508414611b72576000858152600c60205260409020600601849055611b7d858589613624565b600c6020526000908152604090208054600182015460028301546003840154600485015460058601546006870154600790970154600160a060020a03909616969495939492939192909188565b6000806000806000806000806000806000806003549350505050600160a060020a038a166000908152600a6020908152604080832054808452600c90925282206005015490916123d18284613818565b80156123f55750600082815260096020526040902060050154600160a060020a0316155b1561240e57506000818152600960205260409020600201545b6000838152600c60208181526040808420600180820154600d85528387208b8852855292862001549488905292909152600290910154859290612457908563ffffffff612d7316565b61248261246488886138c1565b6000898152600c60205260409020600301549063ffffffff612d7316565b600c600089815260200190815260200160002060040154600d60008a815260200190815260200160002060008b815260200190815260200160002060000154600d60008b815260200190815260200160002060008c8152602001908152602001600020600301549b509b509b509b509b509b509b509b5050505050919395975091939597565b600082151561251957506000612534565b5081810281838281151561252957fe5b041461253457600080fd5b92915050565b6000858152600d60209081526040808320600354845290915281206001015481908190819015156125af5761256e89613935565b600380546000908152600960209081526040808320600b01805460019081019091558a8452600d835281842085548552909252909120909101805490910190555b600354600090815260096020526040902054600154909450848115156125d157fe5b046001546001898701038115156125e457fe5b04039250600154848115156125f557fe5b0491508215156126ef5760015487850181151561260e57fe5b06151561267d576003546000908152600f602090815260408083208c845282528083208584529091529020546001546126539190808781151561264d57fe5b06613981565b6003546000908152600f602090815260408083208d845282528083208684529091529020556126ea565b6003546000908152600f602090815260408083208c845282528083208584529091529020546001546126c49190868a018115156126b657fe5b066001548781151561264d57fe5b6003546000908152600f602090815260408083208d845282528083208684529091529020555b6128c6565b5060005b826001018110156128c657801515612767576003546000908152600f602090815260408083208c84528252808320858501845290915290205460015461273f9190808781151561264d57fe5b6003546000908152600f602090815260408083208d8452825280832086860184529091529020555b60008111801561277657508281105b156127d6576003546000908152600f602090815260408083208c8452825280832085850184529091528120546001546127ae92613981565b6003546000908152600f602090815260408083208d8452825280832086860184529091529020555b828114156128be576001548785018115156127ed57fe5b061515612853576003546000908152600f602090815260408083208c84528252808320858501845290915281205460015461282792613981565b6003546000908152600f602090815260408083208d8452825280832086860184529091529020556128be565b6003546000908152600f602090815260408083208c8452825280832085850184529091529020546001546128969190868a0181151561288e57fe5b066000613981565b6003546000908152600f602090815260408083208d8452825280832086860184529091529020555b6001016126f3565b60045460035460009081526009602052604090205410156129bd5760045460035460009081526009602052604090205461290790899063ffffffff612d7316565b11612960576000898152600d60209081526040808320600354845290915290206004015461293c90889063ffffffff612d7316565b60008a8152600d6020908152604080832060035484529091529020600401556129bd565b6000898152600d60209081526040808320600354845282528083206004908101546009909352922054915461299d9290039063ffffffff612d7316565b60008a8152600d6020908152604080832060035484529091529020600401555b6003546000908152600960205260409020546129e090889063ffffffff612d7316565b600380546000908152600960209081526040808320949094558c8252600d815283822092548252919091522060010154612a2190889063ffffffff612d7316565b60008a8152600d602090815260408083206003805485529252808320600101939093555481522054612a54908690612d73565b60008a8152600d6020908152604080832060038054855290835281842094909455835483526009909152902043600a9091015554612a96908a9088888b61398e565b60035460008a8152600c60209081526040918290206001908101548351338152918901928201929092528a88018184015260608101939093526080830152517f5ddced682e01b0b0d834f68b7a992537d4f99d8759ebb95221c23edde4dc87409181900360a00190a1505050505050505050565b6003546000908180612b1a6120f2565b6000848152600960205260408120600881018390555490925010612c2257600083815260096020819052604090912090810154600790910154612b629163ffffffff612d7316565b91506000821115612c1d57600654604051600160a060020a039091169083156108fc029084906000818181858888f19350505050158015612ba7573d6000803e3d6000fd5b506005805460ff19169055600083815260096020908152604080832080546008820154600290920154835189815294850191909152838301949094526060830152608082019290925290517f1d5e2e0a933eb9e711e45060f379b1d32c37bb79fc1458b852cf9d1e460ad30d9181900360a00190a15b612d6c565b6000838152600960205260408120600701549250821115612c7957600654604051600160a060020a039091169083156108fc029084906000818181858888f19350505050158015612c77573d6000803e3d6000fd5b505b600380546001908101825593909301600081815260096020526040902042940184905592612caf90611c2063ffffffff612d7316565b6000848152600960208190526040808320600401939093556000198601825291902090810154600290910154612cea9163ffffffff612d7316565b6000848152600960209081526040808320600290810194909455600019870180845281842080546008820154919096015483519283529382019590955280820193909352606083019390935260808201529051600192507f1d5e2e0a933eb9e711e45060f379b1d32c37bb79fc1458b852cf9d1e460ad30d9181900360a00190a15b9392505050565b8181018281101561253457600080fd5b6000818152600c60205260408120600501548190612da2908490613c3d565b6000838152600c6020526040902060048101546003820154600290920154612de092612dd4919063ffffffff612d7316565b9063ffffffff612d7316565b90506000811115612534576000838152600c6020526040812060028101829055600381018290556004015592915050565b8051600090829082808060208411801590612e2c5750600084115b1515612ea8576040805160e560020a62461bcd02815260206004820152602a60248201527f737472696e67206d757374206265206265747765656e203120616e642033322060448201527f6368617261637465727300000000000000000000000000000000000000000000606482015290519081900360840190fd5b846000815181101515612eb757fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a0214158015612f1e57508460018503815181101515612ef657fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a0214155b1515612f9a576040805160e560020a62461bcd02815260206004820152602560248201527f737472696e672063616e6e6f74207374617274206f7220656e6420776974682060448201527f7370616365000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b846000815181101515612fa957fe5b90602001015160f860020a900460f860020a02600160f860020a031916603060f860020a0214156130ec57846001815181101515612fe357fe5b90602001015160f860020a900460f860020a02600160f860020a031916607860f860020a0214151515613060576040805160e560020a62461bcd02815260206004820152601b60248201527f737472696e672063616e6e6f7420737461727420776974682030780000000000604482015290519081900360640190fd5b84600181518110151561306f57fe5b90602001015160f860020a900460f860020a02600160f860020a031916605860f860020a02141515156130ec576040805160e560020a62461bcd02815260206004820152601b60248201527f737472696e672063616e6e6f7420737461727420776974682030580000000000604482015290519081900360640190fd5b600091505b838210156135bc5784517f40000000000000000000000000000000000000000000000000000000000000009086908490811061312957fe5b90602001015160f860020a900460f860020a02600160f860020a03191611801561319d575084517f5b000000000000000000000000000000000000000000000000000000000000009086908490811061317e57fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b1561320a5784828151811015156131b057fe5b90602001015160f860020a900460f860020a0260f860020a900460200160f860020a0285838151811015156131e157fe5b906020010190600160f860020a031916908160001a90535082151561320557600192505b6135b1565b848281518110151561321857fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a0214806132e8575084517f60000000000000000000000000000000000000000000000000000000000000009086908490811061327457fe5b90602001015160f860020a900460f860020a02600160f860020a0319161180156132e8575084517f7b00000000000000000000000000000000000000000000000000000000000000908690849081106132c957fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b80613392575084517f2f000000000000000000000000000000000000000000000000000000000000009086908490811061331e57fe5b90602001015160f860020a900460f860020a02600160f860020a031916118015613392575084517f3a000000000000000000000000000000000000000000000000000000000000009086908490811061337357fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b151561340e576040805160e560020a62461bcd02815260206004820152602260248201527f737472696e6720636f6e7461696e7320696e76616c696420636861726163746560448201527f7273000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b848281518110151561341c57fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a0214156134fb57848260010181518110151561345857fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a02141515156134fb576040805160e560020a62461bcd02815260206004820152602860248201527f737472696e672063616e6e6f7420636f6e7461696e20636f6e7365637574697660448201527f6520737061636573000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b821580156135a7575084517f30000000000000000000000000000000000000000000000000000000000000009086908490811061353457fe5b90602001015160f860020a900460f860020a02600160f860020a03191610806135a7575084517f39000000000000000000000000000000000000000000000000000000000000009086908490811061358857fe5b90602001015160f860020a900460f860020a02600160f860020a031916115b156135b157600192505b6001909101906130f1565b600183151514613616576040805160e560020a62461bcd02815260206004820152601d60248201527f737472696e672063616e6e6f74206265206f6e6c79206e756d62657273000000604482015290519081900360640190fd5b505050506020015192915050565b60055460009081908190819060ff161515613677576040805160e560020a62461bcd02815260206004820152600c6024820152600080516020613fe8833981519152604482015290519081900360640190fd5b60038054600081815260096020526040902090910154909450429350831180156136b1575060008481526009602052604090206004015483105b80156136cf575060008481526009602052604090206001015460ff16155b15613752576136ec856136e0610df9565b9063ffffffff61250816565b91506136f88783613dc8565b50613706878587898661253a565b600080548582526009602052604090912054141561374d5760008481526009602052604090206001818101805460ff191690911790554260049091015561374b612b0a565b505b611b7d565b60008481526009602052604090206004015483118015613784575060008481526009602052604090206001015460ff16155b15611b7d5760008481526009602052604090206001908101805460ff191690911790556137af612b0a565b905080156137c65761374d8760035487893461253a565b6000878152600c60205260409020600301546137e8903463ffffffff612d7316565b6000888152600c602052604090206003015550505050505050565b60008282111561381257600080fd5b50900390565b6000806000600154600160096000888152602001908152602001600020600801540381151561384357fe5b049150600154600960008781526020019081526020016000206008015481151561386957fe5b06905080151561387857506001545b6000858152600f602090815260408083208784528252808320858452909152902054600019820160020a90811614156138b457600192506138b9565b600092505b505092915050565b6000828152600d60209081526040808320848452825280832060020154600454600990935290832060060154612d6c92613929918115156138fe57fe5b6000888152600d602090815260408083208a845290915290206004015491900463ffffffff61250816565b9063ffffffff61380316565b6000818152600c602052604090206005015415613969576000818152600c6020526040902060050154613969908290613c3d565b6003546000918252600c602052604090912060050155565b600290810a91900a031890565b600080808080808061399e610df9565b60045460008d8152600960205260409020549196501015613a0d5760045460008c8152600960205260409020546139db908a63ffffffff61380316565b11156139e957879650613a0d565b60045460008c815260096020526040902054613a0a9163ffffffff61380316565b96505b6000871115613a6f576064613a2b868902601463ffffffff61250816565b811515613a3457fe5b60008d8152600960205260409020600601549190049650613a5c90879063ffffffff612d7316565b60008c8152600960205260409020600601555b600a890493506014890492506064613a8e8a602063ffffffff61250816565b811515613a9757fe5b60008d8152600960205260409020600701549190049250613abf90839063ffffffff612d7316565b60008c8152600960205260409020600701558915613b525760008a8152600c6020526040902060040154613afa90859063ffffffff612d7316565b60008b8152600c6020526040808220600401929092556005549151610100909204600160a060020a0316916108fc86150291869190818181858888f19350505050158015613b4c573d6000803e3d6000fd5b50613ba4565b613b62838563ffffffff612d7316565b6005546040519194506101009004600160a060020a0316906108fc8515029085906000818181858888f19350505050158015613ba2573d6000803e3d6000fd5b505b613bb4898763ffffffff61380316565b90508915613bcf57613bcc818563ffffffff61380316565b90505b613bdf818463ffffffff61380316565b9050613bf1818363ffffffff61380316565b60008c81526009602081905260409091200154909150613c1890829063ffffffff612d7316565b60009b8c52600960208190526040909c20909b019a909a555050505050505050505050565b6000828152600d602090815260408083208484528252808320600201546004546009909352908320600601548392613ca992916139299190811515613c7e57fe5b6000898152600d602090815260408083208b845290915290206004015491900463ffffffff61250816565b915060009050613cb98385613818565b8015613cdd5750600083815260096020526040902060050154600160a060020a0316155b15613d195750600082815260096020526040902060028101546005909101805473ffffffffffffffffffffffffffffffffffffffff1916331790555b6000848152600c6020526040902060030154613d3c90839063ffffffff612d7316565b6000858152600c60205260409020600381019190915560020154613d6790829063ffffffff612d7316565b6000858152600c60209081526040808320600290810194909455600d825280832087845290915290200154613da2908363ffffffff612d7316565b6000948552600d6020908152604080872095875294905292909320600201919091555050565b6000828152600c60205260408120600501548190613de7908590613c3d565b6000848152600c6020526040902060048101546003820154600290920154613e1992612dd4919063ffffffff612d7316565b905082811015613e73576040805160e560020a62461bcd02815260206004820152601260248201527f6561726e696e677320746f6f206c6f7765720000000000000000000000000000604482015290519081900360640190fd5b6000848152600c60205260409020600301548311613ec4576000848152600c6020526040902060030154613ead908463ffffffff61380316565b6000858152600c6020526040902060030155613fa0565b6000848152600c6020526040902060030154613ee790849063ffffffff61380316565b6000858152600c602052604081206003810191909155600401549093508311613f43576000848152600c6020526040902060040154613f2c908463ffffffff61380316565b6000858152600c6020526040902060040155613fa0565b6000848152600c6020526040902060040154613f6690849063ffffffff61380316565b6000858152600c60205260408120600481019190915560020154909350613f8d9084613803565b6000858152600c60205260409020600201555b50929150505600736f7272792068756d616e73206f6e6c793d3d3d3d3d3d3d3d3d3d3d3d3d3d3d736f7272792068756d616e73206f6e6c79206f726967696e00000000000000006e6f742061637469766174650000000000000000000000000000000000000000a165627a7a72305820dacb375c730cf46d347eac5c4f7f697b994121583d295a6d3f266c4566ffe5620029
Swarm Source
bzzr://dacb375c730cf46d347eac5c4f7f697b994121583d295a6d3f266c4566ffe562
Loading...
Loading
Loading...
Loading
Net Worth in USD
$3,554.90
Net Worth in ETH
1.704192
Token Allocations
ETH
100.00%
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ETH | 100.00% | $2,085.97 | 1.7042 | $3,554.9 |
Loading...
Loading
Loading...
Loading
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.