Overview
ETH Balance
4.435706531749857761 ETH
Eth Value
$14,923.76 (@ $3,364.46/ETH)Token Holdings
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 998 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw | 16402954 | 706 days ago | IN | 0 ETH | 0.00054005 | ||||
Withdraw | 9427587 | 1778 days ago | IN | 0 ETH | 0.0041143 | ||||
Withdraw | 6797050 | 2212 days ago | IN | 0 ETH | 0.00022103 | ||||
Withdraw | 6660830 | 2234 days ago | IN | 0 ETH | 0.00091416 | ||||
Withdraw | 6660131 | 2234 days ago | IN | 0 ETH | 0.00037776 | ||||
Withdraw | 6587938 | 2246 days ago | IN | 0 ETH | 0.00062741 | ||||
Buy | 6586958 | 2246 days ago | IN | 0.001 ETH | 0.00275388 | ||||
Buy | 6584016 | 2247 days ago | IN | 0.01 ETH | 0.00067738 | ||||
Withdraw | 6582217 | 2247 days ago | IN | 0 ETH | 0.00053285 | ||||
Withdraw | 6581235 | 2247 days ago | IN | 0 ETH | 0.00040271 | ||||
Withdraw | 6579971 | 2247 days ago | IN | 0 ETH | 0.00101579 | ||||
Buy | 6579954 | 2247 days ago | IN | 0.001 ETH | 0.00367184 | ||||
Withdraw | 6579088 | 2248 days ago | IN | 0 ETH | 0.0004895 | ||||
Buy | 6577962 | 2248 days ago | IN | 0.04 ETH | 0.00156328 | ||||
Buy Xname | 6577962 | 2248 days ago | IN | 0.1 ETH | 0.00218656 | ||||
Buy | 6577801 | 2248 days ago | IN | 0.003 ETH | 0.00185238 | ||||
Withdraw | 6577779 | 2248 days ago | IN | 0 ETH | 0.0003143 | ||||
Withdraw | 6576224 | 2248 days ago | IN | 0 ETH | 0.00039785 | ||||
Withdraw | 6574860 | 2248 days ago | IN | 0 ETH | 0.00035806 | ||||
Withdraw | 6574544 | 2248 days ago | IN | 0 ETH | 0.00060696 | ||||
Withdraw | 6574383 | 2248 days ago | IN | 0 ETH | 0.0008963 | ||||
Buy | 6574376 | 2248 days ago | IN | 0.001 ETH | 0.00458981 | ||||
Withdraw | 6574369 | 2248 days ago | IN | 0 ETH | 0.00059696 | ||||
Buy Xname | 6574314 | 2248 days ago | IN | 1 ETH | 0.0028832 | ||||
Buy Xname | 6574307 | 2248 days ago | IN | 0.2 ETH | 0.0026083 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
9427587 | 1778 days ago | 0.88088 ETH | ||||
6797050 | 2212 days ago | 0.02098482 ETH | ||||
6660830 | 2234 days ago | 0.264 ETH | ||||
6660131 | 2234 days ago | 0.8096 ETH | ||||
6587938 | 2246 days ago | 0.00209848 ETH | ||||
6586958 | 2246 days ago | 0.000005 ETH | ||||
6586958 | 2246 days ago | 0.000005 ETH | ||||
6584016 | 2247 days ago | 0.00005 ETH | ||||
6584016 | 2247 days ago | 0.00005 ETH | ||||
6582217 | 2247 days ago | 0.05211926 ETH | ||||
6581235 | 2247 days ago | 0.00393534 ETH | ||||
6579971 | 2247 days ago | 0.13248993 ETH | ||||
6579954 | 2247 days ago | 0.000005 ETH | ||||
6579954 | 2247 days ago | 0.000005 ETH | ||||
6577962 | 2248 days ago | 0.0002 ETH | ||||
6577962 | 2248 days ago | 0.0002 ETH | ||||
6577962 | 2248 days ago | 0.0005 ETH | ||||
6577962 | 2248 days ago | 0.0005 ETH | ||||
6577962 | 2248 days ago | 0.001 ETH | ||||
6577962 | 2248 days ago | 0.002 ETH | ||||
6577801 | 2248 days ago | 0.000015 ETH | ||||
6577801 | 2248 days ago | 0.000015 ETH | ||||
6577779 | 2248 days ago | 0.02758589 ETH | ||||
6576224 | 2248 days ago | 0.12596407 ETH | ||||
6574860 | 2248 days ago | 0.20994013 ETH |
Loading...
Loading
Contract Name:
FairBank
Compiler Version
v0.4.25+commit.59dbf8f1
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-09-27 */ pragma solidity ^0.4.25; /** * * https://fairdapp.com/bank/ https://fairdapp.com/bank/ https://fairdapp.com/bank/ * * _______ _ ______ _______ ______ ______ * (_______) (_) (______)(_______|_____ (_____ \ * _____ _____ _ ____ _ _ _______ _____) )____) ) * | ___|____ | |/ ___) | | | ___ | ____/ ____/ * | | / ___ | | | | |__/ /| | | | | | | * |_| \_____|_|_| |_____/ |_| |_|_| |_| * * ______ _ * (____ \ | | * ____) )_____ ____ | | _ * | __ ((____ | _ \| |_/ ) * | |__) ) ___ | | | | _ ( * |______/\_____|_| |_|_| \_) * * ______ _ _ * / _____|_) | | _ * ( (____ _ ____ _ _| | _____ _| |_ ___ ____ * \____ \| | \| | | | |(____ (_ _) _ \ / ___) * _____) ) | | | | |_| | |/ ___ | | || |_| | | * (______/|_|_|_|_|____/ \_)_____| \__)___/|_| * * * Warning: * * FairDAPP – Bank Simulator (actually this probably has more resemblance * of a government bond simulator but Bank is a more catchy name) * is a system designed to explore how a real world financial bank would * operate during a financial collapse without quantitative easing and bail outs. * This system is simulated through open source smart contract codes and pre-defined rules. * This contract may only be used internally for study purposes and all could be * lost by sending anything to this contract address. * All users are prohibited to interact with this contract if this * contract is in conflict with user’s local regulations or laws. * * -Original Contract built by the FairDAPP Community * -Code Audited by 8Bit & Etherguy (formula calculations are excluded from the audit) * * -The contract has an activation switch to activate the system. * -The resetTime and reduceTime functions have an on and off switch which the developer owner can control. * -No one can change anything else once the contract has been deployed. * * -No anti-whales and almost no restrictions on what a user can do! * -There is no need to FOMO, early players have no significant advantage over later players. * -Scaling is slow, the system is designed for players to stake many stages. * -The contract is fully solvent in any event (assuming there are no bugs). * -ie. The contract will always payout what it owes. * **/ contract ERC721{ function totalSupply() public view returns (uint256 total); function balanceOf(address _owner) public view returns (uint256 balance); function ownerOf(uint256 _tokenId) public view returns (address owner); function approve(address _to, uint256 _tokenId) public; function takeOwnership(uint256 _tokenId) public; function transfer(address _to, uint256 _tokenId) public; function transferFrom(address _from, address _to, uint256 _tokenId) public; event Transfer(address from, address to, uint256 tokenId); event Approval(address owner, address approved, uint256 tokenId); } contract FairBank is ERC721{ using SafeMath for uint256; using NameFilter for string; address public developerAddr; string public name = "FairDAPP - Bank Simulator"; string public symbol = "FBank"; uint256 public stageDuration; uint256 public standardProtectRatio; bool public activated = false; bool public modifyCountdown = false; uint256 public rId; uint256 public sId; mapping (uint256 => FBankdatasets.Round) public round; mapping (uint256 => mapping (uint256 => FBankdatasets.Stage)) public stage; mapping (address => bytes32) public register; mapping (bytes32 => address) public playerName; mapping (address => uint256[]) public playerGoodsList; mapping (address => uint256[]) public playerWithdrawList; /** * Anti clone protection. * Do not clone this contract without permission even if you manage to break the conceal. * The concealed code contains core calculations necessary for this contract to function, read line 1058. * This contract can be licensed for a fee, contact us instead of cloning! */ FairBankCompute constant private bankCompute = FairBankCompute(0x26DA117A72DBcB686c2FCF88c4BFC6110cAe0464); FBankdatasets.Goods[] public goodsList; FBankdatasets.Card[6] public cardList; mapping (uint256 => address) public cardIndexToApproved; modifier registerVerify() { require(msg.value == 10000000000000000, "registration fee is 0.01 ether, please set the exact amount"); _; } modifier isActivated() { require(activated == true, "FairBank its not ready yet. check ?eta in discord"); _; } modifier isDeveloperAddr() { require(msg.sender == developerAddr, "Permission denied"); _; } modifier modifyCountdownVerify() { require(modifyCountdown == true, "this feature is not turned on or has been turned off"); _; } modifier senderVerify() { require (msg.sender == tx.origin, "sender does not meet the rules"); _; } /** * Don't toy or spam the contract, it may raise the gas cost for everyone else. * The scientists will take anything below 0.001 ETH sent to the contract. * Thank you for your donation. */ modifier amountVerify() { if(msg.value < 1000000000000000){ developerAddr.send(msg.value); }else{ require(msg.value >= 1000000000000000, "minimum amount is 0.001 ether"); _; } } modifier playerVerify() { require(playerGoodsList[msg.sender].length > 0, "user has not purchased the product or has completed the withdrawal"); _; } modifier stepSizeVerify(uint256 _stepSize) { require(_stepSize <= 1000000, "step size must not exceed 1000000"); _; } constructor() public { developerAddr = msg.sender; stageDuration = 64800; standardProtectRatio = 57; uint256 i; while(i < cardList.length){ cardList[i].playerAddress = developerAddr; cardList[i].amount = 5000000000000000000; i++; } } function registered(string _playerName) senderVerify() registerVerify() payable public { bytes32 _name = _playerName.nameFilter(); require(_name != bytes32(0), "name cannot be empty"); require(playerName[_name] == address(0), "this name has already been registered"); require(register[msg.sender] == bytes32(0), "please do not repeat registration"); playerName[_name] = msg.sender; register[msg.sender] = _name; developerAddr.send(msg.value); } /** * Activation of contract with settings */ function activate() senderVerify() isDeveloperAddr() public { require(activated == false, "FairBank already activated"); activated = true; rId = 1; sId = 1; round[rId].start = now; stage[rId][sId].start = now; } function openModifyCountdown() senderVerify() isDeveloperAddr() public { require(modifyCountdown == false, "Time service is already open"); modifyCountdown = true; } function closeModifyCountdown() senderVerify() isDeveloperAddr() public { require(modifyCountdown == true, "Time service is already open"); modifyCountdown = false; } function purchaseCard(uint256 _cId) isActivated() senderVerify() payable public { address _player = msg.sender; uint256 _amount = msg.value; uint256 _purchasePrice = cardList[_cId].amount.mul(110) / 100; require( cardList[_cId].playerAddress != address(0) && cardList[_cId].playerAddress != _player && _amount >= _purchasePrice, "Failed purchase" ); if(cardIndexToApproved[_cId] != address(0)){ cardIndexToApproved[_cId].send( cardList[_cId].amount.mul(105) / 100 ); delete cardIndexToApproved[_cId]; }else cardList[_cId].playerAddress.send( cardList[_cId].amount.mul(105) / 100 ); developerAddr.send(cardList[_cId].amount.mul(5) / 100); if(_amount > _purchasePrice) _player.send(_amount.sub(_purchasePrice)); cardList[_cId].amount = _purchasePrice; cardList[_cId].playerAddress = _player; } /** * Fallback function to handle ethereum that was send straight to the contract * Unfortunately we cannot use a referral address this way. */ function() isActivated() senderVerify() amountVerify() payable public { buyAnalysis(100, standardProtectRatio, address(0)); } function buy(uint256 _stepSize, uint256 _protectRatio, address _recommendAddr) isActivated() senderVerify() amountVerify() stepSizeVerify(_stepSize) public payable { buyAnalysis( _stepSize <= 0 ? 100 : _stepSize, _protectRatio <= 100 ? _protectRatio : standardProtectRatio, _recommendAddr ); } function buyXname(uint256 _stepSize, uint256 _protectRatio, string _recommendName) isActivated() senderVerify() amountVerify() stepSizeVerify(_stepSize) public payable { buyAnalysis( _stepSize <= 0 ? 100 : _stepSize, _protectRatio <= 100 ? _protectRatio : standardProtectRatio, playerName[_recommendName.nameFilter()] ); } /** * Standard withdraw function. */ function withdraw() isActivated() senderVerify() playerVerify() public { address _player = msg.sender; uint256[] memory _playerGoodsList = playerGoodsList[_player]; uint256 length = _playerGoodsList.length; uint256 _totalAmount; uint256 _amount; uint256 _withdrawSid; uint256 _reachAmount; bool _finish; uint256 i; delete playerGoodsList[_player]; while(i < length){ (_amount, _withdrawSid, _reachAmount, _finish) = getEarningsAmountByGoodsIndex(_playerGoodsList[i]); if(_finish == true){ playerWithdrawList[_player].push(_playerGoodsList[i]); }else{ goodsList[_playerGoodsList[i]].withdrawSid = _withdrawSid; goodsList[_playerGoodsList[i]].reachAmount = _reachAmount; playerGoodsList[_player].push(_playerGoodsList[i]); } _totalAmount = _totalAmount.add(_amount); i++; } _player.transfer(_totalAmount); } /** * Backup withdraw function in case gas is too high to use standard withdraw. */ function withdrawByGid(uint256 _gId) isActivated() senderVerify() playerVerify() public { address _player = msg.sender; uint256 _amount; uint256 _withdrawSid; uint256 _reachAmount; bool _finish; (_amount, _withdrawSid, _reachAmount, _finish) = getEarningsAmountByGoodsIndex(_gId); if(_finish == true){ for(uint256 i = 0; i < playerGoodsList[_player].length; i++){ if(playerGoodsList[_player][i] == _gId) break; } require(i < playerGoodsList[_player].length, "gid is wrong"); playerWithdrawList[_player].push(_gId); playerGoodsList[_player][i] = playerGoodsList[_player][playerGoodsList[_player].length - 1]; playerGoodsList[_player].length--; }else{ goodsList[_gId].withdrawSid = _withdrawSid; goodsList[_gId].reachAmount = _reachAmount; } _player.transfer(_amount); } function resetTime() modifyCountdownVerify() senderVerify() public payable { uint256 _rId = rId; uint256 _sId = sId; uint256 _amount = msg.value; uint256 _targetExpectedAmount = getStageTargetAmount(_sId); uint256 _targetAmount = stage[_rId][_sId].dividendAmount <= _targetExpectedAmount ? _targetExpectedAmount : stage[_rId][_sId].dividendAmount; _targetAmount = _targetAmount.mul(100) / 88; uint256 _costAmount = _targetAmount.mul(20) / 100; if(_costAmount > 3 ether) _costAmount = 3 ether; require(_amount >= _costAmount, "Not enough price"); stage[_rId][_sId].start = now; cardList[5].playerAddress.send(_costAmount / 2); developerAddr.send(_costAmount / 2); if(_amount > _costAmount) msg.sender.send(_amount.sub(_costAmount)); } function reduceTime() modifyCountdownVerify() senderVerify() public payable { uint256 _rId = rId; uint256 _sId = sId; uint256 _amount = msg.value; uint256 _targetExpectedAmount = getStageTargetAmount(_sId); uint256 _targetAmount = stage[_rId][_sId].dividendAmount <= _targetExpectedAmount ? _targetExpectedAmount : stage[_rId][_sId].dividendAmount; _targetAmount = _targetAmount.mul(100) / 88; uint256 _costAmount = _targetAmount.mul(30) / 100; if(_costAmount > 3 ether) _costAmount = 3 ether; require(_amount >= _costAmount, "Not enough price"); stage[_rId][_sId].start = now - stageDuration + 1800; cardList[5].playerAddress.send(_costAmount / 2); developerAddr.send(_costAmount / 2); if(_amount > _costAmount) msg.sender.send(_amount.sub(_costAmount)); } /** * Core logic to analyse buy behaviour. */ function buyAnalysis(uint256 _stepSize, uint256 _protectRatio, address _recommendAddr) private { uint256 _rId = rId; uint256 _sId = sId; uint256 _targetExpectedAmount = getStageTargetAmount(_sId); uint256 _targetAmount = stage[_rId][_sId].dividendAmount <= _targetExpectedAmount ? _targetExpectedAmount : stage[_rId][_sId].dividendAmount; _targetAmount = _targetAmount.mul(100) / 88; uint256 _stageTargetBalance = stage[_rId][_sId].amount > 0 ? _targetAmount.sub(stage[_rId][_sId].amount) : _targetAmount; if(now > stage[_rId][_sId].start.add(stageDuration) && _targetAmount > stage[_rId][_sId].amount ){ endRound(_rId, _sId); _rId = rId; _sId = sId; stage[_rId][_sId].start = now; _targetExpectedAmount = getStageTargetAmount(_sId); _targetAmount = stage[_rId][_sId].dividendAmount <= _targetExpectedAmount ? _targetExpectedAmount : stage[_rId][_sId].dividendAmount; _targetAmount = _targetAmount.mul(100) / 88; _stageTargetBalance = stage[_rId][_sId].amount > 0 ? _targetAmount.sub(stage[_rId][_sId].amount) : _targetAmount; } if(_stageTargetBalance > msg.value) buyDataRecord( _rId, _sId, _targetAmount, msg.value, _stepSize, _protectRatio ); else multiStake( msg.value, _stepSize, _protectRatio, _targetAmount, _stageTargetBalance ); /* This is a backstop check to ensure that the contract will always be solvent. It would reject any stakes with a protection ratio that the contract may not be able to repay. This backstop should never be needed under current settings. */ require( ( round[_rId].jackpotAmount.add(round[_rId].amount.mul(88) / 100) .sub(round[_rId].protectAmount) .sub(round[_rId].dividendAmount) ) > 0, "data error" ); bankerFeeDataRecord(_recommendAddr, msg.value, _protectRatio); } function multiStake(uint256 _amount, uint256 _stepSize, uint256 _protectRatio, uint256 _targetAmount, uint256 _stageTargetBalance) private { uint256 _rId = rId; uint256 _sId = sId; uint256 _crossStageNum = 1; uint256 _protectTotalAmount; uint256 _dividendTotalAmount; while(true){ if(_crossStageNum == 1){ playerDataRecord( _rId, _sId, _amount, _stageTargetBalance, _stepSize, _protectRatio, _crossStageNum ); round[_rId].amount = round[_rId].amount.add(_amount); round[_rId].protectAmount = round[_rId].protectAmount.add( _amount.mul(_protectRatio.mul(88)) / 10000); } buyStageDataRecord( _rId, _sId, _targetAmount, _stageTargetBalance, _sId. add(_stepSize), _protectRatio ); _dividendTotalAmount = _dividendTotalAmount.add(stage[_rId][_sId].dividendAmount); _protectTotalAmount = _protectTotalAmount.add(stage[_rId][_sId].protectAmount); _sId++; _amount = _amount.sub(_stageTargetBalance); _targetAmount = stage[_rId][_sId].dividendAmount <= getStageTargetAmount(_sId) ? getStageTargetAmount(_sId) : stage[_rId][_sId].dividendAmount; _targetAmount = _targetAmount.mul(100) / 88; _stageTargetBalance = _targetAmount; _crossStageNum++; if(_stageTargetBalance >= _amount){ buyStageDataRecord( _rId, _sId, _targetAmount, _amount, _sId.add(_stepSize), _protectRatio ); playerDataRecord( _rId, _sId, 0, _amount, _stepSize, _protectRatio, _crossStageNum ); if(_targetAmount == _amount) _sId++; stage[_rId][_sId].start = now; sId = _sId; round[_rId].protectAmount = round[_rId].protectAmount.sub(_protectTotalAmount); round[_rId].dividendAmount = round[_rId].dividendAmount.add(_dividendTotalAmount); break; } } } /** * Records all data. */ function buyDataRecord(uint256 _rId, uint256 _sId, uint256 _targetAmount, uint256 _amount, uint256 _stepSize, uint256 _protectRatio) private { uint256 _expectEndSid = _sId.add(_stepSize); uint256 _protectAmount = _amount.mul(_protectRatio.mul(88)) / 10000; round[_rId].amount = round[_rId].amount.add(_amount); round[_rId].protectAmount = round[_rId].protectAmount.add(_protectAmount); stage[_rId][_sId].amount = stage[_rId][_sId].amount.add(_amount); stage[_rId][_expectEndSid].protectAmount = stage[_rId][_expectEndSid].protectAmount.add(_protectAmount); stage[_rId][_expectEndSid].dividendAmount = stage[_rId][_expectEndSid].dividendAmount.add( computeEarningsAmount(_sId, _amount, _targetAmount, _expectEndSid, 100 - _protectRatio ) ); FBankdatasets.Goods memory _goods; _goods.rId = _rId; _goods.startSid = _sId; _goods.amount = _amount; _goods.endSid = _expectEndSid; _goods.protectRatio = _protectRatio; playerGoodsList[msg.sender].push(goodsList.push(_goods) - 1); } /** * Records the stage data. */ function buyStageDataRecord(uint256 _rId, uint256 _sId, uint256 _targetAmount, uint256 _amount, uint256 _expectEndSid, uint256 _protectRatio) private { uint256 _protectAmount = _amount.mul(_protectRatio.mul(88)) / 10000; if(_targetAmount != _amount) stage[_rId][_sId].amount = stage[_rId][_sId].amount.add(_amount); stage[_rId][_expectEndSid].protectAmount = stage[_rId][_expectEndSid].protectAmount.add(_protectAmount); stage[_rId][_expectEndSid].dividendAmount = stage[_rId][_expectEndSid].dividendAmount.add( computeEarningsAmount( _sId, _amount, _targetAmount, _expectEndSid, 100 - _protectRatio ) ); } /** * Records the player data. */ function playerDataRecord(uint256 _rId, uint256 _sId, uint256 _totalAmount, uint256 _stageBuyAmount, uint256 _stepSize, uint256 _protectRatio, uint256 _crossStageNum) private { if(_crossStageNum <= 1){ FBankdatasets.Goods memory _goods; _goods.rId = _rId; _goods.startSid = _sId; _goods.amount = _totalAmount; _goods.stepSize = _stepSize; _goods.protectRatio = _protectRatio; if(_crossStageNum == 1) _goods.startAmount = _stageBuyAmount; playerGoodsList[msg.sender].push(goodsList.push(_goods) - 1); } else{ uint256 _goodsIndex = goodsList.length - 1; goodsList[_goodsIndex].endAmount = _stageBuyAmount; goodsList[_goodsIndex].endSid = _sId; } } function bankerFeeDataRecord(address _recommendAddr, uint256 _amount, uint256 _protectRatio) private { uint256 _jackpotProportion = 80; if(_recommendAddr != address(0) && _recommendAddr != msg.sender && (register[_recommendAddr] != bytes32(0)) ){ _recommendAddr.send(_amount / 50); msg.sender.send(_amount / 100); } else _jackpotProportion = 110; round[rId].jackpotAmount = round[rId].jackpotAmount.add(_amount.mul(_jackpotProportion).div(1000)); uint256 _cardAmount = _amount / 200; if(_protectRatio == 0) cardList[0].playerAddress.send(_cardAmount); else if(_protectRatio > 0 && _protectRatio < 57) cardList[1].playerAddress.send(_cardAmount); else if(_protectRatio == 57) cardList[2].playerAddress.send(_cardAmount); else if(_protectRatio > 57 && _protectRatio < 100) cardList[3].playerAddress.send(_cardAmount); else if(_protectRatio == 100) cardList[4].playerAddress.send(_cardAmount); developerAddr.send(_amount / 200); } function endRound(uint256 _rId, uint256 _sId) private { round[_rId].end = now; round[_rId].ended = true; round[_rId].endSid = _sId; if(stage[_rId][_sId].amount > 0) round[_rId + 1].jackpotAmount = ( round[_rId].jackpotAmount.add(round[_rId].amount.mul(88) / 100) .sub(round[_rId].protectAmount) .sub(round[_rId].dividendAmount) ).mul(20).div(100); else round[_rId + 1].jackpotAmount = ( round[_rId].jackpotAmount.add(round[_rId].amount.mul(88) / 100) .sub(round[_rId].protectAmount) .sub(round[_rId].dividendAmount) ); round[_rId + 1].start = now; rId++; sId = 1; } function getStageTargetAmount(uint256 _sId) public view returns(uint256) { return bankCompute.getStageTargetAmount(_sId); } function computeEarningsAmount(uint256 _sId, uint256 _amount, uint256 _currentTargetAmount, uint256 _expectEndSid, uint256 _ratio) public view returns(uint256) { return bankCompute.computeEarningsAmount(_sId, _amount, _currentTargetAmount, _expectEndSid, _ratio); } function getEarningsAmountByGoodsIndex(uint256 _goodsIndex) public view returns(uint256, uint256, uint256, bool) { FBankdatasets.Goods memory _goods = goodsList[_goodsIndex]; uint256 _sId = sId; uint256 _amount; uint256 _targetExpectedAmount; uint256 _targetAmount; if(_goods.stepSize == 0){ if(round[_goods.rId].ended == true){ if(round[_goods.rId].endSid > _goods.endSid){ _targetExpectedAmount = getStageTargetAmount(_goods.startSid); _targetAmount = stage[_goods.rId][_goods.startSid].dividendAmount <= _targetExpectedAmount ? _targetExpectedAmount : stage[_goods.rId][_goods.startSid].dividendAmount; _targetAmount = _targetAmount.mul(100) / 88; _amount = computeEarningsAmount( _goods.startSid, _goods.amount, _targetAmount, _goods.endSid, 100 - _goods.protectRatio ); }else _amount = _goods.amount.mul(_goods.protectRatio.mul(88)) / 10000; if(round[_goods.rId].endSid == _goods.startSid) _amount = _amount.add( _goods.amount.mul( getRoundJackpot(_goods.rId) ).div(stage[_goods.rId][_goods.startSid].amount) ); return (_amount, 0, 0, true); }else{ if(_sId > _goods.endSid){ _targetExpectedAmount = getStageTargetAmount(_goods.startSid); _targetAmount = stage[_goods.rId][_goods.startSid].dividendAmount <= _targetExpectedAmount ? _targetExpectedAmount : stage[_goods.rId][_goods.startSid].dividendAmount; _targetAmount = _targetAmount.mul(100) / 88; _amount = computeEarningsAmount( _goods.startSid, _goods.amount, _targetAmount, _goods.endSid, 100 - _goods.protectRatio ); }else return (0, 0, 0, false); } return (_amount, 0, 0, true); }else{ uint256 _startSid = _goods.withdrawSid == 0 ? _goods.startSid : _goods.withdrawSid; uint256 _ratio = 100 - _goods.protectRatio; uint256 _reachAmount = _goods.reachAmount; if(round[_goods.rId].ended == true){ while(true){ if(_startSid - (_goods.withdrawSid == 0 ? _goods.startSid : _goods.withdrawSid) > 100){ return (_amount, _startSid, _reachAmount, false); } if(round[_goods.rId].endSid > _startSid.add(_goods.stepSize)){ _targetExpectedAmount = getStageTargetAmount(_startSid); _targetAmount = stage[_goods.rId][_startSid].dividendAmount <= _targetExpectedAmount ? _targetExpectedAmount : stage[_goods.rId][_startSid].dividendAmount; _targetAmount = _targetAmount.mul(100) / 88; if(_startSid == _goods.endSid){ _amount = _amount.add( computeEarningsAmount( _startSid, _goods.endAmount, _targetAmount, _startSid.add(_goods.stepSize), _ratio ) ); return (_amount, _goods.endSid, 0, true); } _amount = _amount.add( computeEarningsAmount( _startSid, _startSid == _goods.startSid ? _goods.startAmount : _targetAmount, _targetAmount, _startSid.add(_goods.stepSize), _ratio ) ); _reachAmount = _reachAmount.add( _startSid == _goods.startSid ? _goods.startAmount : _targetAmount ); }else{ _amount = _amount.add( (_goods.amount.sub(_reachAmount)) .mul(_goods.protectRatio.mul(88)) / 10000 ); if(round[_goods.rId].endSid == _goods.endSid) _amount = _amount.add( _goods.endAmount.mul(getRoundJackpot(_goods.rId)) .div(stage[_goods.rId][_goods.endSid].amount) ); return (_amount, _goods.endSid, 0, true); } _startSid++; } }else{ while(true){ if(_startSid - (_goods.withdrawSid == 0 ? _goods.startSid : _goods.withdrawSid) > 100){ return (_amount, _startSid, _reachAmount, false); } if(_sId > _startSid.add(_goods.stepSize)){ _targetExpectedAmount = getStageTargetAmount(_startSid); _targetAmount = stage[_goods.rId][_startSid].dividendAmount <= _targetExpectedAmount ? _targetExpectedAmount : stage[_goods.rId][_startSid].dividendAmount; _targetAmount = _targetAmount.mul(100) / 88; if(_startSid == _goods.endSid){ _amount = _amount.add( computeEarningsAmount( _startSid, _goods.endAmount, _targetAmount, _startSid.add(_goods.stepSize), _ratio ) ); return (_amount, _goods.endSid, 0, true); } _amount = _amount.add( computeEarningsAmount( _startSid, _startSid == _goods.startSid ? _goods.startAmount : _targetAmount, _targetAmount, _startSid.add(_goods.stepSize), _ratio ) ); _reachAmount = _reachAmount.add( _startSid == _goods.startSid ? _goods.startAmount : _targetAmount ); }else return (_amount, _startSid, _reachAmount, false); _startSid++; } } } } function getRoundJackpot(uint256 _rId) public view returns(uint256) { return ( ( round[_rId].jackpotAmount .add(round[_rId].amount.mul(88) / 100)) .sub(round[_rId].protectAmount) .sub(round[_rId].dividendAmount) ).mul(80).div(100); } function getHeadInfo() public view returns(uint256, uint256, uint256, uint256, uint256, uint256) { uint256 _targetExpectedAmount = getStageTargetAmount(sId); return ( rId, sId, stage[rId][sId].start.add(stageDuration), stage[rId][sId].amount, ( stage[rId][sId].dividendAmount <= _targetExpectedAmount ? _targetExpectedAmount : stage[rId][sId].dividendAmount ).mul(100) / 88, round[rId].jackpotAmount.add(round[rId].amount.mul(88) / 100) .sub(round[rId].protectAmount) .sub(round[rId].dividendAmount) ); } function getPlayerGoodList(address _player) public view returns(uint256[]) { return playerGoodsList[_player]; } function totalSupply() public view returns (uint256 total) { return cardList.length; } function balanceOf(address _owner) public view returns (uint256 balance) { uint256 _length = cardList.length; uint256 _count; for(uint256 i = 0; i < _length; i++){ if(cardList[i].playerAddress == _owner) _count++; } return _count; } function ownerOf(uint256 _tokenId) public view returns (address owner) { require(cardList.length > _tokenId, "tokenId error"); owner = cardList[_tokenId].playerAddress; require(owner != address(0), "No owner"); } function approve(address _to, uint256 _tokenId) senderVerify() public { require (register[_to] != bytes32(0), "Not a registered user"); require (msg.sender == cardList[_tokenId].playerAddress, "The card does not belong to you"); require (cardList.length > _tokenId, "tokenId error"); require (cardIndexToApproved[_tokenId] == address(0), "Approved"); cardIndexToApproved[_tokenId] = _to; emit Approval(msg.sender, _to, _tokenId); } function takeOwnership(uint256 _tokenId) senderVerify() public { address _newOwner = msg.sender; address _oldOwner = cardList[_tokenId].playerAddress; require(_newOwner != address(0), "Address error"); require(_newOwner == cardIndexToApproved[_tokenId], "Without permission"); cardList[_tokenId].playerAddress = _newOwner; delete cardIndexToApproved[_tokenId]; emit Transfer(_oldOwner, _newOwner, _tokenId); } function transfer(address _to, uint256 _tokenId) senderVerify() public { require (msg.sender == cardList[_tokenId].playerAddress, "The card does not belong to you"); require(_to != address(0), "Address error"); require(_to == cardIndexToApproved[_tokenId], "Without permission"); cardList[_tokenId].playerAddress = _to; if(cardIndexToApproved[_tokenId] != address(0)) delete cardIndexToApproved[_tokenId]; emit Transfer(msg.sender, _to, _tokenId); } function transferFrom(address _from, address _to, uint256 _tokenId) senderVerify() public { require (_from == cardList[_tokenId].playerAddress, "Owner error"); require(_to != address(0), "Address error"); require(_to == cardIndexToApproved[_tokenId], "Without permission"); cardList[_tokenId].playerAddress = _to; delete cardIndexToApproved[_tokenId]; emit Transfer(_from, _to, _tokenId); } } library FBankdatasets { struct Round { uint256 start; uint256 end; bool ended; uint256 endSid; uint256 amount; uint256 protectAmount; uint256 dividendAmount; uint256 jackpotAmount; } struct Stage { uint256 start; uint256 amount; uint256 protectAmount; uint256 dividendAmount; } struct Goods { uint256 rId; uint256 startSid; uint256 endSid; uint256 withdrawSid; uint256 amount; uint256 startAmount; uint256 endAmount; uint256 reachAmount; uint256 stepSize; uint256 protectRatio; } struct Card { address playerAddress; uint256 amount; } } /** * Anti clone protection. * Do not clone this contract without permission even if you manage to break the conceal. * The concealed code contains core calculations necessary for this contract to function. * This contract can be licensed for a fee, contact us instead of cloning! */ interface FairBankCompute { function getStageTargetAmount(uint256 _sId) external view returns(uint256); function computeEarningsAmount(uint256 _sId, uint256 _amount, uint256 _currentTargetAmount, uint256 _expectEndSid, uint256 _ratio) external view returns(uint256); } library NameFilter { function nameFilter(string _input) internal pure returns(bytes32) { bytes memory _temp = bytes(_input); uint256 _length = _temp.length; //sorry limited to 32 characters require (_length <= 32 && _length > 3, "string must be between 4 and 32 characters"); // make sure it doesnt start with or end with space require(_temp[0] != 0x20 && _temp[_length-1] != 0x20, "string cannot start or end with space"); // make sure first two characters are not 0x if (_temp[0] == 0x30) { require(_temp[1] != 0x78, "string cannot start with 0x"); require(_temp[1] != 0x58, "string cannot start with 0X"); } for (uint256 i = 0; i < _length; i++) { require ( // OR uppercase A-Z (_temp[i] > 0x40 && _temp[i] < 0x5b) || // OR lowercase a-z (_temp[i] > 0x60 && _temp[i] < 0x7b) || // or 0-9 (_temp[i] > 0x2f && _temp[i] < 0x3a), "string contains invalid characters" ); } bytes32 _ret; assembly { _ret := mload(add(_temp, 32)) } return (_ret); } } /** * @title SafeMath v0.1.9 * @dev Math operations with safety checks that throw on error */ library SafeMath { /** * @dev Adds two numbers, throws on overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } /** * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } /** * @dev Multiplies two numbers, throws on overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; assert(c / a == b); return c; } /** * @dev Integer division of two numbers, truncating the quotient. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { assert(b > 0); // Solidity automatically throws when dividing by 0 uint256 c = a / b; assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev gives square root of given x. */ function sqrt(uint256 x) internal pure returns (uint256 y) { uint256 z = ((add(x,1)) / 2); y = x; while (z < y) { y = z; z = ((add((x / z),z)) / 2); } } /** * @dev gives square. multiplies x by x */ function sq(uint256 x) internal pure returns (uint256) { return (mul(x,x)); } /** * @dev x to the power of y */ function pwr(uint256 x, uint256 y) internal pure returns (uint256) { if (x==0) return (0); else if (y==0) return (1); else { uint256 z = x; for (uint256 i=1; i < y; i++) z = mul(z,x); return (z); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"activate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"playerName","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_player","type":"address"}],"name":"getPlayerGoodList","outputs":[{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"total","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"activated","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"playerWithdrawList","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"goodsList","outputs":[{"name":"rId","type":"uint256"},{"name":"startSid","type":"uint256"},{"name":"endSid","type":"uint256"},{"name":"withdrawSid","type":"uint256"},{"name":"amount","type":"uint256"},{"name":"startAmount","type":"uint256"},{"name":"endAmount","type":"uint256"},{"name":"reachAmount","type":"uint256"},{"name":"stepSize","type":"uint256"},{"name":"protectRatio","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"closeModifyCountdown","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"developerAddr","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"name":"stage","outputs":[{"name":"start","type":"uint256"},{"name":"amount","type":"uint256"},{"name":"protectAmount","type":"uint256"},{"name":"dividendAmount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"round","outputs":[{"name":"start","type":"uint256"},{"name":"end","type":"uint256"},{"name":"ended","type":"bool"},{"name":"endSid","type":"uint256"},{"name":"amount","type":"uint256"},{"name":"protectAmount","type":"uint256"},{"name":"dividendAmount","type":"uint256"},{"name":"jackpotAmount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"cardIndexToApproved","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"register","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rId","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"standardProtectRatio","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_stepSize","type":"uint256"},{"name":"_protectRatio","type":"uint256"},{"name":"_recommendAddr","type":"address"}],"name":"buy","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_playerName","type":"string"}],"name":"registered","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"name":"owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"resetTime","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"_goodsIndex","type":"uint256"}],"name":"getEarningsAmountByGoodsIndex","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_sId","type":"uint256"},{"name":"_amount","type":"uint256"},{"name":"_currentTargetAmount","type":"uint256"},{"name":"_expectEndSid","type":"uint256"},{"name":"_ratio","type":"uint256"}],"name":"computeEarningsAmount","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":"_rId","type":"uint256"}],"name":"getRoundJackpot","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_cId","type":"uint256"}],"name":"purchaseCard","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"stageDuration","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"takeOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_gId","type":"uint256"}],"name":"withdrawByGid","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"sId","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"modifyCountdown","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_stepSize","type":"uint256"},{"name":"_protectRatio","type":"uint256"},{"name":"_recommendName","type":"string"}],"name":"buyXname","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"playerGoodsList","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getHeadInfo","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_sId","type":"uint256"}],"name":"getStageTargetAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"cardList","outputs":[{"name":"playerAddress","type":"address"},{"name":"amount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"openModifyCountdown","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"reduceTime","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"from","type":"address"},{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"owner","type":"address"},{"indexed":false,"name":"approved","type":"address"},{"indexed":false,"name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"}]
Contract Creation Code
60c0604052601960808190527f4661697244415050202d2042616e6b2053696d756c61746f720000000000000060a09081526200004091600191906200013c565b506040805180820190915260058082527f4642616e6b000000000000000000000000000000000000000000000000000000602090920191825262000087916002916200013c565b506005805461ffff19169055348015620000a057600080fd5b5060008054600160a060020a0319163317815561fd2060035560396004555b60068110156200013557600054600160a060020a0316600f8260068110620000e357fe5b600202018054600160a060020a031916600160a060020a0392909216919091179055674563918244f40000600f82600681106200011c57fe5b60020201600101819055508080600101915050620000bf565b50620001e1565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200017f57805160ff1916838001178555620001af565b82800160010185558215620001af579182015b82811115620001af57825182559160200191906001019062000192565b50620001bd929150620001c1565b5090565b620001de91905b80821115620001bd5760008155600101620001c8565b90565b61526080620001f16000396000f3006080604052600436106102035763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610357578063095ea7b3146103e15780630f15f4c01461040557806315daf5941461041a578063180392301461044e57806318160ddd146104bf578063186601ca146104e657806323b872dd1461050f57806323df93c11461053957806328d27f091461055d5780632d6ddfda146105c557806333b6baf5146105da57806334aed7a0146105ef57806334d5f37b14610630578063394baa0b146106895780633ccfd60b146106a15780634420e486146106b657806350197646146106d757806358761920146106ec57806359a87bc1146107015780635d2d5c371461071b5780636352211e1461076757806365a114f11461077f578063678bbf241461078757806370a08231146107c757806378c9f9cf146107e857806395d89b411461080c57806398f0412814610821578063a54447aa14610839578063a9059cbb14610844578063aafb088e14610868578063b2e6ceeb1461087d578063b604ed1b14610895578063bed47ed8146108ad578063c5d3ce1e146108c2578063cca63f4f146108d7578063ce2b78541461092a578063d571dbac1461094e578063d9daa49714610996578063d9f035aa146109ae578063ef8c2c58146109e9578063f60436cd146109fe575b60055460ff161515600114610264576040805160e560020a62461bcd02815260206004820152603260248201526000805160206151d58339815191526044820152600080516020615215833981519152606482015290519081900360840190fd5b3332146102a9576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206151f5833981519152604482015290519081900360640190fd5b66038d7ea4c680003410156102e75760008054604051600160a060020a03909116913480156108fc02929091818181858888f1935050505050610355565b66038d7ea4c68000341015610346576040805160e560020a62461bcd02815260206004820152601d60248201527f6d696e696d756d20616d6f756e7420697320302e303031206574686572000000604482015290519081900360640190fd5b61035560646004546000610a06565b005b34801561036357600080fd5b5061036c610d41565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103a657818101518382015260200161038e565b50505050905090810190601f1680156103d35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103ed57600080fd5b50610355600160a060020a0360043516602435610dce565b34801561041157600080fd5b50610355611026565b34801561042657600080fd5b506104326004356111b2565b60408051600160a060020a039092168252519081900360200190f35b34801561045a57600080fd5b5061046f600160a060020a03600435166111cd565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156104ab578181015183820152602001610493565b505050509050019250505060405180910390f35b3480156104cb57600080fd5b506104d461123a565b60408051918252519081900360200190f35b3480156104f257600080fd5b506104fb611240565b604080519115158252519081900360200190f35b34801561051b57600080fd5b50610355600160a060020a0360043581169060243516604435611249565b34801561054557600080fd5b506104d4600160a060020a0360043516602435611463565b34801561056957600080fd5b50610575600435611493565b604080519a8b5260208b0199909952898901979097526060890195909552608088019390935260a087019190915260c086015260e085015261010084015261012083015251908190036101400190f35b3480156105d157600080fd5b506103556114f5565b3480156105e657600080fd5b5061043261160e565b3480156105fb57600080fd5b5061060a60043560243561161d565b604080519485526020850193909352838301919091526060830152519081900360800190f35b34801561063c57600080fd5b5061064860043561164f565b604080519889526020890197909752941515878701526060870193909352608086019190915260a085015260c084015260e083015251908190036101000190f35b34801561069557600080fd5b50610432600435611696565b3480156106ad57600080fd5b506103556116b1565b3480156106c257600080fd5b506104d4600160a060020a0360043516611a4e565b3480156106e357600080fd5b506104d4611a60565b3480156106f857600080fd5b506104d4611a66565b610355600435602435600160a060020a0360443516611a6c565b6040805160206004803580820135601f8101849004840285018401909552848452610355943694929360249392840191908190840183828082843750949750611c669650505050505050565b34801561077357600080fd5b50610432600435611f0d565b610355611fdb565b34801561079357600080fd5b5061079f600435612286565b6040805194855260208501939093528383019190915215156060830152519081900360800190f35b3480156107d357600080fd5b506104d4600160a060020a0360043516612a0c565b3480156107f457600080fd5b506104d4600435602435604435606435608435612a5d565b34801561081857600080fd5b5061036c612b1f565b34801561082d57600080fd5b506104d4600435612b77565b610355600435612bc8565b34801561085057600080fd5b50610355600160a060020a0360043516602435612f20565b34801561087457600080fd5b506104d4613151565b34801561088957600080fd5b50610355600435613157565b3480156108a157600080fd5b5061035560043561331a565b3480156108b957600080fd5b506104d46136aa565b3480156108ce57600080fd5b506104fb6136b0565b604080516020600460443581810135601f81018490048402850184019095528484526103559482359460248035953695946064949201919081908401838280828437509497506136be9650505050505050565b34801561093657600080fd5b506104d4600160a060020a03600435166024356138d7565b34801561095a57600080fd5b506109636138f2565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b3480156109a257600080fd5b506104d4600435613a3e565b3480156109ba57600080fd5b506109c6600435613ae8565b60408051600160a060020a03909316835260208301919091528051918290030190f35b3480156109f557600080fd5b50610355613b11565b610355613c29565b60065460075460008080610a1984613a3e565b6000868152600960209081526040808320888452909152902060030154909350831015610a62576000858152600960209081526040808320878452909152902060030154610a64565b825b91506058610a7983606463ffffffff613e4a16565b811515610a8257fe5b600087815260096020908152604080832089845290915281206001015492909104935010610ab05781610ade565b6000858152600960209081526040808320878452909152902060010154610ade90839063ffffffff613e8016565b6003546000878152600960209081526040808320898452909152902054919250610b0e919063ffffffff613e9216565b42118015610b375750600085815260096020908152604080832087845290915290206001015482115b15610c3e57610b468585613ea1565b600654600754600082815260096020908152604080832084845290915290204290559095509350610b7684613a3e565b6000868152600960209081526040808320888452909152902060030154909350831015610bbf576000858152600960209081526040808320878452909152902060030154610bc1565b825b91506058610bd683606463ffffffff613e4a16565b811515610bdf57fe5b600087815260096020908152604080832089845290915281206001015492909104935010610c0d5781610c3b565b6000858152600960209081526040808320878452909152902060010154610c3b90839063ffffffff613e8016565b90505b34811115610c5957610c54858584348c8c613fef565b610c66565b610c663489898585614356565b600085815260086020526040812060068101546005820154600490920154610cd792610ccb918290606490610ca290605863ffffffff613e4a16565b811515610cab57fe5b60008d81526008602052604090206007015491900463ffffffff613e9216565b9063ffffffff613e8016565b11610d2c576040805160e560020a62461bcd02815260206004820152600a60248201527f64617461206572726f7200000000000000000000000000000000000000000000604482015290519081900360640190fd5b610d378634896145ea565b5050505050505050565b60018054604080516020600284861615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610dc65780601f10610d9b57610100808354040283529160200191610dc6565b820191906000526020600020905b815481529060010190602001808311610da957829003601f168201915b505050505081565b333214610e13576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206151f5833981519152604482015290519081900360640190fd5b600160a060020a0382166000908152600a60205260409020541515610e82576040805160e560020a62461bcd02815260206004820152601560248201527f4e6f742061207265676973746572656420757365720000000000000000000000604482015290519081900360640190fd5b600f8160068110610e8f57fe5b6002020154600160a060020a03163314610ef3576040805160e560020a62461bcd02815260206004820152601f60248201527f546865206361726420646f6573206e6f742062656c6f6e6720746f20796f7500604482015290519081900360640190fd5b60068110610f4b576040805160e560020a62461bcd02815260206004820152600d60248201527f746f6b656e4964206572726f7200000000000000000000000000000000000000604482015290519081900360640190fd5b6000818152601b6020526040902054600160a060020a031615610fb8576040805160e560020a62461bcd02815260206004820152600860248201527f417070726f766564000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6000818152601b60209081526040918290208054600160a060020a038616600160a060020a0319909116811790915582513381529182015280820183905290517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259181900360600190a15050565b33321461106b576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206151f5833981519152604482015290519081900360640190fd5b600054600160a060020a031633146110cd576040805160e560020a62461bcd02815260206004820152601160248201527f5065726d697373696f6e2064656e696564000000000000000000000000000000604482015290519081900360640190fd5b60055460ff1615611128576040805160e560020a62461bcd02815260206004820152601a60248201527f4661697242616e6b20616c726561647920616374697661746564000000000000604482015290519081900360640190fd5b6005805460ff1916600190811790915560068190556007819055600052427fad67d757c34507f157cacfa2e3153e9f260a2244f30428821be7be64587ac55f8190557f92e85d02570a8092d09a6e3a57665bc3815a2699a4074001bf1ccabf660f5a366020527fcc827bfc2dbd52cbec5736232342c6a272d0cf5ce2695a969eb442c9480de86d55565b600b60205260009081526040902054600160a060020a031681565b600160a060020a0381166000908152600c602090815260409182902080548351818402810184019094528084526060939283018282801561122d57602002820191906000526020600020905b815481526020019060010190808311611219575b505050505090505b919050565b60065b90565b60055460ff1681565b33321461128e576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206151f5833981519152604482015290519081900360640190fd5b600f816006811061129b57fe5b6002020154600160a060020a03848116911614611302576040805160e560020a62461bcd02815260206004820152600b60248201527f4f776e6572206572726f72000000000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a0382161515611362576040805160e560020a62461bcd02815260206004820152600d60248201527f41646472657373206572726f7200000000000000000000000000000000000000604482015290519081900360640190fd5b6000818152601b6020526040902054600160a060020a038381169116146113d3576040805160e560020a62461bcd02815260206004820152601260248201527f576974686f7574207065726d697373696f6e0000000000000000000000000000604482015290519081900360640190fd5b81600f82600681106113e157fe5b600202018054600160a060020a03928316600160a060020a0319918216179091556000838152601b602090815260409182902080549093169092558051868416815292851691830191909152818101839052517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360600190a1505050565b600d6020528160005260406000208181548110151561147e57fe5b90600052602060002001600091509150505481565b600e8054829081106114a157fe5b90600052602060002090600a0201600091509050806000015490806001015490806002015490806003015490806004015490806005015490806006015490806007015490806008015490806009015490508a565b33321461153a576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206151f5833981519152604482015290519081900360640190fd5b600054600160a060020a0316331461159c576040805160e560020a62461bcd02815260206004820152601160248201527f5065726d697373696f6e2064656e696564000000000000000000000000000000604482015290519081900360640190fd5b60055460ff610100909104161515600114611601576040805160e560020a62461bcd02815260206004820152601c60248201527f54696d65207365727669636520697320616c7265616479206f70656e00000000604482015290519081900360640190fd5b6005805461ff0019169055565b600054600160a060020a031681565b600960209081526000928352604080842090915290825290208054600182015460028301546003909301549192909184565b600860205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007909701549596949560ff9094169492939192909188565b601b60205260009081526040902054600160a060020a031681565b600554600090606090829081908190819081908190819060ff161515600114611726576040805160e560020a62461bcd02815260206004820152603260248201526000805160206151d58339815191526044820152600080516020615215833981519152606482015290519081900360840190fd5b33321461176b576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206151f5833981519152604482015290519081900360640190fd5b336000908152600c60205260408120541161181c576040805160e560020a62461bcd02815260206004820152604260248201527f7573657220686173206e6f7420707572636861736564207468652070726f647560448201527f6374206f722068617320636f6d706c657465642074686520776974686472617760648201527f616c000000000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b336000818152600c60209081526040918290208054835181840281018401909452808452939c5091929083018282801561187557602002820191906000526020600020905b815481526020019060010190808311611861575b50508351600160a060020a038e166000908152600c60205260408120959d50909b506118a694935091506151219050565b86811015611a0c576118ce88828151811015156118bf57fe5b90602001906020020151612286565b929750909550935091506001821515141561192c57600160a060020a0389166000908152600d60205260409020885189908390811061190957fe5b6020908102909101810151825460018101845560009384529190922001556119f2565b83600e898381518110151561193d57fe5b602090810290910101518154811061195157fe5b90600052602060002090600a02016003018190555082600e898381518110151561197757fe5b602090810290910101518154811061198b57fe5b90600052602060002090600a020160070181905550600c60008a600160a060020a0316600160a060020a0316815260200190815260200160002088828151811015156119d357fe5b6020908102909101810151825460018101845560009384529190922001555b611a02868663ffffffff613e9216565b95506001016118a6565b604051600160a060020a038a169087156108fc029088906000818181858888f19350505050158015611a42573d6000803e3d6000fd5b50505050505050505050565b600a6020526000908152604090205481565b60065481565b60045481565b60055460ff161515600114611acd576040805160e560020a62461bcd02815260206004820152603260248201526000805160206151d58339815191526044820152600080516020615215833981519152606482015290519081900360840190fd5b333214611b12576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206151f5833981519152604482015290519081900360640190fd5b66038d7ea4c68000341015611b505760008054604051600160a060020a03909116913480156108fc02929091818181858888f1935050505050611c61565b66038d7ea4c68000341015611baf576040805160e560020a62461bcd02815260206004820152601d60248201527f6d696e696d756d20616d6f756e7420697320302e303031206574686572000000604482015290519081900360640190fd5b82620f4240811115611c31576040805160e560020a62461bcd02815260206004820152602160248201527f737465702073697a65206d757374206e6f74206578636565642031303030303060448201527f3000000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b611c5f6000851115611c435784611c46565b60645b6064851115611c5757600454611c59565b845b84610a06565b505b505050565b6000333214611cad576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206151f5833981519152604482015290519081900360640190fd5b662386f26fc100003414611d31576040805160e560020a62461bcd02815260206004820152603b60248201527f726567697374726174696f6e2066656520697320302e30312065746865722c2060448201527f706c65617365207365742074686520657861637420616d6f756e740000000000606482015290519081900360840190fd5b611d3a826147ce565b9050801515611d93576040805160e560020a62461bcd02815260206004820152601460248201527f6e616d652063616e6e6f7420626520656d707479000000000000000000000000604482015290519081900360640190fd5b6000818152600b6020526040902054600160a060020a031615611e26576040805160e560020a62461bcd02815260206004820152602560248201527f74686973206e616d652068617320616c7265616479206265656e20726567697360448201527f7465726564000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b336000908152600a602052604090205415611eb1576040805160e560020a62461bcd02815260206004820152602160248201527f706c6561736520646f206e6f742072657065617420726567697374726174696f60448201527f6e00000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6000818152600b602090815260408083208054600160a060020a031916339081179091558352600a90915280822083905581549051600160a060020a0391909116913480156108fc02929091818181858888f150505050505050565b600060068210611f67576040805160e560020a62461bcd02815260206004820152600d60248201527f746f6b656e4964206572726f7200000000000000000000000000000000000000604482015290519081900360640190fd5b600f8260068110611f7457fe5b6002020154600160a060020a03169050801515611235576040805160e560020a62461bcd02815260206004820152600860248201527f4e6f206f776e6572000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6005546000908190819081908190819060ff610100909104161515600114612073576040805160e560020a62461bcd02815260206004820152603460248201527f746869732066656174757265206973206e6f74207475726e6564206f6e206f7260448201527f20686173206265656e207475726e6564206f6666000000000000000000000000606482015290519081900360840190fd5b3332146120b8576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206151f5833981519152604482015290519081900360640190fd5b600654955060075494503493506120ce85613a3e565b6000878152600960209081526040808320898452909152902060030154909350831015612117576000868152600960209081526040808320888452909152902060030154612119565b825b9150605861212e83606463ffffffff613e4a16565b81151561213757fe5b049150606461214d83601463ffffffff613e4a16565b81151561215657fe5b0490506729a2241af62c000081111561217457506729a2241af62c00005b808410156121cc576040805160e560020a62461bcd02815260206004820152601060248201527f4e6f7420656e6f75676820707269636500000000000000000000000000000000604482015290519081900360640190fd5b60008681526009602090815260408083208884529091529020429055600f60055b60029081029190910154604051600160a060020a0390911691830480156108fc02916000818181858888f1505060008054604051600160a060020a0390911694506002860480156108fc029450925090818181858888f19350505050508084111561227e57336108fc612266868463ffffffff613e8016565b6040518115909202916000818181858888f150505050505b505050505050565b600080600080612294615142565b6000806000806000806000600e8d8154811015156122ae57fe5b90600052602060002090600a0201610140604051908101604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152505097506007549650876101000151600014156125d057875160009081526008602052604090206002015460ff16151560011415612507576040808901518951600090815260086020529190912060030154111561242e576123908860200151613a3e565b88516000908152600960209081526040808320828d015184529091529020600301549095508510156123e35787516000908152600960209081526040808320828c015184529091529020600301546123e5565b845b935060586123fa85606463ffffffff613e4a16565b81151561240357fe5b04935061242788602001518960800151868b604001518c6101200151606403612a5d565b955061246b565b61271061245e61244d60588b6101200151613e4a90919063ffffffff16565b60808b01519063ffffffff613e4a16565b81151561246757fe5b0495505b60208089015189516000908152600890925260409091206003015414156124f25787516000908152600960209081526040808320828c0151845290915290206001015488516124ef916124e2916124d6906124c590612b77565b60808d01519063ffffffff613e4a16565b9063ffffffff614d4116565b879063ffffffff613e9216565b95505b949a5060009950899850600197508a946129fd565b87604001518711156125be576125208860200151613a3e565b88516000908152600960209081526040808320828d015184529091529020600301549095508510156125735787516000908152600960209081526040808320828c01518452909152902060030154612575565b845b9350605861258a85606463ffffffff613e4a16565b81151561259357fe5b0493506125b788602001518960800151868b604001518c6101200151606403612a5d565b95506124f2565b60009b508b9a508a99508998506129fd565b6060880151156125e45787606001516125ea565b87602001515b61012089015160e08a01518a516000908152600860205260409020600201549295506064919091039350915060ff161515600114156128ab575b6064886060015160001461263c578860600151612642565b88602001515b8403111561265c5785838260009b509b509b509b506129fd565b61010088015161267390849063ffffffff613e9216565b885160009081526008602052604090206003015411156127be5761269683613a3e565b885160009081526009602090815260408083208784529091529020600301549095508510156126e357875160009081526009602090815260408083208684529091529020600301546126e5565b845b935060586126fa85606463ffffffff613e4a16565b81151561270357fe5b04935087604001518314156127575761273d6124e2848a60c00151876127378d610100015189613e9290919063ffffffff16565b87612a5d565b6040890151909c509a5060009950600198508b95506129fd565b61278e6124e2848a60200151861461276f5786612775565b8a60a001515b876127378d610100015189613e9290919063ffffffff16565b95506127b7886020015184146127a457846127aa565b8860a001515b829063ffffffff613e9216565b90506128a0565b6128196127106128016127e060588c6101200151613e4a90919063ffffffff16565b60808c01516127f5908663ffffffff613e8016565b9063ffffffff613e4a16565b81151561280a57fe5b8891900463ffffffff613e9216565b6040808a01518a5160009081526008602052919091206003015491975014156128865787516000908152600960209081526040808320818c01518452909152902060010154885161273d916124e2916124d69061287590612b77565b60c08d01519063ffffffff613e4a16565b858860400151600060018191509b509b509b509b506129fd565b600190920191612624565b606488606001516000146128c35788606001516128c9565b88602001515b840311156128e35785838260009b509b509b509b506129fd565b6101008801516128fa90849063ffffffff613e9216565b8711156129e05761290a83613a3e565b885160009081526009602090815260408083208784529091529020600301549095508510156129575787516000908152600960209081526040808320868452909152902060030154612959565b845b9350605861296e85606463ffffffff613e4a16565b81151561297757fe5b04935087604001518314156129ab5761273d6124e2848a60c00151876127378d610100015189613e9290919063ffffffff16565b6129c36124e2848a60200151861461276f5786612775565b95506129d9886020015184146127a457846127aa565b90506129f2565b85838260009b509b509b509b506129fd565b6001909201916128ab565b50505050505050509193509193565b6000600681805b82811015612a5557600160a060020a038516600f8260068110612a3257fe5b6002020154600160a060020a03161415612a4d576001909101905b600101612a13565b509392505050565b604080517f78c9f9cf000000000000000000000000000000000000000000000000000000008152600481018790526024810186905260448101859052606481018490526084810183905290516000917326da117a72dbcb686c2fcf88c4bfc6110cae0464916378c9f9cf9160a48082019260209290919082900301818787803b158015612ae957600080fd5b505af1158015612afd573d6000803e3d6000fd5b505050506040513d6020811015612b1357600080fd5b50519695505050505050565b6002805460408051602060018416156101000260001901909316849004601f81018490048402820184019092528181529291830182828015610dc65780601f10610d9b57610100808354040283529160200191610dc6565b600081815260086020526040812060068101546005820154600490920154612bc2926064926124d6926050926127f59291610ccb919082908890610ca290605863ffffffff613e4a16565b92915050565b6005546000908190819060ff161515600114612c30576040805160e560020a62461bcd02815260206004820152603260248201526000805160206151d58339815191526044820152600080516020615215833981519152606482015290519081900360840190fd5b333214612c75576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206151f5833981519152604482015290519081900360640190fd5b3392503491506064612ca5606e600f8760068110612c8f57fe5b6002020160010154613e4a90919063ffffffff16565b811515612cae57fe5b0490506000600f8560068110612cc057fe5b6002020154600160a060020a031614801590612cff5750600160a060020a038316600f8560068110612cee57fe5b6002020154600160a060020a031614155b8015612d0b5750808210155b1515612d61576040805160e560020a62461bcd02815260206004820152600f60248201527f4661696c65642070757263686173650000000000000000000000000000000000604482015290519081900360640190fd5b6000848152601b6020526040902054600160a060020a031615612df3576000848152601b6020526040902054600160a060020a03166108fc6064612dad6069600f8960068110612c8f57fe5b811515612db657fe5b049081150290604051600060405180830381858888f15050506000868152601b602052604090208054600160a060020a031916905550612e4a9050565b600f8460068110612e0057fe5b6002020154600160a060020a03166108fc6064612e256069600f8960068110612c8f57fe5b811515612e2e57fe5b049081150290604051600060405180830381858888f150505050505b600054600160a060020a03166108fc6064612e6d6005600f8960068110612c8f57fe5b811515612e7657fe5b049081150290604051600060405180830381858888f193505050505080821115612ecf57600160a060020a0383166108fc612eb7848463ffffffff613e8016565b6040518115909202916000818181858888f150505050505b80600f8560068110612edd57fe5b600202016001018190555082600f85600681101515612ef857fe5b600202018054600160a060020a031916600160a060020a039290921691909117905550505050565b333214612f65576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206151f5833981519152604482015290519081900360640190fd5b600f8160068110612f7257fe5b6002020154600160a060020a03163314612fd6576040805160e560020a62461bcd02815260206004820152601f60248201527f546865206361726420646f6573206e6f742062656c6f6e6720746f20796f7500604482015290519081900360640190fd5b600160a060020a0382161515613036576040805160e560020a62461bcd02815260206004820152600d60248201527f41646472657373206572726f7200000000000000000000000000000000000000604482015290519081900360640190fd5b6000818152601b6020526040902054600160a060020a038381169116146130a7576040805160e560020a62461bcd02815260206004820152601260248201527f576974686f7574207065726d697373696f6e0000000000000000000000000000604482015290519081900360640190fd5b81600f82600681106130b557fe5b600202018054600160a060020a031916600160a060020a039283161790556000828152601b60205260409020541615613105576000818152601b602052604090208054600160a060020a03191690555b60408051338152600160a060020a038416602082015280820183905290517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360600190a15050565b60035481565b60008033321461319f576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206151f5833981519152604482015290519081900360640190fd5b339150600f83600681106131af57fe5b6002020154600160a060020a03908116915082161515613219576040805160e560020a62461bcd02815260206004820152600d60248201527f41646472657373206572726f7200000000000000000000000000000000000000604482015290519081900360640190fd5b6000838152601b6020526040902054600160a060020a0383811691161461328a576040805160e560020a62461bcd02815260206004820152601260248201527f576974686f7574207065726d697373696f6e0000000000000000000000000000604482015290519081900360640190fd5b81600f846006811061329857fe5b600202018054600160a060020a03928316600160a060020a0319918216179091556000858152601b602090815260409182902080549093169092558051848416815292851691830191909152818101859052517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360600190a1505050565b6005546000908190819081908190819060ff161515600114613388576040805160e560020a62461bcd02815260206004820152603260248201526000805160206151d58339815191526044820152600080516020615215833981519152606482015290519081900360840190fd5b3332146133cd576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206151f5833981519152604482015290519081900360640190fd5b336000908152600c60205260408120541161347e576040805160e560020a62461bcd02815260206004820152604260248201527f7573657220686173206e6f7420707572636861736564207468652070726f647560448201527f6374206f722068617320636f6d706c657465642074686520776974686472617760648201527f616c000000000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b33955061348a87612286565b9297509095509350915060018215151415613629575060005b600160a060020a0386166000908152600c602052604090205481101561350857600160a060020a0386166000908152600c602052604090208054889190839081106134ea57fe5b9060005260206000200154141561350057613508565b6001016134a3565b600160a060020a0386166000908152600c60205260409020548110613577576040805160e560020a62461bcd02815260206004820152600c60248201527f6769642069732077726f6e670000000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a0386166000818152600d602090815260408083208054600181018255908452828420018b9055928252600c905220805460001981019081106135bc57fe5b6000918252602080832090910154600160a060020a0389168352600c90915260409091208054839081106135ec57fe5b6000918252602080832090910192909255600160a060020a0388168152600c90915260409020805490613623906000198301615196565b50613674565b83600e8881548110151561363957fe5b90600052602060002090600a02016003018190555082600e8881548110151561365e57fe5b90600052602060002090600a0201600701819055505b604051600160a060020a0387169086156108fc029087906000818181858888f19350505050158015610d37573d6000803e3d6000fd5b60075481565b600554610100900460ff1681565b60055460ff16151560011461371f576040805160e560020a62461bcd02815260206004820152603260248201526000805160206151d58339815191526044820152600080516020615215833981519152606482015290519081900360840190fd5b333214613764576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206151f5833981519152604482015290519081900360640190fd5b66038d7ea4c680003410156137a25760008054604051600160a060020a03909116913480156108fc02929091818181858888f1935050505050611c61565b66038d7ea4c68000341015613801576040805160e560020a62461bcd02815260206004820152601d60248201527f6d696e696d756d20616d6f756e7420697320302e303031206574686572000000604482015290519081900360640190fd5b82620f4240811115613883576040805160e560020a62461bcd02815260206004820152602160248201527f737465702073697a65206d757374206e6f74206578636565642031303030303060448201527f3000000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b611c5f60008511156138955784613898565b60645b60648511156138a9576004546138ab565b845b600b60006138b8876147ce565b8152602081019190915260400160002054600160a060020a0316610a06565b600c6020528160005260406000208181548110151561147e57fe5b6000806000806000806000613908600754613a3e565b600654600754600354600083815260096020908152604080832085845290915290205493945091929091613942919063ffffffff613e9216565b60065460009081526009602090815260408083206007548452909152902060018101546003909101546058906139b0906064908810156139a357600654600090815260096020908152604080832060075484529091529020600301546127f5565b879063ffffffff613e4a16565b8115156139b957fe5b6006805460009081526008602052604090209081015460058201546004909201549390920492613a2a9291610ccb9182906064906139fe90605863ffffffff613e4a16565b811515613a0757fe5b60065460009081526008602052604090206007015491900463ffffffff613e9216565b949c939b5091995097509550909350915050565b60007326da117a72dbcb686c2fcf88c4bfc6110cae0464600160a060020a031663d9daa497836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015613ab657600080fd5b505af1158015613aca573d6000803e3d6000fd5b505050506040513d6020811015613ae057600080fd5b505192915050565b600f8160068110613af557fe5b600202018054600190910154600160a060020a03909116915082565b333214613b56576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206151f5833981519152604482015290519081900360640190fd5b600054600160a060020a03163314613bb8576040805160e560020a62461bcd02815260206004820152601160248201527f5065726d697373696f6e2064656e696564000000000000000000000000000000604482015290519081900360640190fd5b600554610100900460ff1615613c18576040805160e560020a62461bcd02815260206004820152601c60248201527f54696d65207365727669636520697320616c7265616479206f70656e00000000604482015290519081900360640190fd5b6005805461ff001916610100179055565b6005546000908190819081908190819060ff610100909104161515600114613cc1576040805160e560020a62461bcd02815260206004820152603460248201527f746869732066656174757265206973206e6f74207475726e6564206f6e206f7260448201527f20686173206265656e207475726e6564206f6666000000000000000000000000606482015290519081900360840190fd5b333214613d06576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206151f5833981519152604482015290519081900360640190fd5b60065495506007549450349350613d1c85613a3e565b6000878152600960209081526040808320898452909152902060030154909350831015613d65576000868152600960209081526040808320888452909152902060030154613d67565b825b91506058613d7c83606463ffffffff613e4a16565b811515613d8557fe5b0491506064613d9b83601e63ffffffff613e4a16565b811515613da457fe5b0490506729a2241af62c0000811115613dc257506729a2241af62c00005b80841015613e1a576040805160e560020a62461bcd02815260206004820152601060248201527f4e6f7420656e6f75676820707269636500000000000000000000000000000000604482015290519081900360640190fd5b600354600087815260096020908152604080832089845290915290204291909103610708019055600f60056121ed565b600080831515613e5d5760009150613e79565b50828202828482811515613e6d57fe5b0414613e7557fe5b8091505b5092915050565b600082821115613e8c57fe5b50900390565b600082820183811015613e7557fe5b60008281526008602090815260408083204260018083019190915560028201805460ff191682179055600390910185905560098352818420858552909252822001541115613f4f57600082815260086020526040902060068101546005820154600490920154613f34926064926124d6926014926127f59291610ccb919082908890610ca290605863ffffffff613e4a16565b60018301600090815260086020526040902060070155613fcb565b600082815260086020526040902060068101546005820154600490920154613fb492610ccb918290606490613f8b90605863ffffffff613e4a16565b811515613f9457fe5b60008981526008602052604090206007015491900463ffffffff613e9216565b600183016000908152600860205260409020600701555b50600190810160009081526008602052604090204290556006805482019055600755565b600080613ffa615142565b61400a888663ffffffff613e9216565b925061271061403061402386605863ffffffff613e4a16565b889063ffffffff613e4a16565b81151561403957fe5b60008b8152600860205260409020600401549190049250614060908763ffffffff613e9216565b60008a815260086020526040902060048101919091556005015461408a908363ffffffff613e9216565b60008a815260086020908152604080832060050193909355600981528282208b8352905220600101546140c3908763ffffffff613e9216565b60008a81526009602090815260408083208c84529091528082206001019290925584815220600201546140f69083613e92565b60008a815260096020908152604080832087845290915290206002015561415061412789888a8760648a9003612a5d565b60008b81526009602090815260408083208884529091529020600301549063ffffffff613e9216565b60008a81526009602090815260408083208784528252808320600301939093559a8352828b01998a52608083019788528282019485526101208301958652338152600c8b52908120600e8054600181810183559184528451600a82027fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd8101919091559b517fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fe8d015595517fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3ff8c015560608401517fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c4008c015597517fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c4018b015560a08301517fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c4028b015560c08301517fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c4038b015560e08301517fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c4048b0155610100909201517fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c4058a015593517fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c4069098019790975550855493840186559481529490942001919091555050565b60065460075460016000805b82600114156144115761437a85858c898d8d89614d75565b60008581526008602052604090206004015461439c908b63ffffffff613e9216565b6000868152600860205260409020600401556143fe6127106143d56143c88b605863ffffffff613e4a16565b8d9063ffffffff613e4a16565b8115156143de57fe5b60008881526008602052604090206005015491900463ffffffff613e9216565b6000868152600860205260409020600501555b61442e85858989614428838f63ffffffff613e9216565b8d614fed565b600085815260096020908152604080832087845290915290206003015461445c90829063ffffffff613e9216565b600086815260096020908152604080832088845290915290206002015490915061448d90839063ffffffff613e9216565b60019094019391506144a58a8763ffffffff613e8016565b99506144b084613a3e565b600086815260096020908152604080832088845290915290206003015411156144f55760008581526009602090815260408083208784529091529020600301546144fe565b6144fe84613a3e565b9650605861451388606463ffffffff613e4a16565b81151561451c57fe5b0496508695506001909201918986106145e5576145468585898d614428838f63ffffffff613e9216565b614556858560008d8d8d89614d75565b89871415614565576001909301925b60008581526009602090815260408083208784528252808320429055600787905587835260089091529020600501546145a4908363ffffffff613e8016565b60008681526008602052604090206005810191909155600601546145ce908263ffffffff613e9216565b600086815260086020526040902060060155611a42565b614362565b60506000600160a060020a0385161580159061460f5750600160a060020a0385163314155b80156146325750600160a060020a0385166000908152600a602052604090205415155b1561468357604051600160a060020a038616906032860480156108fc02916000818181858888f150506040513393506064880480156108fc02935091506000818181858888f1935050505050614688565b606e91505b6146c26146a16103e86124d6878663ffffffff613e4a16565b6006546000908152600860205260409020600701549063ffffffff613e9216565b6006546000908152600860205260409020600701555060c8830482151561471957600f60005b6002020154604051600160a060020a039091169082156108fc029083906000818181858888f193505050505061479a565b6000831180156147295750603983105b1561473757600f60016146e8565b826039141561474957600f60026146e8565b6039831180156147595750606483105b1561476757600f60036146e8565b826064141561479a57601754604051600160a060020a03909116906108fc8315029083906000818181858888f150505050505b600054600160a060020a03166108fc60c886049081150290604051600060405180830381858888f150505050505050505050565b805160009082908280602083118015906147e85750600383115b1515614864576040805160e560020a62461bcd02815260206004820152602a60248201527f737472696e67206d757374206265206265747765656e203420616e642033322060448201527f6368617261637465727300000000000000000000000000000000000000000000606482015290519081900360840190fd5b83600081518110151561487357fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a02141580156148da575083600184038151811015156148b257fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a0214155b1515614956576040805160e560020a62461bcd02815260206004820152602560248201527f737472696e672063616e6e6f74207374617274206f7220656e6420776974682060448201527f7370616365000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b83600081518110151561496557fe5b90602001015160f860020a900460f860020a02600160f860020a031916603060f860020a021415614aa85783600181518110151561499f57fe5b90602001015160f860020a900460f860020a02600160f860020a031916607860f860020a0214151515614a1c576040805160e560020a62461bcd02815260206004820152601b60248201527f737472696e672063616e6e6f7420737461727420776974682030780000000000604482015290519081900360640190fd5b836001815181101515614a2b57fe5b90602001015160f860020a900460f860020a02600160f860020a031916605860f860020a0214151515614aa8576040805160e560020a62461bcd02815260206004820152601b60248201527f737472696e672063616e6e6f7420737461727420776974682030580000000000604482015290519081900360640190fd5b600091505b82821015614d345783517f400000000000000000000000000000000000000000000000000000000000000090859084908110614ae557fe5b90602001015160f860020a900460f860020a02600160f860020a031916118015614b59575083517f5b0000000000000000000000000000000000000000000000000000000000000090859084908110614b3a57fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b80614c03575083517f600000000000000000000000000000000000000000000000000000000000000090859084908110614b8f57fe5b90602001015160f860020a900460f860020a02600160f860020a031916118015614c03575083517f7b0000000000000000000000000000000000000000000000000000000000000090859084908110614be457fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b80614cad575083517f2f0000000000000000000000000000000000000000000000000000000000000090859084908110614c3957fe5b90602001015160f860020a900460f860020a02600160f860020a031916118015614cad575083517f3a0000000000000000000000000000000000000000000000000000000000000090859084908110614c8e57fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b1515614d29576040805160e560020a62461bcd02815260206004820152602260248201527f737472696e6720636f6e7461696e7320696e76616c696420636861726163746560448201527f7273000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600190910190614aad565b5050506020015192915050565b600080808311614d4d57fe5b8284811515614d5857fe5b0490508284811515614d6657fe5b068184020184141515613e7557fe5b614d7d615142565b600060018311614f90578882526020820188905260808201879052610100820185905261012082018490526001831415614db95760a082018690525b336000908152600c60209081526040808320600e8054600181810183559186528751600a82027fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd810191909155888601517fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fe820155938801517fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3ff85015560608801517fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c40085015560808801517fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c40185015560a08801517fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c40285015560c08801517fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c40385015560e08801517fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c4048501556101008801517fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c4058501556101208801517fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c4069094019390935581549081018255908452919092200155614fe2565b50600e8054600019810191879183908110614fa757fe5b90600052602060002090600a02016006018190555087600e82815481101515614fcc57fe5b90600052602060002090600a0201600201819055505b505050505050505050565b600061271061501361500684605863ffffffff613e4a16565b869063ffffffff613e4a16565b81151561501c57fe5b049050848414615071576000878152600960209081526040808320898452909152902060010154615053908563ffffffff613e9216565b60008881526009602090815260408083208a84529091529020600101555b600087815260096020908152604080832086845290915290206002015461509e908263ffffffff613e9216565b60008881526009602090815260408083208784529091529020600201556150f86150cf878688876064889003612a5d565b60008981526009602090815260408083208884529091529020600301549063ffffffff613e9216565b6000978852600960209081526040808a20958a5294905292909620600301919091555050505050565b508054600082559060005260206000209081019061513f91906151b6565b50565b61014060405190810160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b815481835581811115611c6157600083815260209020611c619181019083015b61123d91905b808211156151d057600081556001016151bc565b509056004661697242616e6b20697473206e6f74207265616479207965742e202063686573656e64657220646f6573206e6f74206d656574207468652072756c65730000636b203f65746120696e20646973636f72640000000000000000000000000000a165627a7a7230582033daa80fc25b9a9d27088a7b1891f5a6aaf17fe9090c3c043aa082068865c9c90029
Deployed Bytecode
0x6080604052600436106102035763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610357578063095ea7b3146103e15780630f15f4c01461040557806315daf5941461041a578063180392301461044e57806318160ddd146104bf578063186601ca146104e657806323b872dd1461050f57806323df93c11461053957806328d27f091461055d5780632d6ddfda146105c557806333b6baf5146105da57806334aed7a0146105ef57806334d5f37b14610630578063394baa0b146106895780633ccfd60b146106a15780634420e486146106b657806350197646146106d757806358761920146106ec57806359a87bc1146107015780635d2d5c371461071b5780636352211e1461076757806365a114f11461077f578063678bbf241461078757806370a08231146107c757806378c9f9cf146107e857806395d89b411461080c57806398f0412814610821578063a54447aa14610839578063a9059cbb14610844578063aafb088e14610868578063b2e6ceeb1461087d578063b604ed1b14610895578063bed47ed8146108ad578063c5d3ce1e146108c2578063cca63f4f146108d7578063ce2b78541461092a578063d571dbac1461094e578063d9daa49714610996578063d9f035aa146109ae578063ef8c2c58146109e9578063f60436cd146109fe575b60055460ff161515600114610264576040805160e560020a62461bcd02815260206004820152603260248201526000805160206151d58339815191526044820152600080516020615215833981519152606482015290519081900360840190fd5b3332146102a9576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206151f5833981519152604482015290519081900360640190fd5b66038d7ea4c680003410156102e75760008054604051600160a060020a03909116913480156108fc02929091818181858888f1935050505050610355565b66038d7ea4c68000341015610346576040805160e560020a62461bcd02815260206004820152601d60248201527f6d696e696d756d20616d6f756e7420697320302e303031206574686572000000604482015290519081900360640190fd5b61035560646004546000610a06565b005b34801561036357600080fd5b5061036c610d41565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103a657818101518382015260200161038e565b50505050905090810190601f1680156103d35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103ed57600080fd5b50610355600160a060020a0360043516602435610dce565b34801561041157600080fd5b50610355611026565b34801561042657600080fd5b506104326004356111b2565b60408051600160a060020a039092168252519081900360200190f35b34801561045a57600080fd5b5061046f600160a060020a03600435166111cd565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156104ab578181015183820152602001610493565b505050509050019250505060405180910390f35b3480156104cb57600080fd5b506104d461123a565b60408051918252519081900360200190f35b3480156104f257600080fd5b506104fb611240565b604080519115158252519081900360200190f35b34801561051b57600080fd5b50610355600160a060020a0360043581169060243516604435611249565b34801561054557600080fd5b506104d4600160a060020a0360043516602435611463565b34801561056957600080fd5b50610575600435611493565b604080519a8b5260208b0199909952898901979097526060890195909552608088019390935260a087019190915260c086015260e085015261010084015261012083015251908190036101400190f35b3480156105d157600080fd5b506103556114f5565b3480156105e657600080fd5b5061043261160e565b3480156105fb57600080fd5b5061060a60043560243561161d565b604080519485526020850193909352838301919091526060830152519081900360800190f35b34801561063c57600080fd5b5061064860043561164f565b604080519889526020890197909752941515878701526060870193909352608086019190915260a085015260c084015260e083015251908190036101000190f35b34801561069557600080fd5b50610432600435611696565b3480156106ad57600080fd5b506103556116b1565b3480156106c257600080fd5b506104d4600160a060020a0360043516611a4e565b3480156106e357600080fd5b506104d4611a60565b3480156106f857600080fd5b506104d4611a66565b610355600435602435600160a060020a0360443516611a6c565b6040805160206004803580820135601f8101849004840285018401909552848452610355943694929360249392840191908190840183828082843750949750611c669650505050505050565b34801561077357600080fd5b50610432600435611f0d565b610355611fdb565b34801561079357600080fd5b5061079f600435612286565b6040805194855260208501939093528383019190915215156060830152519081900360800190f35b3480156107d357600080fd5b506104d4600160a060020a0360043516612a0c565b3480156107f457600080fd5b506104d4600435602435604435606435608435612a5d565b34801561081857600080fd5b5061036c612b1f565b34801561082d57600080fd5b506104d4600435612b77565b610355600435612bc8565b34801561085057600080fd5b50610355600160a060020a0360043516602435612f20565b34801561087457600080fd5b506104d4613151565b34801561088957600080fd5b50610355600435613157565b3480156108a157600080fd5b5061035560043561331a565b3480156108b957600080fd5b506104d46136aa565b3480156108ce57600080fd5b506104fb6136b0565b604080516020600460443581810135601f81018490048402850184019095528484526103559482359460248035953695946064949201919081908401838280828437509497506136be9650505050505050565b34801561093657600080fd5b506104d4600160a060020a03600435166024356138d7565b34801561095a57600080fd5b506109636138f2565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b3480156109a257600080fd5b506104d4600435613a3e565b3480156109ba57600080fd5b506109c6600435613ae8565b60408051600160a060020a03909316835260208301919091528051918290030190f35b3480156109f557600080fd5b50610355613b11565b610355613c29565b60065460075460008080610a1984613a3e565b6000868152600960209081526040808320888452909152902060030154909350831015610a62576000858152600960209081526040808320878452909152902060030154610a64565b825b91506058610a7983606463ffffffff613e4a16565b811515610a8257fe5b600087815260096020908152604080832089845290915281206001015492909104935010610ab05781610ade565b6000858152600960209081526040808320878452909152902060010154610ade90839063ffffffff613e8016565b6003546000878152600960209081526040808320898452909152902054919250610b0e919063ffffffff613e9216565b42118015610b375750600085815260096020908152604080832087845290915290206001015482115b15610c3e57610b468585613ea1565b600654600754600082815260096020908152604080832084845290915290204290559095509350610b7684613a3e565b6000868152600960209081526040808320888452909152902060030154909350831015610bbf576000858152600960209081526040808320878452909152902060030154610bc1565b825b91506058610bd683606463ffffffff613e4a16565b811515610bdf57fe5b600087815260096020908152604080832089845290915281206001015492909104935010610c0d5781610c3b565b6000858152600960209081526040808320878452909152902060010154610c3b90839063ffffffff613e8016565b90505b34811115610c5957610c54858584348c8c613fef565b610c66565b610c663489898585614356565b600085815260086020526040812060068101546005820154600490920154610cd792610ccb918290606490610ca290605863ffffffff613e4a16565b811515610cab57fe5b60008d81526008602052604090206007015491900463ffffffff613e9216565b9063ffffffff613e8016565b11610d2c576040805160e560020a62461bcd02815260206004820152600a60248201527f64617461206572726f7200000000000000000000000000000000000000000000604482015290519081900360640190fd5b610d378634896145ea565b5050505050505050565b60018054604080516020600284861615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610dc65780601f10610d9b57610100808354040283529160200191610dc6565b820191906000526020600020905b815481529060010190602001808311610da957829003601f168201915b505050505081565b333214610e13576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206151f5833981519152604482015290519081900360640190fd5b600160a060020a0382166000908152600a60205260409020541515610e82576040805160e560020a62461bcd02815260206004820152601560248201527f4e6f742061207265676973746572656420757365720000000000000000000000604482015290519081900360640190fd5b600f8160068110610e8f57fe5b6002020154600160a060020a03163314610ef3576040805160e560020a62461bcd02815260206004820152601f60248201527f546865206361726420646f6573206e6f742062656c6f6e6720746f20796f7500604482015290519081900360640190fd5b60068110610f4b576040805160e560020a62461bcd02815260206004820152600d60248201527f746f6b656e4964206572726f7200000000000000000000000000000000000000604482015290519081900360640190fd5b6000818152601b6020526040902054600160a060020a031615610fb8576040805160e560020a62461bcd02815260206004820152600860248201527f417070726f766564000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6000818152601b60209081526040918290208054600160a060020a038616600160a060020a0319909116811790915582513381529182015280820183905290517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259181900360600190a15050565b33321461106b576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206151f5833981519152604482015290519081900360640190fd5b600054600160a060020a031633146110cd576040805160e560020a62461bcd02815260206004820152601160248201527f5065726d697373696f6e2064656e696564000000000000000000000000000000604482015290519081900360640190fd5b60055460ff1615611128576040805160e560020a62461bcd02815260206004820152601a60248201527f4661697242616e6b20616c726561647920616374697661746564000000000000604482015290519081900360640190fd5b6005805460ff1916600190811790915560068190556007819055600052427fad67d757c34507f157cacfa2e3153e9f260a2244f30428821be7be64587ac55f8190557f92e85d02570a8092d09a6e3a57665bc3815a2699a4074001bf1ccabf660f5a366020527fcc827bfc2dbd52cbec5736232342c6a272d0cf5ce2695a969eb442c9480de86d55565b600b60205260009081526040902054600160a060020a031681565b600160a060020a0381166000908152600c602090815260409182902080548351818402810184019094528084526060939283018282801561122d57602002820191906000526020600020905b815481526020019060010190808311611219575b505050505090505b919050565b60065b90565b60055460ff1681565b33321461128e576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206151f5833981519152604482015290519081900360640190fd5b600f816006811061129b57fe5b6002020154600160a060020a03848116911614611302576040805160e560020a62461bcd02815260206004820152600b60248201527f4f776e6572206572726f72000000000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a0382161515611362576040805160e560020a62461bcd02815260206004820152600d60248201527f41646472657373206572726f7200000000000000000000000000000000000000604482015290519081900360640190fd5b6000818152601b6020526040902054600160a060020a038381169116146113d3576040805160e560020a62461bcd02815260206004820152601260248201527f576974686f7574207065726d697373696f6e0000000000000000000000000000604482015290519081900360640190fd5b81600f82600681106113e157fe5b600202018054600160a060020a03928316600160a060020a0319918216179091556000838152601b602090815260409182902080549093169092558051868416815292851691830191909152818101839052517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360600190a1505050565b600d6020528160005260406000208181548110151561147e57fe5b90600052602060002001600091509150505481565b600e8054829081106114a157fe5b90600052602060002090600a0201600091509050806000015490806001015490806002015490806003015490806004015490806005015490806006015490806007015490806008015490806009015490508a565b33321461153a576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206151f5833981519152604482015290519081900360640190fd5b600054600160a060020a0316331461159c576040805160e560020a62461bcd02815260206004820152601160248201527f5065726d697373696f6e2064656e696564000000000000000000000000000000604482015290519081900360640190fd5b60055460ff610100909104161515600114611601576040805160e560020a62461bcd02815260206004820152601c60248201527f54696d65207365727669636520697320616c7265616479206f70656e00000000604482015290519081900360640190fd5b6005805461ff0019169055565b600054600160a060020a031681565b600960209081526000928352604080842090915290825290208054600182015460028301546003909301549192909184565b600860205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007909701549596949560ff9094169492939192909188565b601b60205260009081526040902054600160a060020a031681565b600554600090606090829081908190819081908190819060ff161515600114611726576040805160e560020a62461bcd02815260206004820152603260248201526000805160206151d58339815191526044820152600080516020615215833981519152606482015290519081900360840190fd5b33321461176b576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206151f5833981519152604482015290519081900360640190fd5b336000908152600c60205260408120541161181c576040805160e560020a62461bcd02815260206004820152604260248201527f7573657220686173206e6f7420707572636861736564207468652070726f647560448201527f6374206f722068617320636f6d706c657465642074686520776974686472617760648201527f616c000000000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b336000818152600c60209081526040918290208054835181840281018401909452808452939c5091929083018282801561187557602002820191906000526020600020905b815481526020019060010190808311611861575b50508351600160a060020a038e166000908152600c60205260408120959d50909b506118a694935091506151219050565b86811015611a0c576118ce88828151811015156118bf57fe5b90602001906020020151612286565b929750909550935091506001821515141561192c57600160a060020a0389166000908152600d60205260409020885189908390811061190957fe5b6020908102909101810151825460018101845560009384529190922001556119f2565b83600e898381518110151561193d57fe5b602090810290910101518154811061195157fe5b90600052602060002090600a02016003018190555082600e898381518110151561197757fe5b602090810290910101518154811061198b57fe5b90600052602060002090600a020160070181905550600c60008a600160a060020a0316600160a060020a0316815260200190815260200160002088828151811015156119d357fe5b6020908102909101810151825460018101845560009384529190922001555b611a02868663ffffffff613e9216565b95506001016118a6565b604051600160a060020a038a169087156108fc029088906000818181858888f19350505050158015611a42573d6000803e3d6000fd5b50505050505050505050565b600a6020526000908152604090205481565b60065481565b60045481565b60055460ff161515600114611acd576040805160e560020a62461bcd02815260206004820152603260248201526000805160206151d58339815191526044820152600080516020615215833981519152606482015290519081900360840190fd5b333214611b12576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206151f5833981519152604482015290519081900360640190fd5b66038d7ea4c68000341015611b505760008054604051600160a060020a03909116913480156108fc02929091818181858888f1935050505050611c61565b66038d7ea4c68000341015611baf576040805160e560020a62461bcd02815260206004820152601d60248201527f6d696e696d756d20616d6f756e7420697320302e303031206574686572000000604482015290519081900360640190fd5b82620f4240811115611c31576040805160e560020a62461bcd02815260206004820152602160248201527f737465702073697a65206d757374206e6f74206578636565642031303030303060448201527f3000000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b611c5f6000851115611c435784611c46565b60645b6064851115611c5757600454611c59565b845b84610a06565b505b505050565b6000333214611cad576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206151f5833981519152604482015290519081900360640190fd5b662386f26fc100003414611d31576040805160e560020a62461bcd02815260206004820152603b60248201527f726567697374726174696f6e2066656520697320302e30312065746865722c2060448201527f706c65617365207365742074686520657861637420616d6f756e740000000000606482015290519081900360840190fd5b611d3a826147ce565b9050801515611d93576040805160e560020a62461bcd02815260206004820152601460248201527f6e616d652063616e6e6f7420626520656d707479000000000000000000000000604482015290519081900360640190fd5b6000818152600b6020526040902054600160a060020a031615611e26576040805160e560020a62461bcd02815260206004820152602560248201527f74686973206e616d652068617320616c7265616479206265656e20726567697360448201527f7465726564000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b336000908152600a602052604090205415611eb1576040805160e560020a62461bcd02815260206004820152602160248201527f706c6561736520646f206e6f742072657065617420726567697374726174696f60448201527f6e00000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6000818152600b602090815260408083208054600160a060020a031916339081179091558352600a90915280822083905581549051600160a060020a0391909116913480156108fc02929091818181858888f150505050505050565b600060068210611f67576040805160e560020a62461bcd02815260206004820152600d60248201527f746f6b656e4964206572726f7200000000000000000000000000000000000000604482015290519081900360640190fd5b600f8260068110611f7457fe5b6002020154600160a060020a03169050801515611235576040805160e560020a62461bcd02815260206004820152600860248201527f4e6f206f776e6572000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6005546000908190819081908190819060ff610100909104161515600114612073576040805160e560020a62461bcd02815260206004820152603460248201527f746869732066656174757265206973206e6f74207475726e6564206f6e206f7260448201527f20686173206265656e207475726e6564206f6666000000000000000000000000606482015290519081900360840190fd5b3332146120b8576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206151f5833981519152604482015290519081900360640190fd5b600654955060075494503493506120ce85613a3e565b6000878152600960209081526040808320898452909152902060030154909350831015612117576000868152600960209081526040808320888452909152902060030154612119565b825b9150605861212e83606463ffffffff613e4a16565b81151561213757fe5b049150606461214d83601463ffffffff613e4a16565b81151561215657fe5b0490506729a2241af62c000081111561217457506729a2241af62c00005b808410156121cc576040805160e560020a62461bcd02815260206004820152601060248201527f4e6f7420656e6f75676820707269636500000000000000000000000000000000604482015290519081900360640190fd5b60008681526009602090815260408083208884529091529020429055600f60055b60029081029190910154604051600160a060020a0390911691830480156108fc02916000818181858888f1505060008054604051600160a060020a0390911694506002860480156108fc029450925090818181858888f19350505050508084111561227e57336108fc612266868463ffffffff613e8016565b6040518115909202916000818181858888f150505050505b505050505050565b600080600080612294615142565b6000806000806000806000600e8d8154811015156122ae57fe5b90600052602060002090600a0201610140604051908101604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152505097506007549650876101000151600014156125d057875160009081526008602052604090206002015460ff16151560011415612507576040808901518951600090815260086020529190912060030154111561242e576123908860200151613a3e565b88516000908152600960209081526040808320828d015184529091529020600301549095508510156123e35787516000908152600960209081526040808320828c015184529091529020600301546123e5565b845b935060586123fa85606463ffffffff613e4a16565b81151561240357fe5b04935061242788602001518960800151868b604001518c6101200151606403612a5d565b955061246b565b61271061245e61244d60588b6101200151613e4a90919063ffffffff16565b60808b01519063ffffffff613e4a16565b81151561246757fe5b0495505b60208089015189516000908152600890925260409091206003015414156124f25787516000908152600960209081526040808320828c0151845290915290206001015488516124ef916124e2916124d6906124c590612b77565b60808d01519063ffffffff613e4a16565b9063ffffffff614d4116565b879063ffffffff613e9216565b95505b949a5060009950899850600197508a946129fd565b87604001518711156125be576125208860200151613a3e565b88516000908152600960209081526040808320828d015184529091529020600301549095508510156125735787516000908152600960209081526040808320828c01518452909152902060030154612575565b845b9350605861258a85606463ffffffff613e4a16565b81151561259357fe5b0493506125b788602001518960800151868b604001518c6101200151606403612a5d565b95506124f2565b60009b508b9a508a99508998506129fd565b6060880151156125e45787606001516125ea565b87602001515b61012089015160e08a01518a516000908152600860205260409020600201549295506064919091039350915060ff161515600114156128ab575b6064886060015160001461263c578860600151612642565b88602001515b8403111561265c5785838260009b509b509b509b506129fd565b61010088015161267390849063ffffffff613e9216565b885160009081526008602052604090206003015411156127be5761269683613a3e565b885160009081526009602090815260408083208784529091529020600301549095508510156126e357875160009081526009602090815260408083208684529091529020600301546126e5565b845b935060586126fa85606463ffffffff613e4a16565b81151561270357fe5b04935087604001518314156127575761273d6124e2848a60c00151876127378d610100015189613e9290919063ffffffff16565b87612a5d565b6040890151909c509a5060009950600198508b95506129fd565b61278e6124e2848a60200151861461276f5786612775565b8a60a001515b876127378d610100015189613e9290919063ffffffff16565b95506127b7886020015184146127a457846127aa565b8860a001515b829063ffffffff613e9216565b90506128a0565b6128196127106128016127e060588c6101200151613e4a90919063ffffffff16565b60808c01516127f5908663ffffffff613e8016565b9063ffffffff613e4a16565b81151561280a57fe5b8891900463ffffffff613e9216565b6040808a01518a5160009081526008602052919091206003015491975014156128865787516000908152600960209081526040808320818c01518452909152902060010154885161273d916124e2916124d69061287590612b77565b60c08d01519063ffffffff613e4a16565b858860400151600060018191509b509b509b509b506129fd565b600190920191612624565b606488606001516000146128c35788606001516128c9565b88602001515b840311156128e35785838260009b509b509b509b506129fd565b6101008801516128fa90849063ffffffff613e9216565b8711156129e05761290a83613a3e565b885160009081526009602090815260408083208784529091529020600301549095508510156129575787516000908152600960209081526040808320868452909152902060030154612959565b845b9350605861296e85606463ffffffff613e4a16565b81151561297757fe5b04935087604001518314156129ab5761273d6124e2848a60c00151876127378d610100015189613e9290919063ffffffff16565b6129c36124e2848a60200151861461276f5786612775565b95506129d9886020015184146127a457846127aa565b90506129f2565b85838260009b509b509b509b506129fd565b6001909201916128ab565b50505050505050509193509193565b6000600681805b82811015612a5557600160a060020a038516600f8260068110612a3257fe5b6002020154600160a060020a03161415612a4d576001909101905b600101612a13565b509392505050565b604080517f78c9f9cf000000000000000000000000000000000000000000000000000000008152600481018790526024810186905260448101859052606481018490526084810183905290516000917326da117a72dbcb686c2fcf88c4bfc6110cae0464916378c9f9cf9160a48082019260209290919082900301818787803b158015612ae957600080fd5b505af1158015612afd573d6000803e3d6000fd5b505050506040513d6020811015612b1357600080fd5b50519695505050505050565b6002805460408051602060018416156101000260001901909316849004601f81018490048402820184019092528181529291830182828015610dc65780601f10610d9b57610100808354040283529160200191610dc6565b600081815260086020526040812060068101546005820154600490920154612bc2926064926124d6926050926127f59291610ccb919082908890610ca290605863ffffffff613e4a16565b92915050565b6005546000908190819060ff161515600114612c30576040805160e560020a62461bcd02815260206004820152603260248201526000805160206151d58339815191526044820152600080516020615215833981519152606482015290519081900360840190fd5b333214612c75576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206151f5833981519152604482015290519081900360640190fd5b3392503491506064612ca5606e600f8760068110612c8f57fe5b6002020160010154613e4a90919063ffffffff16565b811515612cae57fe5b0490506000600f8560068110612cc057fe5b6002020154600160a060020a031614801590612cff5750600160a060020a038316600f8560068110612cee57fe5b6002020154600160a060020a031614155b8015612d0b5750808210155b1515612d61576040805160e560020a62461bcd02815260206004820152600f60248201527f4661696c65642070757263686173650000000000000000000000000000000000604482015290519081900360640190fd5b6000848152601b6020526040902054600160a060020a031615612df3576000848152601b6020526040902054600160a060020a03166108fc6064612dad6069600f8960068110612c8f57fe5b811515612db657fe5b049081150290604051600060405180830381858888f15050506000868152601b602052604090208054600160a060020a031916905550612e4a9050565b600f8460068110612e0057fe5b6002020154600160a060020a03166108fc6064612e256069600f8960068110612c8f57fe5b811515612e2e57fe5b049081150290604051600060405180830381858888f150505050505b600054600160a060020a03166108fc6064612e6d6005600f8960068110612c8f57fe5b811515612e7657fe5b049081150290604051600060405180830381858888f193505050505080821115612ecf57600160a060020a0383166108fc612eb7848463ffffffff613e8016565b6040518115909202916000818181858888f150505050505b80600f8560068110612edd57fe5b600202016001018190555082600f85600681101515612ef857fe5b600202018054600160a060020a031916600160a060020a039290921691909117905550505050565b333214612f65576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206151f5833981519152604482015290519081900360640190fd5b600f8160068110612f7257fe5b6002020154600160a060020a03163314612fd6576040805160e560020a62461bcd02815260206004820152601f60248201527f546865206361726420646f6573206e6f742062656c6f6e6720746f20796f7500604482015290519081900360640190fd5b600160a060020a0382161515613036576040805160e560020a62461bcd02815260206004820152600d60248201527f41646472657373206572726f7200000000000000000000000000000000000000604482015290519081900360640190fd5b6000818152601b6020526040902054600160a060020a038381169116146130a7576040805160e560020a62461bcd02815260206004820152601260248201527f576974686f7574207065726d697373696f6e0000000000000000000000000000604482015290519081900360640190fd5b81600f82600681106130b557fe5b600202018054600160a060020a031916600160a060020a039283161790556000828152601b60205260409020541615613105576000818152601b602052604090208054600160a060020a03191690555b60408051338152600160a060020a038416602082015280820183905290517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360600190a15050565b60035481565b60008033321461319f576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206151f5833981519152604482015290519081900360640190fd5b339150600f83600681106131af57fe5b6002020154600160a060020a03908116915082161515613219576040805160e560020a62461bcd02815260206004820152600d60248201527f41646472657373206572726f7200000000000000000000000000000000000000604482015290519081900360640190fd5b6000838152601b6020526040902054600160a060020a0383811691161461328a576040805160e560020a62461bcd02815260206004820152601260248201527f576974686f7574207065726d697373696f6e0000000000000000000000000000604482015290519081900360640190fd5b81600f846006811061329857fe5b600202018054600160a060020a03928316600160a060020a0319918216179091556000858152601b602090815260409182902080549093169092558051848416815292851691830191909152818101859052517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360600190a1505050565b6005546000908190819081908190819060ff161515600114613388576040805160e560020a62461bcd02815260206004820152603260248201526000805160206151d58339815191526044820152600080516020615215833981519152606482015290519081900360840190fd5b3332146133cd576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206151f5833981519152604482015290519081900360640190fd5b336000908152600c60205260408120541161347e576040805160e560020a62461bcd02815260206004820152604260248201527f7573657220686173206e6f7420707572636861736564207468652070726f647560448201527f6374206f722068617320636f6d706c657465642074686520776974686472617760648201527f616c000000000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b33955061348a87612286565b9297509095509350915060018215151415613629575060005b600160a060020a0386166000908152600c602052604090205481101561350857600160a060020a0386166000908152600c602052604090208054889190839081106134ea57fe5b9060005260206000200154141561350057613508565b6001016134a3565b600160a060020a0386166000908152600c60205260409020548110613577576040805160e560020a62461bcd02815260206004820152600c60248201527f6769642069732077726f6e670000000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a0386166000818152600d602090815260408083208054600181018255908452828420018b9055928252600c905220805460001981019081106135bc57fe5b6000918252602080832090910154600160a060020a0389168352600c90915260409091208054839081106135ec57fe5b6000918252602080832090910192909255600160a060020a0388168152600c90915260409020805490613623906000198301615196565b50613674565b83600e8881548110151561363957fe5b90600052602060002090600a02016003018190555082600e8881548110151561365e57fe5b90600052602060002090600a0201600701819055505b604051600160a060020a0387169086156108fc029087906000818181858888f19350505050158015610d37573d6000803e3d6000fd5b60075481565b600554610100900460ff1681565b60055460ff16151560011461371f576040805160e560020a62461bcd02815260206004820152603260248201526000805160206151d58339815191526044820152600080516020615215833981519152606482015290519081900360840190fd5b333214613764576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206151f5833981519152604482015290519081900360640190fd5b66038d7ea4c680003410156137a25760008054604051600160a060020a03909116913480156108fc02929091818181858888f1935050505050611c61565b66038d7ea4c68000341015613801576040805160e560020a62461bcd02815260206004820152601d60248201527f6d696e696d756d20616d6f756e7420697320302e303031206574686572000000604482015290519081900360640190fd5b82620f4240811115613883576040805160e560020a62461bcd02815260206004820152602160248201527f737465702073697a65206d757374206e6f74206578636565642031303030303060448201527f3000000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b611c5f60008511156138955784613898565b60645b60648511156138a9576004546138ab565b845b600b60006138b8876147ce565b8152602081019190915260400160002054600160a060020a0316610a06565b600c6020528160005260406000208181548110151561147e57fe5b6000806000806000806000613908600754613a3e565b600654600754600354600083815260096020908152604080832085845290915290205493945091929091613942919063ffffffff613e9216565b60065460009081526009602090815260408083206007548452909152902060018101546003909101546058906139b0906064908810156139a357600654600090815260096020908152604080832060075484529091529020600301546127f5565b879063ffffffff613e4a16565b8115156139b957fe5b6006805460009081526008602052604090209081015460058201546004909201549390920492613a2a9291610ccb9182906064906139fe90605863ffffffff613e4a16565b811515613a0757fe5b60065460009081526008602052604090206007015491900463ffffffff613e9216565b949c939b5091995097509550909350915050565b60007326da117a72dbcb686c2fcf88c4bfc6110cae0464600160a060020a031663d9daa497836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015613ab657600080fd5b505af1158015613aca573d6000803e3d6000fd5b505050506040513d6020811015613ae057600080fd5b505192915050565b600f8160068110613af557fe5b600202018054600190910154600160a060020a03909116915082565b333214613b56576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206151f5833981519152604482015290519081900360640190fd5b600054600160a060020a03163314613bb8576040805160e560020a62461bcd02815260206004820152601160248201527f5065726d697373696f6e2064656e696564000000000000000000000000000000604482015290519081900360640190fd5b600554610100900460ff1615613c18576040805160e560020a62461bcd02815260206004820152601c60248201527f54696d65207365727669636520697320616c7265616479206f70656e00000000604482015290519081900360640190fd5b6005805461ff001916610100179055565b6005546000908190819081908190819060ff610100909104161515600114613cc1576040805160e560020a62461bcd02815260206004820152603460248201527f746869732066656174757265206973206e6f74207475726e6564206f6e206f7260448201527f20686173206265656e207475726e6564206f6666000000000000000000000000606482015290519081900360840190fd5b333214613d06576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206151f5833981519152604482015290519081900360640190fd5b60065495506007549450349350613d1c85613a3e565b6000878152600960209081526040808320898452909152902060030154909350831015613d65576000868152600960209081526040808320888452909152902060030154613d67565b825b91506058613d7c83606463ffffffff613e4a16565b811515613d8557fe5b0491506064613d9b83601e63ffffffff613e4a16565b811515613da457fe5b0490506729a2241af62c0000811115613dc257506729a2241af62c00005b80841015613e1a576040805160e560020a62461bcd02815260206004820152601060248201527f4e6f7420656e6f75676820707269636500000000000000000000000000000000604482015290519081900360640190fd5b600354600087815260096020908152604080832089845290915290204291909103610708019055600f60056121ed565b600080831515613e5d5760009150613e79565b50828202828482811515613e6d57fe5b0414613e7557fe5b8091505b5092915050565b600082821115613e8c57fe5b50900390565b600082820183811015613e7557fe5b60008281526008602090815260408083204260018083019190915560028201805460ff191682179055600390910185905560098352818420858552909252822001541115613f4f57600082815260086020526040902060068101546005820154600490920154613f34926064926124d6926014926127f59291610ccb919082908890610ca290605863ffffffff613e4a16565b60018301600090815260086020526040902060070155613fcb565b600082815260086020526040902060068101546005820154600490920154613fb492610ccb918290606490613f8b90605863ffffffff613e4a16565b811515613f9457fe5b60008981526008602052604090206007015491900463ffffffff613e9216565b600183016000908152600860205260409020600701555b50600190810160009081526008602052604090204290556006805482019055600755565b600080613ffa615142565b61400a888663ffffffff613e9216565b925061271061403061402386605863ffffffff613e4a16565b889063ffffffff613e4a16565b81151561403957fe5b60008b8152600860205260409020600401549190049250614060908763ffffffff613e9216565b60008a815260086020526040902060048101919091556005015461408a908363ffffffff613e9216565b60008a815260086020908152604080832060050193909355600981528282208b8352905220600101546140c3908763ffffffff613e9216565b60008a81526009602090815260408083208c84529091528082206001019290925584815220600201546140f69083613e92565b60008a815260096020908152604080832087845290915290206002015561415061412789888a8760648a9003612a5d565b60008b81526009602090815260408083208884529091529020600301549063ffffffff613e9216565b60008a81526009602090815260408083208784528252808320600301939093559a8352828b01998a52608083019788528282019485526101208301958652338152600c8b52908120600e8054600181810183559184528451600a82027fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd8101919091559b517fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fe8d015595517fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3ff8c015560608401517fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c4008c015597517fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c4018b015560a08301517fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c4028b015560c08301517fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c4038b015560e08301517fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c4048b0155610100909201517fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c4058a015593517fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c4069098019790975550855493840186559481529490942001919091555050565b60065460075460016000805b82600114156144115761437a85858c898d8d89614d75565b60008581526008602052604090206004015461439c908b63ffffffff613e9216565b6000868152600860205260409020600401556143fe6127106143d56143c88b605863ffffffff613e4a16565b8d9063ffffffff613e4a16565b8115156143de57fe5b60008881526008602052604090206005015491900463ffffffff613e9216565b6000868152600860205260409020600501555b61442e85858989614428838f63ffffffff613e9216565b8d614fed565b600085815260096020908152604080832087845290915290206003015461445c90829063ffffffff613e9216565b600086815260096020908152604080832088845290915290206002015490915061448d90839063ffffffff613e9216565b60019094019391506144a58a8763ffffffff613e8016565b99506144b084613a3e565b600086815260096020908152604080832088845290915290206003015411156144f55760008581526009602090815260408083208784529091529020600301546144fe565b6144fe84613a3e565b9650605861451388606463ffffffff613e4a16565b81151561451c57fe5b0496508695506001909201918986106145e5576145468585898d614428838f63ffffffff613e9216565b614556858560008d8d8d89614d75565b89871415614565576001909301925b60008581526009602090815260408083208784528252808320429055600787905587835260089091529020600501546145a4908363ffffffff613e8016565b60008681526008602052604090206005810191909155600601546145ce908263ffffffff613e9216565b600086815260086020526040902060060155611a42565b614362565b60506000600160a060020a0385161580159061460f5750600160a060020a0385163314155b80156146325750600160a060020a0385166000908152600a602052604090205415155b1561468357604051600160a060020a038616906032860480156108fc02916000818181858888f150506040513393506064880480156108fc02935091506000818181858888f1935050505050614688565b606e91505b6146c26146a16103e86124d6878663ffffffff613e4a16565b6006546000908152600860205260409020600701549063ffffffff613e9216565b6006546000908152600860205260409020600701555060c8830482151561471957600f60005b6002020154604051600160a060020a039091169082156108fc029083906000818181858888f193505050505061479a565b6000831180156147295750603983105b1561473757600f60016146e8565b826039141561474957600f60026146e8565b6039831180156147595750606483105b1561476757600f60036146e8565b826064141561479a57601754604051600160a060020a03909116906108fc8315029083906000818181858888f150505050505b600054600160a060020a03166108fc60c886049081150290604051600060405180830381858888f150505050505050505050565b805160009082908280602083118015906147e85750600383115b1515614864576040805160e560020a62461bcd02815260206004820152602a60248201527f737472696e67206d757374206265206265747765656e203420616e642033322060448201527f6368617261637465727300000000000000000000000000000000000000000000606482015290519081900360840190fd5b83600081518110151561487357fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a02141580156148da575083600184038151811015156148b257fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a0214155b1515614956576040805160e560020a62461bcd02815260206004820152602560248201527f737472696e672063616e6e6f74207374617274206f7220656e6420776974682060448201527f7370616365000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b83600081518110151561496557fe5b90602001015160f860020a900460f860020a02600160f860020a031916603060f860020a021415614aa85783600181518110151561499f57fe5b90602001015160f860020a900460f860020a02600160f860020a031916607860f860020a0214151515614a1c576040805160e560020a62461bcd02815260206004820152601b60248201527f737472696e672063616e6e6f7420737461727420776974682030780000000000604482015290519081900360640190fd5b836001815181101515614a2b57fe5b90602001015160f860020a900460f860020a02600160f860020a031916605860f860020a0214151515614aa8576040805160e560020a62461bcd02815260206004820152601b60248201527f737472696e672063616e6e6f7420737461727420776974682030580000000000604482015290519081900360640190fd5b600091505b82821015614d345783517f400000000000000000000000000000000000000000000000000000000000000090859084908110614ae557fe5b90602001015160f860020a900460f860020a02600160f860020a031916118015614b59575083517f5b0000000000000000000000000000000000000000000000000000000000000090859084908110614b3a57fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b80614c03575083517f600000000000000000000000000000000000000000000000000000000000000090859084908110614b8f57fe5b90602001015160f860020a900460f860020a02600160f860020a031916118015614c03575083517f7b0000000000000000000000000000000000000000000000000000000000000090859084908110614be457fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b80614cad575083517f2f0000000000000000000000000000000000000000000000000000000000000090859084908110614c3957fe5b90602001015160f860020a900460f860020a02600160f860020a031916118015614cad575083517f3a0000000000000000000000000000000000000000000000000000000000000090859084908110614c8e57fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b1515614d29576040805160e560020a62461bcd02815260206004820152602260248201527f737472696e6720636f6e7461696e7320696e76616c696420636861726163746560448201527f7273000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600190910190614aad565b5050506020015192915050565b600080808311614d4d57fe5b8284811515614d5857fe5b0490508284811515614d6657fe5b068184020184141515613e7557fe5b614d7d615142565b600060018311614f90578882526020820188905260808201879052610100820185905261012082018490526001831415614db95760a082018690525b336000908152600c60209081526040808320600e8054600181810183559186528751600a82027fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd810191909155888601517fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fe820155938801517fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3ff85015560608801517fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c40085015560808801517fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c40185015560a08801517fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c40285015560c08801517fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c40385015560e08801517fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c4048501556101008801517fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c4058501556101208801517fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c4069094019390935581549081018255908452919092200155614fe2565b50600e8054600019810191879183908110614fa757fe5b90600052602060002090600a02016006018190555087600e82815481101515614fcc57fe5b90600052602060002090600a0201600201819055505b505050505050505050565b600061271061501361500684605863ffffffff613e4a16565b869063ffffffff613e4a16565b81151561501c57fe5b049050848414615071576000878152600960209081526040808320898452909152902060010154615053908563ffffffff613e9216565b60008881526009602090815260408083208a84529091529020600101555b600087815260096020908152604080832086845290915290206002015461509e908263ffffffff613e9216565b60008881526009602090815260408083208784529091529020600201556150f86150cf878688876064889003612a5d565b60008981526009602090815260408083208884529091529020600301549063ffffffff613e9216565b6000978852600960209081526040808a20958a5294905292909620600301919091555050505050565b508054600082559060005260206000209081019061513f91906151b6565b50565b61014060405190810160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b815481835581811115611c6157600083815260209020611c619181019083015b61123d91905b808211156151d057600081556001016151bc565b509056004661697242616e6b20697473206e6f74207265616479207965742e202063686573656e64657220646f6573206e6f74206d656574207468652072756c65730000636b203f65746120696e20646973636f72640000000000000000000000000000a165627a7a7230582033daa80fc25b9a9d27088a7b1891f5a6aaf17fe9090c3c043aa082068865c9c90029
Swarm Source
bzzr://33daa80fc25b9a9d27088a7b1891f5a6aaf17fe9090c3c043aa082068865c9c9
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | Ether (ETH) | 100.00% | $3,360.42 | 4.4357 | $14,905.82 |
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.