Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
480,511.2858673729 F2M2
Holders
1,410
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 10 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
F2m
Compiler Version
v0.4.25+commit.59dbf8f1
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2019-03-21 */ pragma solidity ^0.4.24; /* * gibmireinbier - Full Stack Blockchain Developer * 0xA4a799086aE18D7db6C4b57f496B081b44888888 * [email protected] */ /* CHANGELOGS: . Round 0: 10% bonus for old invester (with limit based on total dividends income in version 1) -- REMOVED by Seizo . Round 0: start price 0.0014 ether, Min. duration 3 days, 30% to Pot, 70% hold for token selling -- REMOVED by Seizo . Round 0: premine function, claim free tokens based on F2M v1 Dividends -- REMOVED by Seizo . BEFORE_SLEEP_DURAION = 30 * ONE_DAY ( Last round must be greater than 28) BUGS FIXED: . SwapToken function : update credit after tokens selling . Referral by token reinvest . Tokenholders tracking on etherscan (emit transfer in mint-, burn-token functions) */ contract F2m{ using SafeMath for *; modifier onlyTokenHolders() { require(balances[msg.sender] > 0, "not own any token"); _; } modifier onlyAdmin(){ require(msg.sender == devTeam, "admin required"); _; } modifier withdrawRight(){ require((msg.sender == address(bankContract)), "Bank Only"); _; } modifier swapNotActived() { require(swapActived == false, "swap actived, stop minting new tokens"); _; } modifier buyable() { require(buyActived == true, "token sale not ready"); _; } // modifier premineable() { // require(buyActived == false && investedAmount == 0, "token sale already"); // _; // } /*============================== = EVENTS = ==============================*/ // ERC20 event Transfer(address indexed from, address indexed to, uint tokens); event Approval(address indexed tokenOwner, address indexed spender, uint tokens); /*===================================== = ERC20 = =====================================*/ uint256 public totalSupply; string public name; string public symbol; uint32 public decimals; uint256 public unitRate; // Balances for each account mapping(address => uint256) balances; // Owner of account approves the transfer of an amount to another account mapping(address => mapping (address => uint256)) allowed; /*================================ = DATASETS = ================================*/ CitizenInterface public citizenContract; LotteryInterface public lotteryContract; BankInterface public bankContract; NewTokenInterface public newTokenContract; WhitelistInterface public whitelistContract; uint256 constant public ONE_HOUR= 3600; uint256 constant public ONE_DAY = 24 * ONE_HOUR; // seconds // uint256 constant public FIRST_POT_MAXIMUM = 200 ether; // uint256 constant public ROUND0_MIN_DURATION = 3 * ONE_DAY; // minimum uint256 constant public BEFORE_SLEEP_DURAION = 30 * ONE_DAY; uint256 public HARD_TOTAL_SUPPLY = 8000000; uint256 public refPercent = 15; uint256 public divPercent = 10; uint256 public fundPercent = 2; // uint256 public potPercent = 30; // set to 0 in func disableRound0() //Start Price uint256 public startPrice = 0.0014 ether; //Most Tolerable Break-Even Period (MTBEP) uint256 constant public BEP = 30; // amount of shares for each address (scaled number) mapping(address => int256) public credit; mapping(address => uint256) public withdrawnAmount; mapping(address => uint256) public fromSellingAmount; mapping(address => uint256) public lastActiveDay; mapping(address => int256) public todayCredit; mapping(address => uint256) public pInvestedSum; uint256 public investedAmount; uint256 public totalBuyVolume; uint256 public totalSellVolume; uint256 public totalDividends; mapping(uint256 => uint256) public totalDividendsByRound; //Profit Per Share uint256 public pps = 0; //log by round mapping(uint256 => uint256) rPps; mapping(address => mapping (uint256 => int256)) rCredit; // uint256 public deployedTime; uint256 public deployedDay; // on/off auto buy Token bool public autoBuy = false; bool public round0 = false; //raise for first round //pps added in day mapping(uint256 => uint256) public ppsInDay; //Avarage pps in a day mapping(uint256 => uint256) public divInDay; mapping(uint256 => uint256) public totalBuyVolumeInDay; mapping(uint256 => uint256) public totalSellVolumeInDay; address public devTeam; //Smart contract address uint256 public swapTime; bool public swapActived = false; bool public buyActived = false; /*======================================= = PUBLIC FUNCTIONS = =======================================*/ constructor (address _devTeam) public { symbol = "F2M2"; name = "Fomo2Moon2"; decimals = 10; unitRate = 10**uint256(decimals); HARD_TOTAL_SUPPLY = HARD_TOTAL_SUPPLY * unitRate; DevTeamInterface(_devTeam).setF2mAddress(address(this)); devTeam = _devTeam; // manuell airdrops to old investers uint256 _amount = 500000 * unitRate; totalSupply += _amount; balances[devTeam] = _amount; emit Transfer(0x0, devTeam, _amount); deployedDay = getToday(); } // function premine() // public // premineable() // { // address _sender = msg.sender; // require(balances[_sender] == 0, "already claimed"); // uint256 _amount = whitelistContract.getPremintAmount(_sender); // totalSupply += _amount; // balances[_sender] = _amount; // emit Transfer(0x0, _sender, _amount); // } // _contract = [f2mAddress, bankAddress, citizenAddress, lotteryAddress, rewardAddress, whitelistAddress]; function joinNetwork(address[6] _contract) public { require(address(citizenContract) == 0x0, "already setup"); bankContract = BankInterface(_contract[1]); citizenContract = CitizenInterface(_contract[2]); lotteryContract = LotteryInterface(_contract[3]); whitelistContract = WhitelistInterface(_contract[5]); } function() public payable { // Thanks for Donation } // one time called, manuell called in case not reached 360ETH for totalPot /* function disableRound0() public onlyAdmin() { require(buyActived && block.timestamp > ROUND0_MIN_DURATION.add(deployedTime), "too early to disable Round0"); firstRoundPrepare(); } */ function activeBuy() public onlyAdmin() { require(buyActived == false, "already actived"); buyActived = true; deployedDay = getToday(); } // Dividends from all sources (DApps, Donate ...) function pushDividends() public payable { // shared to fund and dividends only uint256 ethAmount = msg.value; uint256 dividends = ethAmount * divPercent / (divPercent + fundPercent); uint256 fund = ethAmount.sub(dividends); uint256 _buyPrice = getBuyPrice(); // distributeTax(msg.sender, fund, dividends, 0, 0); distributeTax(msg.sender, fund, dividends, 0); if (autoBuy) devTeamAutoBuy(0, _buyPrice); } function addFund(uint256 _fund) private { credit[devTeam] = credit[devTeam].sub(int256(_fund)); } function addDividends(uint256 _dividends) private { if (_dividends == 0) return; totalDividends += _dividends; uint256 today = getToday(); divInDay[today] = _dividends.add(divInDay[today]); if (totalSupply == 0) { addFund(_dividends); } else { // increased profit with each token // gib mir n bier addFund(_dividends % totalSupply); uint256 deltaShare = _dividends / totalSupply; pps = pps.add(deltaShare); // logs uint256 curRoundId = getCurRoundId(); rPps[curRoundId] += deltaShare; totalDividendsByRound[curRoundId] += _dividends; ppsInDay[today] = deltaShare + ppsInDay[today]; } } function addToRef(address _sender, uint256 _toRef) private { if (_toRef == 0) return; citizenContract.pushRefIncome.value(_toRef)(_sender); } /* function addToPot(uint256 _toPot) private { if (_toPot == 0) return; lotteryContract.pushToPot.value(_toPot)(); uint256 _totalPot = lotteryContract.getTotalPot(); // auto disable Round0 if reached 360ETH for first round if (_totalPot >= FIRST_POT_MAXIMUM) { firstRoundPrepare(); } } */ /* function firstRoundPrepare() private { round0 = false; potPercent = 0; refPercent = 15; divPercent = 10; fundPercent = 2; startPrice = 0.002; } */ function distributeTax( address _sender, uint256 _fund, uint256 _dividends, uint256 _toRef) // uint256 _toPot) private { addFund(_fund); addDividends(_dividends); addToRef(_sender, _toRef); //addToPot(_toPot); } function updateCredit(address _owner, uint256 _currentEthAmount, uint256 _rDividends, uint256 _todayDividends) private { // basicly to keep ethBalance not changed, after token balances changed (minted or burned) // ethBalance = pps * tokens -credit uint256 curRoundId = getCurRoundId(); credit[_owner] = int256(pps.mul(balances[_owner])).sub(int256(_currentEthAmount)); // logs rCredit[_owner][curRoundId] = int256(rPps[curRoundId] * balances[_owner]) - int256(_rDividends); todayCredit[_owner] = int256(ppsInDay[getToday()] * balances[_owner]) - int256(_todayDividends); } function mintToken(address _buyer, uint256 _taxedAmount, uint256 _buyPrice) private swapNotActived() buyable() returns(uint256) { uint256 revTokens = ethToToken(_taxedAmount, _buyPrice); investedAmount = investedAmount.add(_taxedAmount); // lottery ticket buy could be blocked without this // the 1% from ticket buy will increases tokenSellPrice when totalSupply capped if (revTokens + totalSupply > HARD_TOTAL_SUPPLY) revTokens = HARD_TOTAL_SUPPLY.sub(totalSupply); balances[_buyer] = balances[_buyer].add(revTokens); totalSupply = totalSupply.add(revTokens); emit Transfer(0x0, _buyer, revTokens); return revTokens; } function burnToken(address _seller, uint256 _tokenAmount) private returns (uint256) { require(balances[_seller] >= _tokenAmount, "not enough to burn"); uint256 revEthAmount = tokenToEth(_tokenAmount); investedAmount = investedAmount.sub(revEthAmount); balances[_seller] = balances[_seller].sub(_tokenAmount); totalSupply = totalSupply.sub(_tokenAmount); emit Transfer(_seller, 0x0, _tokenAmount); return revEthAmount; } function devTeamAutoBuy(uint256 _reserved, uint256 _buyPrice) private { uint256 _refClaim = citizenContract.devTeamReinvest(); credit[devTeam] -= int256(_refClaim); uint256 _ethAmount = ethBalance(devTeam); if ((_ethAmount + _reserved) / _buyPrice + totalSupply > HARD_TOTAL_SUPPLY) return; uint256 _rDividends = getRDividends(devTeam); uint256 _todayDividends = getTodayDividendsByAddress(devTeam); mintToken(devTeam, _ethAmount, _buyPrice); updateCredit(devTeam, 0, _rDividends, _todayDividends); } function buy() public payable { address _buyer = msg.sender; buyFor(_buyer); } /* function checkLimit(address _buyer) private view { require(!round0 || !whitelistContract.isLimited(_buyer, pInvestedSum[_buyer]), "Limited"); } */ function buyFor(address _buyer) public payable { //ADD Round0 WHITE LIST // tax = fund + dividends + toRef + toPot; updateLastActive(_buyer); uint256 _buyPrice = getBuyPrice(); uint256 ethAmount = msg.value; pInvestedSum[_buyer] += ethAmount; // checkLimit(_buyer); uint256 onePercent = ethAmount / 100; uint256 fund = onePercent.mul(fundPercent); uint256 dividends = onePercent.mul(divPercent); uint256 toRef = onePercent.mul(refPercent); // uint256 toPot = onePercent.mul(potPercent); // uint256 tax = fund + dividends + toRef + toPot; uint256 tax = fund + dividends + toRef; uint256 taxedAmount = ethAmount.sub(tax); totalBuyVolume = totalBuyVolume + ethAmount; totalBuyVolumeInDay[getToday()] += ethAmount; // distributeTax(_buyer, fund, dividends, toRef, toPot); distributeTax(_buyer, fund, dividends, toRef); if (autoBuy) devTeamAutoBuy(taxedAmount, _buyPrice); uint256 curEthBalance = ethBalance(_buyer); uint256 _rDividends = getRDividends(_buyer); uint256 _todayDividends = getTodayDividendsByAddress(_buyer); mintToken(_buyer, taxedAmount, _buyPrice); updateCredit(_buyer, curEthBalance, _rDividends, _todayDividends); } function sell(uint256 _tokenAmount) public onlyTokenHolders() { // tax = fund only updateLastActive(msg.sender); address seller = msg.sender; uint256 curEthBalance = ethBalance(seller); uint256 _rDividends = getRDividends(seller); uint256 _todayDividends = getTodayDividendsByAddress(seller); uint256 ethAmount = burnToken(seller, _tokenAmount); uint256 fund = ethAmount.mul(fundPercent) / 100; uint256 taxedAmount = ethAmount.sub(fund); totalSellVolume = totalSellVolume + ethAmount; totalSellVolumeInDay[getToday()] += ethAmount; curEthBalance = curEthBalance.add(taxedAmount); fromSellingAmount[seller] += taxedAmount; updateCredit(seller, curEthBalance, _rDividends, _todayDividends); // distributeTax(msg.sender, fund, 0, 0, 0); distributeTax(msg.sender, fund, 0, 0); } function devTeamWithdraw() public returns(uint256) { address sender = msg.sender; require(sender == devTeam, "dev. Team only"); uint256 amount = ethBalance(sender); if (amount == 0) return 0; credit[sender] += int256(amount); withdrawnAmount[sender] = amount.add(withdrawnAmount[sender]); devTeam.transfer(amount); return amount; } function withdrawFor(address sender) public withdrawRight() returns(uint256) { uint256 amount = ethBalance(sender); if (amount == 0) return 0; credit[sender] = credit[sender].add(int256(amount)); withdrawnAmount[sender] = amount.add(withdrawnAmount[sender]); bankContract.pushToBank.value(amount)(sender); return amount; } function updateAllowed(address _from, address _to, uint256 _tokenAmount) private { require(balances[_from] >= _tokenAmount, "not enough to transfer"); if (_from != msg.sender) allowed[_from][_to] = allowed[_from][_to].sub(_tokenAmount); } function transferFrom(address _from, address _to, uint256 _tokenAmount) public returns(bool) { updateAllowed(_from, _to, _tokenAmount); updateLastActive(_from); updateLastActive(_to); uint256 curEthBalance_from = ethBalance(_from); uint256 _rDividends_from = getRDividends(_from); uint256 _todayDividends_from = getTodayDividendsByAddress(_from); uint256 curEthBalance_to = ethBalance(_to); uint256 _rDividends_to = getRDividends(_to); uint256 _todayDividends_to = getTodayDividendsByAddress(_to); uint256 taxedTokenAmount = _tokenAmount; balances[_from] -= taxedTokenAmount; balances[_to] += taxedTokenAmount; updateCredit(_from, curEthBalance_from, _rDividends_from, _todayDividends_from); updateCredit(_to, curEthBalance_to, _rDividends_to, _todayDividends_to); // fire event emit Transfer(_from, _to, taxedTokenAmount); return true; } function transfer(address _to, uint256 _tokenAmount) public returns (bool) { transferFrom(msg.sender, _to, _tokenAmount); return true; } function approve(address spender, uint tokens) public returns (bool success) { allowed[msg.sender][spender] = tokens; emit Approval(msg.sender, spender, tokens); return true; } function updateLastActive(address _sender) private { if (lastActiveDay[_sender] != getToday()) { lastActiveDay[_sender] = getToday(); todayCredit[_sender] = 0; } } /*---------- ADMINISTRATOR ONLY FUNCTIONS ----------*/ function setAutoBuy() public onlyAdmin() { autoBuy = !autoBuy; } /*---------- HELPERS AND CALCULATORS ----------*/ function totalEthBalance() public view returns(uint256) { return address(this).balance; } function ethBalance(address _address) public view returns(uint256) { return (uint256) ((int256)(pps.mul(balances[_address])).sub(credit[_address])); } function getTotalDividendsByAddress(address _invester) public view returns(uint256) { return (ethBalance(_invester)) + (withdrawnAmount[_invester]) - (fromSellingAmount[_invester]); } function getTodayDividendsByAddress(address _invester) public view returns(uint256) { int256 _todayCredit = (getToday() == lastActiveDay[_invester]) ? todayCredit[_invester] : 0; return (uint256) ((int256)(ppsInDay[getToday()] * balances[_invester]) - _todayCredit); } /*========================================== = public FUNCTIONS = ==========================================*/ /** * Return the sell price of 1 individual token. */ function getSellPrice() public view returns(uint256) { if (totalSupply == 0) { return 0; } else { return investedAmount / totalSupply; } } function getSellPriceAfterTax() public view returns(uint256) { uint256 _sellPrice = getSellPrice(); uint256 taxPercent = fundPercent; return _sellPrice * (100 - taxPercent) / 100; } /** * Return the buy price of 1 individual token. * Start Price + (7-day Average Dividend Payout) x BEP x HARD_TOTAL_SUPPLY / (Total No. of Circulating Tokens) / (HARD_TOTAL_SUPPLY - Total No. of Circulating Tokens + 1) */ function getBuyPrice() public view returns(uint256) { // average profit per share of a day in week // uint256 taxPercent = fundPercent + potPercent + divPercent + refPercent; uint256 taxPercent = fundPercent + divPercent + refPercent; //if (round0) return startPrice * (100 - taxPercent) / 100 / unitRate; uint256 avgPps = getAvgPps(); uint256 _sellPrice = getSellPrice(); uint256 _buyPrice = (startPrice / unitRate + avgPps * BEP * HARD_TOTAL_SUPPLY / (HARD_TOTAL_SUPPLY + unitRate - totalSupply)) * (100 - taxPercent) / 100; uint256 _min = _sellPrice * 14 / 10; if (_buyPrice < _min) return _min; return _buyPrice; } function getBuyPriceAfterTax() public view returns(uint256) { // average profit per share of a day in week uint256 _buyPrice = getBuyPrice(); // uint256 taxPercent = fundPercent + potPercent + divPercent + refPercent; uint256 taxPercent = fundPercent + divPercent + refPercent; return _buyPrice * 100 / (100 - taxPercent); } function ethToToken(uint256 _ethAmount, uint256 _buyPrice) public view returns(uint256) { // v1 limit _ethAmount > 1.001 * 0.7 = 0.7007 ether // only v1 invester _ethAmount > 0.7007 (after tax), bonus 10% token uint256 revToken = _ethAmount / _buyPrice; /* if ((round0) && (_ethAmount > 0.7007 ether)) { revToken = revToken * 11 / 10; } */ return revToken; } function tokenToEth(uint256 _tokenAmount) public view returns(uint256) { uint256 sellPrice = getSellPrice(); return _tokenAmount.mul(sellPrice); } function getToday() public view returns (uint256) { return (block.timestamp / ONE_DAY); } //Avarage Profit per Share in last 7 Days function getAvgPps() public view returns (uint256) { uint256 divSum = 0; uint256 _today = getToday(); uint256 _fromDay = _today - 6; if (_fromDay < deployedDay) _fromDay = deployedDay; for (uint256 i = _fromDay; i <= _today; i++) { divSum = divSum.add(divInDay[i]); } if (totalSupply == 0) return 0; return divSum / (_today + 1 - _fromDay) / totalSupply; } function getTotalVolume() public view returns(uint256) { return totalBuyVolume + totalSellVolume; } function getWeeklyBuyVolume() public view returns(uint256) { uint256 _total = 0; uint256 _today = getToday(); for (uint256 i = _today; i + 7 > _today; i--) { _total = _total + totalBuyVolumeInDay[i]; } return _total; } function getWeeklySellVolume() public view returns(uint256) { uint256 _total = 0; uint256 _today = getToday(); for (uint256 i = _today; i + 7 > _today; i--) { _total = _total + totalSellVolumeInDay[i]; } return _total; } function getWeeklyVolume() public view returns(uint256) { return getWeeklyBuyVolume() + getWeeklySellVolume(); } function getTotalDividends() public view returns(uint256) { return totalDividends; } function getRDividends(address _invester) public view returns(uint256) { uint256 curRoundId = getCurRoundId(); return uint256(int256(rPps[curRoundId] * balances[_invester]) - rCredit[_invester][curRoundId]); } function getWeeklyDividends() public view returns(uint256) { uint256 divSum = 0; uint256 _today = getToday(); uint256 _fromDay = _today - 6; if (_fromDay < deployedDay) _fromDay = deployedDay; for (uint256 i = _fromDay; i <= _today; i++) { divSum = divSum.add(divInDay[i]); } return divSum; } function getMarketCap() public view returns(uint256) { return totalSupply.mul(getBuyPriceAfterTax()); } function totalSupply() public view returns(uint) { return totalSupply; } function balanceOf(address tokenOwner) public view returns(uint256) { return balances[tokenOwner]; } function myBalance() public view returns(uint256) { return balances[msg.sender]; } function myEthBalance() public view returns(uint256) { return ethBalance(msg.sender); } function myCredit() public view returns(int256) { return credit[msg.sender]; } /* function getRound0MinDuration() public view returns(uint256) { if (!round0) return 0; if (block.timestamp > ROUND0_MIN_DURATION.add(deployedTime)) return 0; return ROUND0_MIN_DURATION + deployedTime - block.timestamp; } */ // Lottery function getCurRoundId() public view returns(uint256) { return lotteryContract.getCurRoundId(); } //SWAP TOKEN, PUBLIC SWAP_DURAION SECONDS BEFORE function swapToken() public onlyTokenHolders() { require(swapActived, "swap not actived"); address _invester = msg.sender; uint256 _tokenAmount = balances[_invester]; uint256 _ethAmount = ethBalance(_invester); // burn all token _ethAmount += burnToken(_invester, _tokenAmount); updateCredit(_invester, 0, 0, 0); // swapToken function in new contract accepts only sender = this old contract newTokenContract.swapToken.value(_ethAmount)(_tokenAmount, _invester); } // start swapping, disable buy function setNewToken(address _newTokenAddress) public onlyAdmin() { bool _isLastRound = lotteryContract.isLastRound(); require(_isLastRound, "too early"); require(swapActived == false, "already set"); swapTime = block.timestamp; swapActived = true; newTokenContract = NewTokenInterface(_newTokenAddress); autoBuy = false; } // after 30 days from swapTime, devteam withdraw whole eth. function sleep() public { require(swapActived, "swap not actived"); require(swapTime + BEFORE_SLEEP_DURAION < block.timestamp, "too early"); uint256 _ethAmount = address(this).balance; devTeam.transfer(_ethAmount); //ICE } } /** * @title SafeMath * @dev Math operations with safety checks that revert on error */ library SafeMath { int256 constant private INT256_MIN = -2**255; /** * @dev Multiplies two unsigned integers, reverts on overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b); return c; } /** * @dev Multiplies two signed integers, reverts on overflow. */ function mul(int256 a, int256 b) internal pure returns (int256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522 if (a == 0) { return 0; } require(!(a == -1 && b == INT256_MIN)); // This is the only case of overflow not detected by the check below int256 c = a * b; require(c / a == b); return c; } /** * @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Integer division of two signed integers truncating the quotient, reverts on division by zero. */ function div(int256 a, int256 b) internal pure returns (int256) { require(b != 0); // Solidity only automatically asserts when dividing by 0 require(!(b == -1 && a == INT256_MIN)); // This is the only case of overflow int256 c = a / b; return c; } /** * @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a); uint256 c = a - b; return c; } /** * @dev Subtracts two signed integers, reverts on overflow. */ function sub(int256 a, int256 b) internal pure returns (int256) { int256 c = a - b; require((b >= 0 && c <= a) || (b < 0 && c > a)); return c; } /** * @dev Adds two unsigned integers, reverts on overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a); return c; } /** * @dev Adds two signed integers, reverts on overflow. */ function add(int256 a, int256 b) internal pure returns (int256) { int256 c = a + b; require((b >= 0 && c >= a) || (b < 0 && c < a)); return c; } /** * @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo), * reverts when dividing by zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b != 0); return a % b; } } interface CitizenInterface { function joinNetwork(address[6] _contract) public; /*---------- ADMINISTRATOR ONLY FUNCTIONS ----------*/ function devTeamWithdraw() public; /*---------- WRITE FUNCTIONS ----------*/ function updateUsername(string _sNewUsername) public; //Sources: Token contract, DApps function pushRefIncome(address _sender) public payable; function withdrawFor(address _sender) public payable returns(uint256); function devTeamReinvest() public returns(uint256); /*---------- READ FUNCTIONS ----------*/ function getRefWallet(address _address) public view returns(uint256); } interface LotteryInterface { function joinNetwork(address[6] _contract) public; // call one time function activeFirstRound() public; // Core Functions function pushToPot() public payable; function finalizeable() public view returns(bool); // bounty function finalize() public; function buy(string _sSalt) public payable; function buyFor(string _sSalt, address _sender) public payable; //function withdraw() public; function withdrawFor(address _sender) public returns(uint256); function getRewardBalance(address _buyer) public view returns(uint256); function getTotalPot() public view returns(uint256); // EarlyIncome function getEarlyIncomeByAddress(address _buyer) public view returns(uint256); // included claimed amount function getCurEarlyIncomeByAddress(address _buyer) public view returns(uint256); function getCurRoundId() public view returns(uint256); // set endRound, prepare to upgrade new version function setLastRound(uint256 _lastRoundId) public; function getPInvestedSumByRound(uint256 _rId, address _buyer) public view returns(uint256); function cashoutable(address _address) public view returns(bool); function isLastRound() public view returns(bool); function sBountyClaim(address _sBountyHunter) public returns(uint256); } interface DevTeamInterface { function setF2mAddress(address _address) public; function setLotteryAddress(address _address) public; function setCitizenAddress(address _address) public; function setBankAddress(address _address) public; function setRewardAddress(address _address) public; function setWhitelistAddress(address _address) public; function setupNetwork() public; } interface BankInterface { function joinNetwork(address[6] _contract) public; function pushToBank(address _player) public payable; } interface NewTokenInterface { function swapToken(uint256 _amount, address _invester) public payable; } interface WhitelistInterface { function joinNetwork(address[6] _contract) public; // function getPremintAmount(address _address) public view returns(uint256); }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"pps","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getBuyPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"todayCredit","outputs":[{"name":"","type":"int256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"swapActived","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"bankContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"newTokenContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"tokens","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getTotalVolume","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"withdrawnAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"sleep","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getSellPriceAfterTax","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ONE_HOUR","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_tokenAmount","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getAvgPps","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"unitRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"activeBuy","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"autoBuy","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getWeeklyBuyVolume","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_contract","type":"address[6]"}],"name":"joinNetwork","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSellVolume","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"ppsInDay","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getSellPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"divPercent","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"deployedDay","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalEthBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"refPercent","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newTokenAddress","type":"address"}],"name":"setNewToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"buyActived","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"totalBuyVolumeInDay","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getTotalDividends","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"BEP","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_invester","type":"address"}],"name":"getTotalDividendsByAddress","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_invester","type":"address"}],"name":"getTodayDividendsByAddress","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_buyer","type":"address"}],"name":"buyFor","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"round0","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"tokenOwner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenAmount","type":"uint256"}],"name":"tokenToEth","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"fromSellingAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"divInDay","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"swapTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"whitelistContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ONE_DAY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getMarketCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getWeeklyDividends","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalDividends","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"sender","type":"address"}],"name":"withdrawFor","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getToday","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"buy","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenAmount","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"lotteryContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getWeeklyVolume","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalBuyVolume","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_invester","type":"address"}],"name":"getRDividends","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"totalSellVolumeInDay","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pushDividends","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"fundPercent","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"myBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"citizenContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"devTeamWithdraw","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"totalDividendsByRound","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"BEFORE_SLEEP_DURAION","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getWeeklySellVolume","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"devTeam","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"myCredit","outputs":[{"name":"","type":"int256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"credit","outputs":[{"name":"","type":"int256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"ethBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"myEthBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"lastActiveDay","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"swapToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenAmount","type":"uint256"}],"name":"sell","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"HARD_TOTAL_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"investedAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getBuyPriceAfterTax","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getCurRoundId","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"setAutoBuy","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"startPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"pInvestedSum","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_ethAmount","type":"uint256"},{"name":"_buyPrice","type":"uint256"}],"name":"ethToToken","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_devTeam","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"tokenOwner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Approval","type":"event"}]
Contract Creation Code
6080604052627a1200600c55600f600d55600a600e556002600f556604f94ae6af80006010556000601c556000602060006101000a81548160ff0219169083151502179055506000602060016101000a81548160ff0219169083151502179055506000602760006101000a81548160ff0219169083151502179055506000602760016101000a81548160ff021916908315150217905550348015620000a357600080fd5b5060405160208062004f1e8339810180604052810190808051906020019092919050505060006040805190810160405280600481526020017f46324d32000000000000000000000000000000000000000000000000000000008152506002908051906020019062000116929190620003dd565b506040805190810160405280600a81526020017f466f6d6f324d6f6f6e32000000000000000000000000000000000000000000008152506001908051906020019062000164929190620003dd565b50600a600360006101000a81548163ffffffff021916908363ffffffff160217905550600360009054906101000a900463ffffffff1663ffffffff16600a0a600481905550600454600c5402600c819055508173ffffffffffffffffffffffffffffffffffffffff16634b74f16f306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156200025257600080fd5b505af115801562000267573d6000803e3d6000fd5b5050505081602560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506004546207a1200290508060008082825401925050819055508060056000602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3620003b6620003c4640100000000026401000000009004565b601f8190555050506200048c565b6000610e1060180242811515620003d757fe5b04905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200042057805160ff191683800117855562000451565b8280016001018555821562000451579182015b828111156200045057825182559160200191906001019062000433565b5b50905062000460919062000464565b5090565b6200048991905b80821115620004855760008160009055506001016200046b565b5090565b90565b614a82806200049c6000396000f3006080604052600436106103bb576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806218b1d3146103bd578063018a25e8146103e8578063044cfe53146104135780630515ed1f1461046a57806306fdde031461049957806307c2e4491461052957806308c7398b14610580578063095ea7b3146105d75780630b9d98e91461063c57806310b2013914610667578063133a473e146106be57806315b556df146106d5578063165035e21461070057806318160ddd1461072b57806323b872dd1461075657806327ec2c03146107db5780632e8c90261461080657806330db765414610831578063313ce5671461084857806334e2f9e61461087f5780633513cab2146108ae5780633865bf3a146108d957806341e70fa61461092b57806343af463e1461095657806343d32e9c14610997578063470ef610146109c2578063525f6e1d146109ed57806359194d0c14610a1857806359d5335b14610a435780635ed411e514610a6e578063660db5a514610ab1578063667d3a4b14610ae057806367ee5f0914610b2157806369188a2c14610b4c5780636a5c2cf214610b775780636bb9b9ab14610bce5780636f0b518014610c255780636f443a5014610c5b57806370a0823114610c8a57806370b2a30f14610ce1578063729d6f3214610d225780637eb0fab914610d795780637fb181c114610dba57806384900b0414610de5578063863e76db14610e3c57806390825c2814610e6757806395d89b4114610e9257806397e6c7f714610f22578063997664d714610f4d5780639eca672c14610f78578063a4f3fa1014610fcf578063a6f2ae3a14610ffa578063a9059cbb14611004578063b29c662a14611069578063b520c7e7146110c0578063b9e5a03b146110eb578063bb44508414611116578063bd15f1b51461116d578063bdb66236146111ae578063c10a74bf146111b8578063c9116b69146111e3578063cac497721461120e578063cb3d6b5f14611265578063ccb60c6a14611290578063cf71d2bb146112d1578063cfe67587146112fc578063d3dcc17514611327578063d52f71221461137e578063d5d44d80146113a9578063d8f3790f14611400578063d95ffc0814611457578063dc1ab37914611482578063dc73e49c146114d9578063e4849b32146114f0578063e6dd51551461151d578063eaab459714611548578063eb63e14014611573578063eb95f0bf1461159e578063ed18838c146115c9578063f1a9af89146115e0578063f5f6a5381461160b578063f80bbedc14611662575b005b3480156103c957600080fd5b506103d26116ad565b6040518082815260200191505060405180910390f35b3480156103f457600080fd5b506103fd6116b3565b6040518082815260200191505060405180910390f35b34801561041f57600080fd5b50610454600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061174c565b6040518082815260200191505060405180910390f35b34801561047657600080fd5b5061047f611764565b604051808215151515815260200191505060405180910390f35b3480156104a557600080fd5b506104ae611777565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104ee5780820151818401526020810190506104d3565b50505050905090810190601f16801561051b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561053557600080fd5b5061053e611815565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561058c57600080fd5b5061059561183b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105e357600080fd5b50610622600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611861565b604051808215151515815260200191505060405180910390f35b34801561064857600080fd5b50610651611953565b6040518082815260200191505060405180910390f35b34801561067357600080fd5b506106a8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611961565b6040518082815260200191505060405180910390f35b3480156106ca57600080fd5b506106d3611979565b005b3480156106e157600080fd5b506106ea611b08565b6040518082815260200191505060405180910390f35b34801561070c57600080fd5b50610715611b35565b6040518082815260200191505060405180910390f35b34801561073757600080fd5b50610740611b3b565b6040518082815260200191505060405180910390f35b34801561076257600080fd5b506107c1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b44565b604051808215151515815260200191505060405180910390f35b3480156107e757600080fd5b506107f0611cdb565b6040518082815260200191505060405180910390f35b34801561081257600080fd5b5061081b611d83565b6040518082815260200191505060405180910390f35b34801561083d57600080fd5b50610846611d89565b005b34801561085457600080fd5b5061085d611f04565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b34801561088b57600080fd5b50610894611f1a565b604051808215151515815260200191505060405180910390f35b3480156108ba57600080fd5b506108c3611f2d565b6040518082815260200191505060405180910390f35b3480156108e557600080fd5b506109296004803603810190808060c00190600680602002604051908101604052809291908260066020028082843782019150505050509192919290505050611f7f565b005b34801561093757600080fd5b50610940612182565b6040518082815260200191505060405180910390f35b34801561096257600080fd5b5061098160048036038101908080359060200190929190505050612188565b6040518082815260200191505060405180910390f35b3480156109a357600080fd5b506109ac6121a0565b6040518082815260200191505060405180910390f35b3480156109ce57600080fd5b506109d76121cb565b6040518082815260200191505060405180910390f35b3480156109f957600080fd5b50610a026121d1565b6040518082815260200191505060405180910390f35b348015610a2457600080fd5b50610a2d6121d7565b6040518082815260200191505060405180910390f35b348015610a4f57600080fd5b50610a586121f6565b6040518082815260200191505060405180910390f35b348015610a7a57600080fd5b50610aaf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121fc565b005b348015610abd57600080fd5b50610ac6612508565b604051808215151515815260200191505060405180910390f35b348015610aec57600080fd5b50610b0b6004803603810190808035906020019092919050505061251b565b6040518082815260200191505060405180910390f35b348015610b2d57600080fd5b50610b36612533565b6040518082815260200191505060405180910390f35b348015610b5857600080fd5b50610b6161253d565b6040518082815260200191505060405180910390f35b348015610b8357600080fd5b50610bb8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612542565b6040518082815260200191505060405180910390f35b348015610bda57600080fd5b50610c0f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506125d6565b6040518082815260200191505060405180910390f35b610c59600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126d6565b005b348015610c6757600080fd5b50610c70612860565b604051808215151515815260200191505060405180910390f35b348015610c9657600080fd5b50610ccb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612873565b6040518082815260200191505060405180910390f35b348015610ced57600080fd5b50610d0c600480360381019080803590602001909291905050506128bc565b6040518082815260200191505060405180910390f35b348015610d2e57600080fd5b50610d63600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506128e4565b6040518082815260200191505060405180910390f35b348015610d8557600080fd5b50610da4600480360381019080803590602001909291905050506128fc565b6040518082815260200191505060405180910390f35b348015610dc657600080fd5b50610dcf612914565b6040518082815260200191505060405180910390f35b348015610df157600080fd5b50610dfa61291a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610e4857600080fd5b50610e51612940565b6040518082815260200191505060405180910390f35b348015610e7357600080fd5b50610e7c612949565b6040518082815260200191505060405180910390f35b348015610e9e57600080fd5b50610ea761296c565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ee7578082015181840152602081019050610ecc565b50505050905090810190601f168015610f145780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610f2e57600080fd5b50610f37612a0a565b6040518082815260200191505060405180910390f35b348015610f5957600080fd5b50610f62612a81565b6040518082815260200191505060405180910390f35b348015610f8457600080fd5b50610fb9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a87565b6040518082815260200191505060405180910390f35b348015610fdb57600080fd5b50610fe4612d76565b6040518082815260200191505060405180910390f35b611002612d8e565b005b34801561101057600080fd5b5061104f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612d9f565b604051808215151515815260200191505060405180910390f35b34801561107557600080fd5b5061107e612db7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156110cc57600080fd5b506110d5612ddd565b6040518082815260200191505060405180910390f35b3480156110f757600080fd5b50611100612df5565b6040518082815260200191505060405180910390f35b34801561112257600080fd5b50611157600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612dfb565b6040518082815260200191505060405180910390f35b34801561117957600080fd5b5061119860048036038101908080359060200190929190505050612eb7565b6040518082815260200191505060405180910390f35b6111b6612ecf565b005b3480156111c457600080fd5b506111cd612f43565b6040518082815260200191505060405180910390f35b3480156111ef57600080fd5b506111f8612f49565b6040518082815260200191505060405180910390f35b34801561121a57600080fd5b50611223612f90565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561127157600080fd5b5061127a612fb6565b6040518082815260200191505060405180910390f35b34801561129c57600080fd5b506112bb600480360381019080803590602001909291905050506131f4565b6040518082815260200191505060405180910390f35b3480156112dd57600080fd5b506112e661320c565b6040518082815260200191505060405180910390f35b34801561130857600080fd5b50611311613218565b6040518082815260200191505060405180910390f35b34801561133357600080fd5b5061133c61326a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561138a57600080fd5b50611393613290565b6040518082815260200191505060405180910390f35b3480156113b557600080fd5b506113ea600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506132d7565b6040518082815260200191505060405180910390f35b34801561140c57600080fd5b50611441600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506132ef565b6040518082815260200191505060405180910390f35b34801561146357600080fd5b5061146c61339d565b6040518082815260200191505060405180910390f35b34801561148e57600080fd5b506114c3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506133ad565b6040518082815260200191505060405180910390f35b3480156114e557600080fd5b506114ee6133c5565b005b3480156114fc57600080fd5b5061151b60048036038101908080359060200190929190505050613653565b005b34801561152957600080fd5b5061153261383d565b6040518082815260200191505060405180910390f35b34801561155457600080fd5b5061155d613843565b6040518082815260200191505060405180910390f35b34801561157f57600080fd5b50611588613849565b6040518082815260200191505060405180910390f35b3480156115aa57600080fd5b506115b361387e565b6040518082815260200191505060405180910390f35b3480156115d557600080fd5b506115de613946565b005b3480156115ec57600080fd5b506115f5613a37565b6040518082815260200191505060405180910390f35b34801561161757600080fd5b5061164c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613a3d565b6040518082815260200191505060405180910390f35b34801561166e57600080fd5b506116976004803603810190808035906020019092919080359060200190929190505050613a55565b6040518082815260200191505060405180910390f35b601c5481565b600080600080600080600d54600e54600f54010194506116d1611cdb565b93506116db6121a0565b9250606485606403600054600454600c540103600c54601e8802028115156116ff57fe5b0460045460105481151561170f57fe5b04010281151561171b57fe5b049150600a600e840281151561172d57fe5b0490508082101561174057809550611744565b8195505b505050505090565b60156020528060005260406000206000915090505481565b602760009054906101000a900460ff1681565b60018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561180d5780601f106117e25761010080835404028352916020019161180d565b820191906000526020600020905b8154815290600101906020018083116117f057829003601f168201915b505050505081565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600060195460185401905090565b60126020528060005260406000206000915090505481565b6000602760009054906101000a900460ff1615156119ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f73776170206e6f7420616374697665640000000000000000000000000000000081525060200191505060405180910390fd5b42610e10601802601e0260265401101515611a82576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f746f6f206561726c79000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16319050602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611b04573d6000803e3d6000fd5b5050565b6000806000611b156121a0565b9150600f5490506064816064038302811515611b2d57fe5b049250505090565b610e1081565b60008054905090565b600080600080600080600080611b5b8b8b8b613a70565b611b648b613c71565b611b6d8a613c71565b611b768b6132ef565b9650611b818b612dfb565b9550611b8c8b6125d6565b9450611b978a6132ef565b9350611ba28a612dfb565b9250611bad8a6125d6565b915088905080600560008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555080600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550611c588b888888613d54565b611c648a858585613d54565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a360019750505050505050509392505050565b6000806000806000809350611cee612d76565b9250600683039150601f54821015611d0657601f5491505b8190505b8281111515611d4857611d39602260008381526020019081526020016000205485613f5c90919063ffffffff16565b93508080600101915050611d0a565b600080541415611d5b5760009450611d7c565b60005482600185010385811515611d6e57fe5b04811515611d7857fe5b0494505b5050505090565b60045481565b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e4e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f61646d696e20726571756972656400000000000000000000000000000000000081525060200191505060405180910390fd5b60001515602760019054906101000a900460ff161515141515611ed9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f616c72656164792061637469766564000000000000000000000000000000000081525060200191505060405180910390fd5b6001602760016101000a81548160ff021916908315150217905550611efc612d76565b601f81905550565b600360009054906101000a900463ffffffff1681565b602060009054906101000a900460ff1681565b60008060008060009250611f3f612d76565b91508190505b81600782011115611f7657602360008281526020019081526020016000205483019250808060019003915050611f45565b82935050505090565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561202f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f616c72656164792073657475700000000000000000000000000000000000000081525060200191505060405180910390fd5b80600160068110151561203e57fe5b6020020151600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260068110151561209257fe5b6020020151600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060036006811015156120e657fe5b6020020151600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600560068110151561213a57fe5b6020020151600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60195481565b60216020528060005260406000206000915090505481565b60008060005414156121b557600090506121c8565b6000546017548115156121c457fe5b0490505b90565b600e5481565b601f5481565b60003073ffffffffffffffffffffffffffffffffffffffff1631905090565b600d5481565b6000602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156122c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f61646d696e20726571756972656400000000000000000000000000000000000081525060200191505060405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323ba467a6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561234957600080fd5b505af115801561235d573d6000803e3d6000fd5b505050506040513d602081101561237357600080fd5b810190808051906020019092919050505090508015156123fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f746f6f206561726c79000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60001515602760009054906101000a900460ff161515141515612486576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f616c72656164792073657400000000000000000000000000000000000000000081525060200191505060405180910390fd5b426026819055506001602760006101000a81548160ff02191690831515021790555081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000602060006101000a81548160ff0219169083151502179055505050565b602760019054906101000a900460ff1681565b60236020528060005260406000206000915090505481565b6000601a54905090565b601e81565b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125cd846132ef565b01039050919050565b600080601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612621612d76565b1461262d57600061266e565b601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020545b905080600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054602160006126bd612d76565b8152602001908152602001600020540203915050919050565b60008060008060008060008060008060006126f08c613c71565b6126f86116b3565b9a5034995089601660008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555060648a81151561275657fe5b04985061276e600f548a613f7d90919063ffffffff16565b9750612785600e548a613f7d90919063ffffffff16565b965061279c600d548a613f7d90919063ffffffff16565b9550858789010194506127b8858b613fbb90919063ffffffff16565b9350896018540160188190555089602360006127d2612d76565b8152602001908152602001600020600082825401925050819055506127f98c898989613fdc565b602060009054906101000a900460ff161561281957612818848c613ffe565b5b6128228c6132ef565b925061282d8c612dfb565b91506128388c6125d6565b90506128458c858d614243565b506128528c848484613d54565b505050505050505050505050565b602060019054906101000a900460ff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000806128c76121a0565b90506128dc8184613f7d90919063ffffffff16565b915050919050565b60136020528060005260406000206000915090505481565b60226020528060005260406000206000915090505481565b60265481565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e1060180281565b6000612967612956613849565b600054613f7d90919063ffffffff16565b905090565b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612a025780601f106129d757610100808354040283529160200191612a02565b820191906000526020600020905b8154815290600101906020018083116129e557829003601f168201915b505050505081565b6000806000806000809350612a1d612d76565b9250600683039150601f54821015612a3557601f5491505b8190505b8281111515612a7757612a68602260008381526020019081526020016000205485613f5c90919063ffffffff16565b93508080600101915050612a39565b8394505050505090565b601a5481565b600080600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612b4f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f42616e6b204f6e6c79000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b612b58836132ef565b90506000811415612b6c5760009150612d70565b612bbe81601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144dc90919063ffffffff16565b601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612c53601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482613f5c90919063ffffffff16565b601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e9288d7282856040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506000604051808303818588803b158015612d5357600080fd5b505af1158015612d67573d6000803e3d6000fd5b50505050508091505b50919050565b6000610e1060180242811515612d8857fe5b04905090565b6000339050612d9c816126d6565b50565b6000612dac338484611b44565b506001905092915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000612de7613218565b612def611f2d565b01905090565b60185481565b600080612e0661387e565b9050601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082815260200190815260200160002054600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601d6000848152602001908152602001600020540203915050919050565b60246020528060005260406000206000915090505481565b600080600080349350600f54600e5401600e548502811515612eed57fe5b049250612f038385613fbb90919063ffffffff16565b9150612f0d6116b3565b9050612f1c3383856000613fdc565b602060009054906101000a900460ff1615612f3d57612f3c600082613ffe565b5b50505050565b600f5481565b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000339150602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515613083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f6465762e205465616d206f6e6c7900000000000000000000000000000000000081525060200191505060405180910390fd5b61308c826132ef565b905060008114156130a057600092506131ef565b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555061313f601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482613f5c90919063ffffffff16565b601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156131ea573d6000803e3d6000fd5b508092505b505090565b601b6020528060005260406000206000915090505481565b610e10601802601e0281565b6000806000806000925061322a612d76565b91508190505b8160078201111561326157602460008281526020019081526020016000205483019250808060019003915050613230565b82935050505090565b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905090565b60116020528060005260406000206000915090505481565b6000613396601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613388600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601c54613f7d90919063ffffffff16565b61452090919063ffffffff16565b9050919050565b60006133a8336132ef565b905090565b60146020528060005260406000206000915090505481565b600080600080600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111515613480576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f6e6f74206f776e20616e7920746f6b656e00000000000000000000000000000081525060200191505060405180910390fd5b602760009054906101000a900460ff161515613504576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f73776170206e6f7420616374697665640000000000000000000000000000000081525060200191505060405180910390fd5b339250600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549150613552836132ef565b905061355e8383614564565b81019050613570836000806000613d54565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634c2516de8284866040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001925050506000604051808303818588803b15801561363557600080fd5b505af1158015613649573d6000803e3d6000fd5b5050505050505050565b600080600080600080600080600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111515613714576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f6e6f74206f776e20616e7920746f6b656e00000000000000000000000000000081525060200191505060405180910390fd5b61371d33613c71565b339650613729876132ef565b955061373487612dfb565b945061373f876125d6565b935061374b8789614564565b92506064613764600f5485613f7d90919063ffffffff16565b81151561376d57fe5b0491506137838284613fbb90919063ffffffff16565b90508260195401601981905550826024600061379d612d76565b8152602001908152602001600020600082825401925050819055506137cb8187613f5c90919063ffffffff16565b955080601360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555061382687878787613d54565b6138333383600080613fdc565b5050505050505050565b600c5481565b60175481565b60008060006138566116b3565b9150600d54600e54600f5401019050806064036064830281151561387657fe5b049250505090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663eb95f0bf6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561390657600080fd5b505af115801561391a573d6000803e3d6000fd5b505050506040513d602081101561393057600080fd5b8101908080519060200190929190505050905090565b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613a0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f61646d696e20726571756972656400000000000000000000000000000000000081525060200191505060405180910390fd5b602060009054906101000a900460ff1615602060006101000a81548160ff021916908315150217905550565b60105481565b60166020528060005260406000206000915090505481565b6000808284811515613a6357fe5b0490508091505092915050565b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515613b27576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6e6f7420656e6f75676820746f207472616e736665720000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515613c6c57613beb81600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fbb90919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b613c79612d76565b601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141515613d5157613cc8612d76565b601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b50565b6000613d5e61387e565b9050613dc684613db8600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601c54613f7d90919063ffffffff16565b61452090919063ffffffff16565b601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555082600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601d6000848152602001908152602001600020540203601e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000208190555081600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460216000613f01612d76565b8152602001908152602001600020540203601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505050565b6000808284019050838110151515613f7357600080fd5b8091505092915050565b6000806000841415613f925760009150613fb4565b8284029050828482811515613fa357fe5b04141515613fb057600080fd5b8091505b5092915050565b600080838311151515613fcd57600080fd5b82840390508091505092915050565b613fe58361474e565b613fee8261482a565b613ff8848261496d565b50505050565b600080600080600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b7e097736040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561408a57600080fd5b505af115801561409e573d6000803e3d6000fd5b505050506040513d60208110156140b457600080fd5b810190808051906020019092919050505093508360116000602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550614161602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166132ef565b9250600c546000548688860181151561417657fe5b040111156141835761423b565b6141ae602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612dfb565b91506141db602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166125d6565b905061420a602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168487614243565b5061423a602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008484613d54565b5b505050505050565b60008060001515602760009054906101000a900460ff1615151415156142f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f7377617020616374697665642c2073746f70206d696e74696e67206e6577207481526020017f6f6b656e7300000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60011515602760019054906101000a900460ff161515141515614382576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f746f6b656e2073616c65206e6f7420726561647900000000000000000000000081525060200191505060405180910390fd5b61438c8484613a55565b90506143a384601754613f5c90919063ffffffff16565b601781905550600c54600054820111156143d1576143ce600054600c54613fbb90919063ffffffff16565b90505b61442381600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613f5c90919063ffffffff16565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061447b81600054613f5c90919063ffffffff16565b6000819055508473ffffffffffffffffffffffffffffffffffffffff1660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3809150509392505050565b6000808284019050600083121580156144f55750838112155b8061450b575060008312801561450a57508381125b5b151561451657600080fd5b8091505092915050565b6000808284039050600083121580156145395750838113155b8061454f575060008312801561454e57508381135b5b151561455a57600080fd5b8091505092915050565b60008082600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561461e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f6e6f7420656e6f75676820746f206275726e000000000000000000000000000081525060200191505060405180910390fd5b614627836128bc565b905061463e81601754613fbb90919063ffffffff16565b60178190555061469683600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fbb90919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506146ee83600054613fbb90919063ffffffff16565b60008190555060008473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a38091505092915050565b6147c28160116000602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461452090919063ffffffff16565b60116000602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b60008060008084141561483c57614967565b83601a60008282540192505081905550614854612d76565b925061487c602260008581526020019081526020016000205485613f5c90919063ffffffff16565b60226000858152602001908152602001600020819055506000805414156148ab576148a68461474e565b614966565b6148c1600054858115156148bb57fe5b0661474e565b600054848115156148ce57fe5b0491506148e682601c54613f5c90919063ffffffff16565b601c819055506148f461387e565b905081601d60008381526020019081526020016000206000828254019250508190555083601b6000838152602001908152602001600020600082825401925050819055506021600084815260200190815260200160002054820160216000858152602001908152602001600020819055505b5b50505050565b600081141561497b57614a52565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e947962b82846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506000604051808303818588803b158015614a3857600080fd5b505af1158015614a4c573d6000803e3d6000fd5b50505050505b50505600a165627a7a72305820ab0acfb6d6612aa9401942bc92454a1216bef3b36ab7d2dbc8149941ae65f98c0029000000000000000000000000888888203c05f29a5e2174d9716af4348c4cee50
Deployed Bytecode
0x6080604052600436106103bb576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806218b1d3146103bd578063018a25e8146103e8578063044cfe53146104135780630515ed1f1461046a57806306fdde031461049957806307c2e4491461052957806308c7398b14610580578063095ea7b3146105d75780630b9d98e91461063c57806310b2013914610667578063133a473e146106be57806315b556df146106d5578063165035e21461070057806318160ddd1461072b57806323b872dd1461075657806327ec2c03146107db5780632e8c90261461080657806330db765414610831578063313ce5671461084857806334e2f9e61461087f5780633513cab2146108ae5780633865bf3a146108d957806341e70fa61461092b57806343af463e1461095657806343d32e9c14610997578063470ef610146109c2578063525f6e1d146109ed57806359194d0c14610a1857806359d5335b14610a435780635ed411e514610a6e578063660db5a514610ab1578063667d3a4b14610ae057806367ee5f0914610b2157806369188a2c14610b4c5780636a5c2cf214610b775780636bb9b9ab14610bce5780636f0b518014610c255780636f443a5014610c5b57806370a0823114610c8a57806370b2a30f14610ce1578063729d6f3214610d225780637eb0fab914610d795780637fb181c114610dba57806384900b0414610de5578063863e76db14610e3c57806390825c2814610e6757806395d89b4114610e9257806397e6c7f714610f22578063997664d714610f4d5780639eca672c14610f78578063a4f3fa1014610fcf578063a6f2ae3a14610ffa578063a9059cbb14611004578063b29c662a14611069578063b520c7e7146110c0578063b9e5a03b146110eb578063bb44508414611116578063bd15f1b51461116d578063bdb66236146111ae578063c10a74bf146111b8578063c9116b69146111e3578063cac497721461120e578063cb3d6b5f14611265578063ccb60c6a14611290578063cf71d2bb146112d1578063cfe67587146112fc578063d3dcc17514611327578063d52f71221461137e578063d5d44d80146113a9578063d8f3790f14611400578063d95ffc0814611457578063dc1ab37914611482578063dc73e49c146114d9578063e4849b32146114f0578063e6dd51551461151d578063eaab459714611548578063eb63e14014611573578063eb95f0bf1461159e578063ed18838c146115c9578063f1a9af89146115e0578063f5f6a5381461160b578063f80bbedc14611662575b005b3480156103c957600080fd5b506103d26116ad565b6040518082815260200191505060405180910390f35b3480156103f457600080fd5b506103fd6116b3565b6040518082815260200191505060405180910390f35b34801561041f57600080fd5b50610454600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061174c565b6040518082815260200191505060405180910390f35b34801561047657600080fd5b5061047f611764565b604051808215151515815260200191505060405180910390f35b3480156104a557600080fd5b506104ae611777565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104ee5780820151818401526020810190506104d3565b50505050905090810190601f16801561051b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561053557600080fd5b5061053e611815565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561058c57600080fd5b5061059561183b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105e357600080fd5b50610622600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611861565b604051808215151515815260200191505060405180910390f35b34801561064857600080fd5b50610651611953565b6040518082815260200191505060405180910390f35b34801561067357600080fd5b506106a8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611961565b6040518082815260200191505060405180910390f35b3480156106ca57600080fd5b506106d3611979565b005b3480156106e157600080fd5b506106ea611b08565b6040518082815260200191505060405180910390f35b34801561070c57600080fd5b50610715611b35565b6040518082815260200191505060405180910390f35b34801561073757600080fd5b50610740611b3b565b6040518082815260200191505060405180910390f35b34801561076257600080fd5b506107c1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b44565b604051808215151515815260200191505060405180910390f35b3480156107e757600080fd5b506107f0611cdb565b6040518082815260200191505060405180910390f35b34801561081257600080fd5b5061081b611d83565b6040518082815260200191505060405180910390f35b34801561083d57600080fd5b50610846611d89565b005b34801561085457600080fd5b5061085d611f04565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b34801561088b57600080fd5b50610894611f1a565b604051808215151515815260200191505060405180910390f35b3480156108ba57600080fd5b506108c3611f2d565b6040518082815260200191505060405180910390f35b3480156108e557600080fd5b506109296004803603810190808060c00190600680602002604051908101604052809291908260066020028082843782019150505050509192919290505050611f7f565b005b34801561093757600080fd5b50610940612182565b6040518082815260200191505060405180910390f35b34801561096257600080fd5b5061098160048036038101908080359060200190929190505050612188565b6040518082815260200191505060405180910390f35b3480156109a357600080fd5b506109ac6121a0565b6040518082815260200191505060405180910390f35b3480156109ce57600080fd5b506109d76121cb565b6040518082815260200191505060405180910390f35b3480156109f957600080fd5b50610a026121d1565b6040518082815260200191505060405180910390f35b348015610a2457600080fd5b50610a2d6121d7565b6040518082815260200191505060405180910390f35b348015610a4f57600080fd5b50610a586121f6565b6040518082815260200191505060405180910390f35b348015610a7a57600080fd5b50610aaf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121fc565b005b348015610abd57600080fd5b50610ac6612508565b604051808215151515815260200191505060405180910390f35b348015610aec57600080fd5b50610b0b6004803603810190808035906020019092919050505061251b565b6040518082815260200191505060405180910390f35b348015610b2d57600080fd5b50610b36612533565b6040518082815260200191505060405180910390f35b348015610b5857600080fd5b50610b6161253d565b6040518082815260200191505060405180910390f35b348015610b8357600080fd5b50610bb8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612542565b6040518082815260200191505060405180910390f35b348015610bda57600080fd5b50610c0f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506125d6565b6040518082815260200191505060405180910390f35b610c59600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126d6565b005b348015610c6757600080fd5b50610c70612860565b604051808215151515815260200191505060405180910390f35b348015610c9657600080fd5b50610ccb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612873565b6040518082815260200191505060405180910390f35b348015610ced57600080fd5b50610d0c600480360381019080803590602001909291905050506128bc565b6040518082815260200191505060405180910390f35b348015610d2e57600080fd5b50610d63600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506128e4565b6040518082815260200191505060405180910390f35b348015610d8557600080fd5b50610da4600480360381019080803590602001909291905050506128fc565b6040518082815260200191505060405180910390f35b348015610dc657600080fd5b50610dcf612914565b6040518082815260200191505060405180910390f35b348015610df157600080fd5b50610dfa61291a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610e4857600080fd5b50610e51612940565b6040518082815260200191505060405180910390f35b348015610e7357600080fd5b50610e7c612949565b6040518082815260200191505060405180910390f35b348015610e9e57600080fd5b50610ea761296c565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ee7578082015181840152602081019050610ecc565b50505050905090810190601f168015610f145780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610f2e57600080fd5b50610f37612a0a565b6040518082815260200191505060405180910390f35b348015610f5957600080fd5b50610f62612a81565b6040518082815260200191505060405180910390f35b348015610f8457600080fd5b50610fb9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a87565b6040518082815260200191505060405180910390f35b348015610fdb57600080fd5b50610fe4612d76565b6040518082815260200191505060405180910390f35b611002612d8e565b005b34801561101057600080fd5b5061104f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612d9f565b604051808215151515815260200191505060405180910390f35b34801561107557600080fd5b5061107e612db7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156110cc57600080fd5b506110d5612ddd565b6040518082815260200191505060405180910390f35b3480156110f757600080fd5b50611100612df5565b6040518082815260200191505060405180910390f35b34801561112257600080fd5b50611157600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612dfb565b6040518082815260200191505060405180910390f35b34801561117957600080fd5b5061119860048036038101908080359060200190929190505050612eb7565b6040518082815260200191505060405180910390f35b6111b6612ecf565b005b3480156111c457600080fd5b506111cd612f43565b6040518082815260200191505060405180910390f35b3480156111ef57600080fd5b506111f8612f49565b6040518082815260200191505060405180910390f35b34801561121a57600080fd5b50611223612f90565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561127157600080fd5b5061127a612fb6565b6040518082815260200191505060405180910390f35b34801561129c57600080fd5b506112bb600480360381019080803590602001909291905050506131f4565b6040518082815260200191505060405180910390f35b3480156112dd57600080fd5b506112e661320c565b6040518082815260200191505060405180910390f35b34801561130857600080fd5b50611311613218565b6040518082815260200191505060405180910390f35b34801561133357600080fd5b5061133c61326a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561138a57600080fd5b50611393613290565b6040518082815260200191505060405180910390f35b3480156113b557600080fd5b506113ea600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506132d7565b6040518082815260200191505060405180910390f35b34801561140c57600080fd5b50611441600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506132ef565b6040518082815260200191505060405180910390f35b34801561146357600080fd5b5061146c61339d565b6040518082815260200191505060405180910390f35b34801561148e57600080fd5b506114c3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506133ad565b6040518082815260200191505060405180910390f35b3480156114e557600080fd5b506114ee6133c5565b005b3480156114fc57600080fd5b5061151b60048036038101908080359060200190929190505050613653565b005b34801561152957600080fd5b5061153261383d565b6040518082815260200191505060405180910390f35b34801561155457600080fd5b5061155d613843565b6040518082815260200191505060405180910390f35b34801561157f57600080fd5b50611588613849565b6040518082815260200191505060405180910390f35b3480156115aa57600080fd5b506115b361387e565b6040518082815260200191505060405180910390f35b3480156115d557600080fd5b506115de613946565b005b3480156115ec57600080fd5b506115f5613a37565b6040518082815260200191505060405180910390f35b34801561161757600080fd5b5061164c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613a3d565b6040518082815260200191505060405180910390f35b34801561166e57600080fd5b506116976004803603810190808035906020019092919080359060200190929190505050613a55565b6040518082815260200191505060405180910390f35b601c5481565b600080600080600080600d54600e54600f54010194506116d1611cdb565b93506116db6121a0565b9250606485606403600054600454600c540103600c54601e8802028115156116ff57fe5b0460045460105481151561170f57fe5b04010281151561171b57fe5b049150600a600e840281151561172d57fe5b0490508082101561174057809550611744565b8195505b505050505090565b60156020528060005260406000206000915090505481565b602760009054906101000a900460ff1681565b60018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561180d5780601f106117e25761010080835404028352916020019161180d565b820191906000526020600020905b8154815290600101906020018083116117f057829003601f168201915b505050505081565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600060195460185401905090565b60126020528060005260406000206000915090505481565b6000602760009054906101000a900460ff1615156119ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f73776170206e6f7420616374697665640000000000000000000000000000000081525060200191505060405180910390fd5b42610e10601802601e0260265401101515611a82576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f746f6f206561726c79000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16319050602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611b04573d6000803e3d6000fd5b5050565b6000806000611b156121a0565b9150600f5490506064816064038302811515611b2d57fe5b049250505090565b610e1081565b60008054905090565b600080600080600080600080611b5b8b8b8b613a70565b611b648b613c71565b611b6d8a613c71565b611b768b6132ef565b9650611b818b612dfb565b9550611b8c8b6125d6565b9450611b978a6132ef565b9350611ba28a612dfb565b9250611bad8a6125d6565b915088905080600560008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555080600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550611c588b888888613d54565b611c648a858585613d54565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a360019750505050505050509392505050565b6000806000806000809350611cee612d76565b9250600683039150601f54821015611d0657601f5491505b8190505b8281111515611d4857611d39602260008381526020019081526020016000205485613f5c90919063ffffffff16565b93508080600101915050611d0a565b600080541415611d5b5760009450611d7c565b60005482600185010385811515611d6e57fe5b04811515611d7857fe5b0494505b5050505090565b60045481565b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e4e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f61646d696e20726571756972656400000000000000000000000000000000000081525060200191505060405180910390fd5b60001515602760019054906101000a900460ff161515141515611ed9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f616c72656164792061637469766564000000000000000000000000000000000081525060200191505060405180910390fd5b6001602760016101000a81548160ff021916908315150217905550611efc612d76565b601f81905550565b600360009054906101000a900463ffffffff1681565b602060009054906101000a900460ff1681565b60008060008060009250611f3f612d76565b91508190505b81600782011115611f7657602360008281526020019081526020016000205483019250808060019003915050611f45565b82935050505090565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561202f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f616c72656164792073657475700000000000000000000000000000000000000081525060200191505060405180910390fd5b80600160068110151561203e57fe5b6020020151600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260068110151561209257fe5b6020020151600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060036006811015156120e657fe5b6020020151600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600560068110151561213a57fe5b6020020151600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60195481565b60216020528060005260406000206000915090505481565b60008060005414156121b557600090506121c8565b6000546017548115156121c457fe5b0490505b90565b600e5481565b601f5481565b60003073ffffffffffffffffffffffffffffffffffffffff1631905090565b600d5481565b6000602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156122c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f61646d696e20726571756972656400000000000000000000000000000000000081525060200191505060405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323ba467a6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561234957600080fd5b505af115801561235d573d6000803e3d6000fd5b505050506040513d602081101561237357600080fd5b810190808051906020019092919050505090508015156123fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f746f6f206561726c79000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60001515602760009054906101000a900460ff161515141515612486576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f616c72656164792073657400000000000000000000000000000000000000000081525060200191505060405180910390fd5b426026819055506001602760006101000a81548160ff02191690831515021790555081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000602060006101000a81548160ff0219169083151502179055505050565b602760019054906101000a900460ff1681565b60236020528060005260406000206000915090505481565b6000601a54905090565b601e81565b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125cd846132ef565b01039050919050565b600080601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612621612d76565b1461262d57600061266e565b601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020545b905080600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054602160006126bd612d76565b8152602001908152602001600020540203915050919050565b60008060008060008060008060008060006126f08c613c71565b6126f86116b3565b9a5034995089601660008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555060648a81151561275657fe5b04985061276e600f548a613f7d90919063ffffffff16565b9750612785600e548a613f7d90919063ffffffff16565b965061279c600d548a613f7d90919063ffffffff16565b9550858789010194506127b8858b613fbb90919063ffffffff16565b9350896018540160188190555089602360006127d2612d76565b8152602001908152602001600020600082825401925050819055506127f98c898989613fdc565b602060009054906101000a900460ff161561281957612818848c613ffe565b5b6128228c6132ef565b925061282d8c612dfb565b91506128388c6125d6565b90506128458c858d614243565b506128528c848484613d54565b505050505050505050505050565b602060019054906101000a900460ff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000806128c76121a0565b90506128dc8184613f7d90919063ffffffff16565b915050919050565b60136020528060005260406000206000915090505481565b60226020528060005260406000206000915090505481565b60265481565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e1060180281565b6000612967612956613849565b600054613f7d90919063ffffffff16565b905090565b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612a025780601f106129d757610100808354040283529160200191612a02565b820191906000526020600020905b8154815290600101906020018083116129e557829003601f168201915b505050505081565b6000806000806000809350612a1d612d76565b9250600683039150601f54821015612a3557601f5491505b8190505b8281111515612a7757612a68602260008381526020019081526020016000205485613f5c90919063ffffffff16565b93508080600101915050612a39565b8394505050505090565b601a5481565b600080600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612b4f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f42616e6b204f6e6c79000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b612b58836132ef565b90506000811415612b6c5760009150612d70565b612bbe81601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144dc90919063ffffffff16565b601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612c53601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482613f5c90919063ffffffff16565b601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e9288d7282856040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506000604051808303818588803b158015612d5357600080fd5b505af1158015612d67573d6000803e3d6000fd5b50505050508091505b50919050565b6000610e1060180242811515612d8857fe5b04905090565b6000339050612d9c816126d6565b50565b6000612dac338484611b44565b506001905092915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000612de7613218565b612def611f2d565b01905090565b60185481565b600080612e0661387e565b9050601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082815260200190815260200160002054600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601d6000848152602001908152602001600020540203915050919050565b60246020528060005260406000206000915090505481565b600080600080349350600f54600e5401600e548502811515612eed57fe5b049250612f038385613fbb90919063ffffffff16565b9150612f0d6116b3565b9050612f1c3383856000613fdc565b602060009054906101000a900460ff1615612f3d57612f3c600082613ffe565b5b50505050565b600f5481565b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000339150602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515613083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f6465762e205465616d206f6e6c7900000000000000000000000000000000000081525060200191505060405180910390fd5b61308c826132ef565b905060008114156130a057600092506131ef565b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555061313f601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482613f5c90919063ffffffff16565b601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156131ea573d6000803e3d6000fd5b508092505b505090565b601b6020528060005260406000206000915090505481565b610e10601802601e0281565b6000806000806000925061322a612d76565b91508190505b8160078201111561326157602460008281526020019081526020016000205483019250808060019003915050613230565b82935050505090565b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905090565b60116020528060005260406000206000915090505481565b6000613396601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613388600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601c54613f7d90919063ffffffff16565b61452090919063ffffffff16565b9050919050565b60006133a8336132ef565b905090565b60146020528060005260406000206000915090505481565b600080600080600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111515613480576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f6e6f74206f776e20616e7920746f6b656e00000000000000000000000000000081525060200191505060405180910390fd5b602760009054906101000a900460ff161515613504576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f73776170206e6f7420616374697665640000000000000000000000000000000081525060200191505060405180910390fd5b339250600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549150613552836132ef565b905061355e8383614564565b81019050613570836000806000613d54565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634c2516de8284866040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001925050506000604051808303818588803b15801561363557600080fd5b505af1158015613649573d6000803e3d6000fd5b5050505050505050565b600080600080600080600080600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111515613714576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f6e6f74206f776e20616e7920746f6b656e00000000000000000000000000000081525060200191505060405180910390fd5b61371d33613c71565b339650613729876132ef565b955061373487612dfb565b945061373f876125d6565b935061374b8789614564565b92506064613764600f5485613f7d90919063ffffffff16565b81151561376d57fe5b0491506137838284613fbb90919063ffffffff16565b90508260195401601981905550826024600061379d612d76565b8152602001908152602001600020600082825401925050819055506137cb8187613f5c90919063ffffffff16565b955080601360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555061382687878787613d54565b6138333383600080613fdc565b5050505050505050565b600c5481565b60175481565b60008060006138566116b3565b9150600d54600e54600f5401019050806064036064830281151561387657fe5b049250505090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663eb95f0bf6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561390657600080fd5b505af115801561391a573d6000803e3d6000fd5b505050506040513d602081101561393057600080fd5b8101908080519060200190929190505050905090565b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613a0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f61646d696e20726571756972656400000000000000000000000000000000000081525060200191505060405180910390fd5b602060009054906101000a900460ff1615602060006101000a81548160ff021916908315150217905550565b60105481565b60166020528060005260406000206000915090505481565b6000808284811515613a6357fe5b0490508091505092915050565b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515613b27576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6e6f7420656e6f75676820746f207472616e736665720000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515613c6c57613beb81600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fbb90919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b613c79612d76565b601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141515613d5157613cc8612d76565b601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b50565b6000613d5e61387e565b9050613dc684613db8600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601c54613f7d90919063ffffffff16565b61452090919063ffffffff16565b601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555082600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601d6000848152602001908152602001600020540203601e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000208190555081600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460216000613f01612d76565b8152602001908152602001600020540203601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505050565b6000808284019050838110151515613f7357600080fd5b8091505092915050565b6000806000841415613f925760009150613fb4565b8284029050828482811515613fa357fe5b04141515613fb057600080fd5b8091505b5092915050565b600080838311151515613fcd57600080fd5b82840390508091505092915050565b613fe58361474e565b613fee8261482a565b613ff8848261496d565b50505050565b600080600080600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b7e097736040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561408a57600080fd5b505af115801561409e573d6000803e3d6000fd5b505050506040513d60208110156140b457600080fd5b810190808051906020019092919050505093508360116000602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550614161602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166132ef565b9250600c546000548688860181151561417657fe5b040111156141835761423b565b6141ae602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612dfb565b91506141db602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166125d6565b905061420a602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168487614243565b5061423a602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008484613d54565b5b505050505050565b60008060001515602760009054906101000a900460ff1615151415156142f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f7377617020616374697665642c2073746f70206d696e74696e67206e6577207481526020017f6f6b656e7300000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60011515602760019054906101000a900460ff161515141515614382576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f746f6b656e2073616c65206e6f7420726561647900000000000000000000000081525060200191505060405180910390fd5b61438c8484613a55565b90506143a384601754613f5c90919063ffffffff16565b601781905550600c54600054820111156143d1576143ce600054600c54613fbb90919063ffffffff16565b90505b61442381600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613f5c90919063ffffffff16565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061447b81600054613f5c90919063ffffffff16565b6000819055508473ffffffffffffffffffffffffffffffffffffffff1660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3809150509392505050565b6000808284019050600083121580156144f55750838112155b8061450b575060008312801561450a57508381125b5b151561451657600080fd5b8091505092915050565b6000808284039050600083121580156145395750838113155b8061454f575060008312801561454e57508381135b5b151561455a57600080fd5b8091505092915050565b60008082600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561461e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f6e6f7420656e6f75676820746f206275726e000000000000000000000000000081525060200191505060405180910390fd5b614627836128bc565b905061463e81601754613fbb90919063ffffffff16565b60178190555061469683600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fbb90919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506146ee83600054613fbb90919063ffffffff16565b60008190555060008473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a38091505092915050565b6147c28160116000602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461452090919063ffffffff16565b60116000602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b60008060008084141561483c57614967565b83601a60008282540192505081905550614854612d76565b925061487c602260008581526020019081526020016000205485613f5c90919063ffffffff16565b60226000858152602001908152602001600020819055506000805414156148ab576148a68461474e565b614966565b6148c1600054858115156148bb57fe5b0661474e565b600054848115156148ce57fe5b0491506148e682601c54613f5c90919063ffffffff16565b601c819055506148f461387e565b905081601d60008381526020019081526020016000206000828254019250508190555083601b6000838152602001908152602001600020600082825401925050819055506021600084815260200190815260200160002054820160216000858152602001908152602001600020819055505b5b50505050565b600081141561497b57614a52565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e947962b82846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506000604051808303818588803b158015614a3857600080fd5b505af1158015614a4c573d6000803e3d6000fd5b50505050505b50505600a165627a7a72305820ab0acfb6d6612aa9401942bc92454a1216bef3b36ab7d2dbc8149941ae65f98c0029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000888888203c05f29a5e2174d9716af4348c4cee50
-----Decoded View---------------
Arg [0] : _devTeam (address): 0x888888203c05F29a5E2174D9716af4348c4ceE50
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000888888203c05f29a5e2174d9716af4348c4cee50
Swarm Source
bzzr://ab0acfb6d6612aa9401942bc92454a1216bef3b36ab7d2dbc8149941ae65f98c
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.