Overview
ETH Balance
1.012330236999998439 ETH
Eth Value
$3,189.10 (@ $3,150.26/ETH)Token Holdings
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 22,974 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Cash Out | 20328605 | 118 days ago | IN | 0 ETH | 0.00184277 | ||||
Cash Out | 20328604 | 118 days ago | IN | 0 ETH | 0.00688643 | ||||
Cash Out | 20328602 | 118 days ago | IN | 0 ETH | 0.00145735 | ||||
Cash Out | 18687490 | 348 days ago | IN | 0 ETH | 0.0095964 | ||||
Cash Out | 18684474 | 348 days ago | IN | 0 ETH | 0.01209752 | ||||
Cash Out | 18684449 | 348 days ago | IN | 0 ETH | 0.00171595 | ||||
Cash Out | 18684444 | 348 days ago | IN | 0 ETH | 0.00503959 | ||||
Cash Out | 18684423 | 348 days ago | IN | 0 ETH | 0.00166258 | ||||
Cash Out | 18684423 | 348 days ago | IN | 0 ETH | 0.00291274 | ||||
Cash Out | 18684364 | 348 days ago | IN | 0 ETH | 0.03474173 | ||||
Cash Out | 17411748 | 527 days ago | IN | 0 ETH | 0.00698866 | ||||
Cash Out | 15038339 | 869 days ago | IN | 0 ETH | 0.013242 | ||||
Cash Out | 15038300 | 869 days ago | IN | 0 ETH | 0.00073391 | ||||
Rename Monster | 12913642 | 1203 days ago | IN | 0 ETH | 0.0017722 | ||||
Rename Monster | 12826625 | 1217 days ago | IN | 0 ETH | 0.0016837 | ||||
Rename Monster | 12763194 | 1227 days ago | IN | 0 ETH | 0.0005718 | ||||
Catch Monster | 12715934 | 1234 days ago | IN | 0 ETH | 0.00013136 | ||||
Rename Monster | 12714584 | 1235 days ago | IN | 0 ETH | 0.00028578 | ||||
Set Catchable | 12324350 | 1295 days ago | IN | 0 ETH | 0.00422632 | ||||
Set Catchable | 12324349 | 1295 days ago | IN | 0 ETH | 0.00422632 | ||||
Set Catchable | 12324349 | 1295 days ago | IN | 0 ETH | 0.00422632 | ||||
Set Catchable | 12324347 | 1295 days ago | IN | 0 ETH | 0.00422632 | ||||
Set Catchable | 12324345 | 1295 days ago | IN | 0 ETH | 0.00423196 | ||||
Set Catchable | 12324344 | 1295 days ago | IN | 0 ETH | 0.00349376 | ||||
Set Catchable | 12324341 | 1295 days ago | IN | 0 ETH | 0.00422632 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
20328605 | 118 days ago | 0.006769 ETH | ||||
20328604 | 118 days ago | 0.00901 ETH | ||||
20328602 | 118 days ago | 0.007609 ETH | ||||
18687490 | 348 days ago | 0.0429 ETH | ||||
18684474 | 348 days ago | 0.0185 ETH | ||||
18684449 | 348 days ago | 0.028 ETH | ||||
18684444 | 348 days ago | 0.01533 ETH | ||||
18684423 | 348 days ago | 0.061596 ETH | ||||
18684423 | 348 days ago | 0.022 ETH | ||||
18684364 | 348 days ago | 0.26 ETH | ||||
17411748 | 527 days ago | 0.003015 ETH | ||||
15038339 | 869 days ago | 0.006 ETH | ||||
11194952 | 1469 days ago | 0.62074 ETH | ||||
10085266 | 1640 days ago | 0.045851 ETH | ||||
9951904 | 1661 days ago | 0.029637 ETH | ||||
9472028 | 1735 days ago | 0.022269 ETH | ||||
9318512 | 1758 days ago | 0.009468 ETH | ||||
8824753 | 1843 days ago | 0.0018 ETH | ||||
8800696 | 1847 days ago | 12.57 ETH | ||||
8630221 | 1873 days ago | 6.7534 ETH | ||||
8603398 | 1878 days ago | 18.3 ETH | ||||
8597752 | 1879 days ago | 11 ETH | ||||
8361718 | 1915 days ago | 0.009288 ETH | ||||
8270603 | 1929 days ago | 0.013116 ETH | ||||
8184897 | 1943 days ago | 0.562 ETH |
Loading...
Loading
Contract Name:
EtheremonWorld
Compiler Version
v0.4.19+commit.c4cbbb05
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2017-12-29 */ pragma solidity ^0.4.16; // copyright [email protected] contract SafeMath { /* function assert(bool assertion) internal { */ /* if (!assertion) { */ /* throw; */ /* } */ /* } // assert no longer needed once solidity is on 0.4.10 */ function safeAdd(uint256 x, uint256 y) pure internal returns(uint256) { uint256 z = x + y; assert((z >= x) && (z >= y)); return z; } function safeSubtract(uint256 x, uint256 y) pure internal returns(uint256) { assert(x >= y); uint256 z = x - y; return z; } function safeMult(uint256 x, uint256 y) pure internal returns(uint256) { uint256 z = x * y; assert((x == 0)||(z/x == y)); return z; } } contract BasicAccessControl { address public owner; // address[] public moderators; uint16 public totalModerators = 0; mapping (address => bool) public moderators; bool public isMaintaining = true; function BasicAccessControl() public { owner = msg.sender; } modifier onlyOwner { require(msg.sender == owner); _; } modifier onlyModerators() { require(moderators[msg.sender] == true); _; } modifier isActive { require(!isMaintaining); _; } function ChangeOwner(address _newOwner) onlyOwner public { if (_newOwner != address(0)) { owner = _newOwner; } } function AddModerator(address _newModerator) onlyOwner public { if (moderators[_newModerator] == false) { moderators[_newModerator] = true; totalModerators += 1; } } function RemoveModerator(address _oldModerator) onlyOwner public { if (moderators[_oldModerator] == true) { moderators[_oldModerator] = false; totalModerators -= 1; } } function UpdateMaintaining(bool _isMaintaining) onlyOwner public { isMaintaining = _isMaintaining; } } contract EtheremonEnum { enum ResultCode { SUCCESS, ERROR_CLASS_NOT_FOUND, ERROR_LOW_BALANCE, ERROR_SEND_FAIL, ERROR_NOT_TRAINER, ERROR_NOT_ENOUGH_MONEY, ERROR_INVALID_AMOUNT } enum ArrayType { CLASS_TYPE, STAT_STEP, STAT_START, STAT_BASE, OBJ_SKILL } enum PropertyType { ANCESTOR, XFACTOR } } contract EtheremonDataBase is EtheremonEnum, BasicAccessControl, SafeMath { uint64 public totalMonster; uint32 public totalClass; // write function withdrawEther(address _sendTo, uint _amount) onlyOwner public returns(ResultCode); function addElementToArrayType(ArrayType _type, uint64 _id, uint8 _value) onlyModerators public returns(uint); function updateIndexOfArrayType(ArrayType _type, uint64 _id, uint _index, uint8 _value) onlyModerators public returns(uint); function setMonsterClass(uint32 _classId, uint256 _price, uint256 _returnPrice, bool _catchable) onlyModerators public returns(uint32); function addMonsterObj(uint32 _classId, address _trainer, string _name) onlyModerators public returns(uint64); function setMonsterObj(uint64 _objId, string _name, uint32 _exp, uint32 _createIndex, uint32 _lastClaimIndex) onlyModerators public; function increaseMonsterExp(uint64 _objId, uint32 amount) onlyModerators public; function decreaseMonsterExp(uint64 _objId, uint32 amount) onlyModerators public; function removeMonsterIdMapping(address _trainer, uint64 _monsterId) onlyModerators public; function addMonsterIdMapping(address _trainer, uint64 _monsterId) onlyModerators public; function clearMonsterReturnBalance(uint64 _monsterId) onlyModerators public returns(uint256 amount); function collectAllReturnBalance(address _trainer) onlyModerators public returns(uint256 amount); function transferMonster(address _from, address _to, uint64 _monsterId) onlyModerators public returns(ResultCode); function addExtraBalance(address _trainer, uint256 _amount) onlyModerators public returns(uint256); function deductExtraBalance(address _trainer, uint256 _amount) onlyModerators public returns(uint256); function setExtraBalance(address _trainer, uint256 _amount) onlyModerators public; // read function getSizeArrayType(ArrayType _type, uint64 _id) constant public returns(uint); function getElementInArrayType(ArrayType _type, uint64 _id, uint _index) constant public returns(uint8); function getMonsterClass(uint32 _classId) constant public returns(uint32 classId, uint256 price, uint256 returnPrice, uint32 total, bool catchable); function getMonsterObj(uint64 _objId) constant public returns(uint64 objId, uint32 classId, address trainer, uint32 exp, uint32 createIndex, uint32 lastClaimIndex, uint createTime); function getMonsterName(uint64 _objId) constant public returns(string name); function getExtraBalance(address _trainer) constant public returns(uint256); function getMonsterDexSize(address _trainer) constant public returns(uint); function getMonsterObjId(address _trainer, uint index) constant public returns(uint64); function getExpectedBalance(address _trainer) constant public returns(uint256); function getMonsterReturn(uint64 _objId) constant public returns(uint256 current, uint256 total); } contract EtheremonGateway is EtheremonEnum, BasicAccessControl { // using for battle contract later function increaseMonsterExp(uint64 _objId, uint32 amount) onlyModerators public; function decreaseMonsterExp(uint64 _objId, uint32 amount) onlyModerators public; // read function isGason(uint64 _objId) constant external returns(bool); function getObjBattleInfo(uint64 _objId) constant external returns(uint32 classId, uint32 exp, bool isGason, uint ancestorLength, uint xfactorsLength); function getClassPropertySize(uint32 _classId, PropertyType _type) constant external returns(uint); function getClassPropertyValue(uint32 _classId, PropertyType _type, uint index) constant external returns(uint32); } contract EtheremonWorld is EtheremonGateway, SafeMath { // old processor address constant public ETHEREMON_PROCESSOR = address(0x8a60806F05876f4d6dB00c877B0558DbCAD30682); uint8 constant public STAT_COUNT = 6; uint8 constant public STAT_MAX = 32; uint8 constant public GEN0_NO = 24; struct MonsterClassAcc { uint32 classId; uint256 price; uint256 returnPrice; uint32 total; bool catchable; } struct MonsterObjAcc { uint64 monsterId; uint32 classId; address trainer; string name; uint32 exp; uint32 createIndex; uint32 lastClaimIndex; uint createTime; } // Gen0 has return price & no longer can be caught when this contract is deployed struct Gen0Config { uint32 classId; uint256 originalPrice; uint256 returnPrice; uint32 total; // total caught (not count those from eggs) } struct GenXProperty { uint32 classId; bool isGason; uint32[] ancestors; uint32[] xfactors; } mapping(uint32 => Gen0Config) public gen0Config; mapping(uint32 => GenXProperty) public genxProperty; uint256 public totalCashout = 0; // for admin uint256 public totalEarn = 0; // exclude gen 0 uint16 public priceIncreasingRatio = 1000; uint public maxDexSize = 500; address private lastHunter = address(0x0); // data contract address public dataContract; // event event EventCatchMonster(address indexed trainer, uint64 objId); event EventCashOut(address indexed trainer, ResultCode result, uint256 amount); event EventWithdrawEther(address indexed sendTo, ResultCode result, uint256 amount); function EtheremonWorld(address _dataContract) public { dataContract = _dataContract; } // admin & moderators function setMaxDexSize(uint _value) onlyModerators external { maxDexSize = _value; } function setOriginalPriceGen0() onlyModerators external { gen0Config[1] = Gen0Config(1, 0.3 ether, 0.003 ether, 374); gen0Config[2] = Gen0Config(2, 0.3 ether, 0.003 ether, 408); gen0Config[3] = Gen0Config(3, 0.3 ether, 0.003 ether, 373); gen0Config[4] = Gen0Config(4, 0.2 ether, 0.002 ether, 437); gen0Config[5] = Gen0Config(5, 0.1 ether, 0.001 ether, 497); gen0Config[6] = Gen0Config(6, 0.3 ether, 0.003 ether, 380); gen0Config[7] = Gen0Config(7, 0.2 ether, 0.002 ether, 345); gen0Config[8] = Gen0Config(8, 0.1 ether, 0.001 ether, 518); gen0Config[9] = Gen0Config(9, 0.1 ether, 0.001 ether, 447); gen0Config[10] = Gen0Config(10, 0.2 ether, 0.002 ether, 380); gen0Config[11] = Gen0Config(11, 0.2 ether, 0.002 ether, 354); gen0Config[12] = Gen0Config(12, 0.2 ether, 0.002 ether, 346); gen0Config[13] = Gen0Config(13, 0.2 ether, 0.002 ether, 351); gen0Config[14] = Gen0Config(14, 0.2 ether, 0.002 ether, 338); gen0Config[15] = Gen0Config(15, 0.2 ether, 0.002 ether, 341); gen0Config[16] = Gen0Config(16, 0.35 ether, 0.0035 ether, 384); gen0Config[17] = Gen0Config(17, 0.1 ether, 0.001 ether, 305); gen0Config[18] = Gen0Config(18, 0.1 ether, 0.001 ether, 427); gen0Config[19] = Gen0Config(19, 0.1 ether, 0.001 ether, 304); gen0Config[20] = Gen0Config(20, 0.4 ether, 0.005 ether, 82); gen0Config[21] = Gen0Config(21, 1, 1, 123); gen0Config[22] = Gen0Config(22, 0.2 ether, 0.001 ether, 468); gen0Config[23] = Gen0Config(23, 0.5 ether, 0.0025 ether, 302); gen0Config[24] = Gen0Config(24, 1 ether, 0.005 ether, 195); } function getEarningAmount() constant public returns(uint256) { // calculate value for gen0 uint256 totalValidAmount = 0; for (uint32 classId=1; classId <= GEN0_NO; classId++) { // make sure there is a class Gen0Config storage gen0 = gen0Config[classId]; if (gen0.total >0 && gen0.classId == classId && gen0.originalPrice > 0 && gen0.returnPrice > 0) { uint256 rate = gen0.originalPrice/gen0.returnPrice; if (rate < gen0.total) { totalValidAmount += (gen0.originalPrice + gen0.returnPrice) * rate / 2; totalValidAmount += (gen0.total - rate) * gen0.returnPrice; } else { totalValidAmount += (gen0.originalPrice + gen0.returnPrice * (rate - gen0.total + 1)) / 2 * gen0.total; } } } // add in earn from genx totalValidAmount = safeAdd(totalValidAmount, totalEarn); // deduct amount of cashing out totalValidAmount = safeSubtract(totalValidAmount, totalCashout); return totalValidAmount; } function withdrawEther(address _sendTo, uint _amount) onlyModerators external returns(ResultCode) { if (_amount > this.balance) { EventWithdrawEther(_sendTo, ResultCode.ERROR_INVALID_AMOUNT, 0); return ResultCode.ERROR_INVALID_AMOUNT; } uint256 totalValidAmount = getEarningAmount(); if (_amount > totalValidAmount) { EventWithdrawEther(_sendTo, ResultCode.ERROR_INVALID_AMOUNT, 0); return ResultCode.ERROR_INVALID_AMOUNT; } _sendTo.transfer(_amount); totalCashout += _amount; EventWithdrawEther(_sendTo, ResultCode.SUCCESS, _amount); return ResultCode.SUCCESS; } // convenient tool to add monster function addMonsterClassBasic(uint32 _classId, uint8 _type, uint256 _price, uint256 _returnPrice, uint8 _ss1, uint8 _ss2, uint8 _ss3, uint8 _ss4, uint8 _ss5, uint8 _ss6) onlyModerators external { EtheremonDataBase data = EtheremonDataBase(dataContract); MonsterClassAcc memory class; (class.classId, class.price, class.returnPrice, class.total, class.catchable) = data.getMonsterClass(_classId); // can add only one time if (_classId == 0 || class.classId == _classId) revert(); data.setMonsterClass(_classId, _price, _returnPrice, true); data.addElementToArrayType(ArrayType.CLASS_TYPE, uint64(_classId), _type); // add stat step data.addElementToArrayType(ArrayType.STAT_START, uint64(_classId), _ss1); data.addElementToArrayType(ArrayType.STAT_START, uint64(_classId), _ss2); data.addElementToArrayType(ArrayType.STAT_START, uint64(_classId), _ss3); data.addElementToArrayType(ArrayType.STAT_START, uint64(_classId), _ss4); data.addElementToArrayType(ArrayType.STAT_START, uint64(_classId), _ss5); data.addElementToArrayType(ArrayType.STAT_START, uint64(_classId), _ss6); } function addMonsterClassExtend(uint32 _classId, uint8 _type2, uint8 _type3, uint8 _st1, uint8 _st2, uint8 _st3, uint8 _st4, uint8 _st5, uint8 _st6 ) onlyModerators external { EtheremonDataBase data = EtheremonDataBase(dataContract); if (_classId == 0 || data.getSizeArrayType(ArrayType.STAT_STEP, uint64(_classId)) > 0) revert(); if (_type2 > 0) { data.addElementToArrayType(ArrayType.CLASS_TYPE, uint64(_classId), _type2); } if (_type3 > 0) { data.addElementToArrayType(ArrayType.CLASS_TYPE, uint64(_classId), _type3); } // add stat base data.addElementToArrayType(ArrayType.STAT_STEP, uint64(_classId), _st1); data.addElementToArrayType(ArrayType.STAT_STEP, uint64(_classId), _st2); data.addElementToArrayType(ArrayType.STAT_STEP, uint64(_classId), _st3); data.addElementToArrayType(ArrayType.STAT_STEP, uint64(_classId), _st4); data.addElementToArrayType(ArrayType.STAT_STEP, uint64(_classId), _st5); data.addElementToArrayType(ArrayType.STAT_STEP, uint64(_classId), _st6); } function setCatchable(uint32 _classId, bool catchable) onlyModerators external { // can not edit gen 0 - can not catch forever Gen0Config storage gen0 = gen0Config[_classId]; if (gen0.classId == _classId) revert(); EtheremonDataBase data = EtheremonDataBase(dataContract); MonsterClassAcc memory class; (class.classId, class.price, class.returnPrice, class.total, class.catchable) = data.getMonsterClass(_classId); data.setMonsterClass(class.classId, class.price, class.returnPrice, catchable); } function setPriceIncreasingRatio(uint16 _ratio) onlyModerators external { priceIncreasingRatio = _ratio; } function setGason(uint32 _classId, bool _isGason) onlyModerators external { GenXProperty storage pro = genxProperty[_classId]; pro.isGason = _isGason; } function addClassProperty(uint32 _classId, PropertyType _type, uint32 value) onlyModerators external { GenXProperty storage pro = genxProperty[_classId]; pro.classId = _classId; if (_type == PropertyType.ANCESTOR) { pro.ancestors.push(value); } else { pro.xfactors.push(value); } } // gate way function increaseMonsterExp(uint64 _objId, uint32 amount) onlyModerators public { EtheremonDataBase data = EtheremonDataBase(dataContract); data.increaseMonsterExp(_objId, amount); } function decreaseMonsterExp(uint64 _objId, uint32 amount) onlyModerators public { EtheremonDataBase data = EtheremonDataBase(dataContract); data.decreaseMonsterExp(_objId, amount); } // helper function getRandom(uint8 maxRan, uint8 index, address priAddress) constant public returns(uint8) { uint256 genNum = uint256(block.blockhash(block.number-1)) + uint256(priAddress); for (uint8 i = 0; i < index && i < 6; i ++) { genNum /= 256; } return uint8(genNum % maxRan); } function () payable public { if (msg.sender != ETHEREMON_PROCESSOR) revert(); } // public function isGason(uint64 _objId) constant external returns(bool) { EtheremonDataBase data = EtheremonDataBase(dataContract); MonsterObjAcc memory obj; (obj.monsterId, obj.classId, obj.trainer, obj.exp, obj.createIndex, obj.lastClaimIndex, obj.createTime) = data.getMonsterObj(_objId); GenXProperty storage pro = genxProperty[obj.classId]; return pro.isGason; } function getObjIndex(uint64 _objId) constant public returns(uint32 classId, uint32 createIndex, uint32 lastClaimIndex) { EtheremonDataBase data = EtheremonDataBase(dataContract); MonsterObjAcc memory obj; (obj.monsterId, obj.classId, obj.trainer, obj.exp, obj.createIndex, obj.lastClaimIndex, obj.createTime) = data.getMonsterObj(_objId); return (obj.classId, obj.createIndex, obj.lastClaimIndex); } function getObjBattleInfo(uint64 _objId) constant external returns(uint32 classId, uint32 exp, bool isGason, uint ancestorLength, uint xfactorsLength) { EtheremonDataBase data = EtheremonDataBase(dataContract); MonsterObjAcc memory obj; (obj.monsterId, obj.classId, obj.trainer, obj.exp, obj.createIndex, obj.lastClaimIndex, obj.createTime) = data.getMonsterObj(_objId); GenXProperty storage pro = genxProperty[obj.classId]; return (obj.classId, obj.exp, pro.isGason, pro.ancestors.length, pro.xfactors.length); } function getClassPropertySize(uint32 _classId, PropertyType _type) constant external returns(uint) { if (_type == PropertyType.ANCESTOR) return genxProperty[_classId].ancestors.length; else return genxProperty[_classId].xfactors.length; } function getClassPropertyValue(uint32 _classId, PropertyType _type, uint index) constant external returns(uint32) { if (_type == PropertyType.ANCESTOR) return genxProperty[_classId].ancestors[index]; else return genxProperty[_classId].xfactors[index]; } // only gen 0 function getGen0COnfig(uint32 _classId) constant public returns(uint32, uint256, uint32) { Gen0Config storage gen0 = gen0Config[_classId]; return (gen0.classId, gen0.originalPrice, gen0.total); } // only gen 0 function getReturnFromMonster(uint64 _objId) constant public returns(uint256 current, uint256 total) { /* 1. Gen 0 can not be caught anymore. 2. Egg will not give return. */ uint32 classId = 0; uint32 createIndex = 0; uint32 lastClaimIndex = 0; (classId, createIndex, lastClaimIndex) = getObjIndex(_objId); Gen0Config storage gen0 = gen0Config[classId]; if (gen0.classId != classId) { return (0, 0); } uint32 currentGap = 0; uint32 totalGap = 0; if (lastClaimIndex < gen0.total) currentGap = gen0.total - lastClaimIndex; if (createIndex < gen0.total) totalGap = gen0.total - createIndex; return (safeMult(currentGap, gen0.returnPrice), safeMult(totalGap, gen0.returnPrice)); } // write access function moveDataContractBalanceToWorld() external { EtheremonDataBase data = EtheremonDataBase(dataContract); data.withdrawEther(address(this), data.balance); } function renameMonster(uint64 _objId, string name) isActive external { EtheremonDataBase data = EtheremonDataBase(dataContract); MonsterObjAcc memory obj; (obj.monsterId, obj.classId, obj.trainer, obj.exp, obj.createIndex, obj.lastClaimIndex, obj.createTime) = data.getMonsterObj(_objId); if (obj.monsterId != _objId || obj.trainer != msg.sender) { revert(); } data.setMonsterObj(_objId, name, obj.exp, obj.createIndex, obj.lastClaimIndex); } function catchMonster(uint32 _classId, string _name) isActive external payable { EtheremonDataBase data = EtheremonDataBase(dataContract); MonsterClassAcc memory class; (class.classId, class.price, class.returnPrice, class.total, class.catchable) = data.getMonsterClass(_classId); if (class.classId == 0 || class.catchable == false) { revert(); } // can not keep too much etheremon if (data.getMonsterDexSize(msg.sender) > maxDexSize) revert(); uint256 totalBalance = safeAdd(msg.value, data.getExtraBalance(msg.sender)); uint256 payPrice = class.price; // increase price for each etheremon created if (class.total > 0) payPrice += class.price*(class.total-1)/priceIncreasingRatio; if (payPrice > totalBalance) { revert(); } totalEarn += payPrice; // deduct the balance data.setExtraBalance(msg.sender, safeSubtract(totalBalance, payPrice)); // add monster uint64 objId = data.addMonsterObj(_classId, msg.sender, _name); // generate base stat for the previous one for (uint i=0; i < STAT_COUNT; i+= 1) { uint8 value = getRandom(STAT_MAX, uint8(i), lastHunter) + data.getElementInArrayType(ArrayType.STAT_START, uint64(_classId), i); data.addElementToArrayType(ArrayType.STAT_BASE, objId, value); } lastHunter = msg.sender; EventCatchMonster(msg.sender, objId); } function cashOut(uint256 _amount) public returns(ResultCode) { EtheremonDataBase data = EtheremonDataBase(dataContract); uint256 totalAmount = data.getExtraBalance(msg.sender); uint64 objId = 0; // collect gen 0 return price uint dexSize = data.getMonsterDexSize(msg.sender); for (uint i = 0; i < dexSize; i++) { objId = data.getMonsterObjId(msg.sender, i); if (objId > 0) { MonsterObjAcc memory obj; (obj.monsterId, obj.classId, obj.trainer, obj.exp, obj.createIndex, obj.lastClaimIndex, obj.createTime) = data.getMonsterObj(objId); Gen0Config storage gen0 = gen0Config[obj.classId]; if (gen0.classId == obj.classId) { if (obj.lastClaimIndex < gen0.total) { uint32 gap = uint32(safeSubtract(gen0.total, obj.lastClaimIndex)); if (gap > 0) { totalAmount += safeMult(gap, gen0.returnPrice); // reset total (except name is cleared :( ) data.setMonsterObj(obj.monsterId, " name me ", obj.exp, obj.createIndex, gen0.total); } } } } } // default to cash out all if (_amount == 0) { _amount = totalAmount; } if (_amount > totalAmount) { revert(); } // check contract has enough money if (this.balance + data.balance < _amount){ revert(); } else if (this.balance < _amount) { data.withdrawEther(address(this), data.balance); } if (_amount > 0) { data.setExtraBalance(msg.sender, totalAmount - _amount); if (!msg.sender.send(_amount)) { data.setExtraBalance(msg.sender, totalAmount); EventCashOut(msg.sender, ResultCode.ERROR_SEND_FAIL, 0); return ResultCode.ERROR_SEND_FAIL; } } EventCashOut(msg.sender, ResultCode.SUCCESS, _amount); return ResultCode.SUCCESS; } // read access function getTrainerEarn(address _trainer) constant public returns(uint256) { EtheremonDataBase data = EtheremonDataBase(dataContract); uint256 returnFromMonster = 0; // collect gen 0 return price uint256 gen0current = 0; uint256 gen0total = 0; uint64 objId = 0; uint dexSize = data.getMonsterDexSize(_trainer); for (uint i = 0; i < dexSize; i++) { objId = data.getMonsterObjId(_trainer, i); if (objId > 0) { (gen0current, gen0total) = getReturnFromMonster(objId); returnFromMonster += gen0current; } } return returnFromMonster; } function getTrainerBalance(address _trainer) constant external returns(uint256) { EtheremonDataBase data = EtheremonDataBase(dataContract); uint256 userExtraBalance = data.getExtraBalance(_trainer); uint256 returnFromMonster = getTrainerEarn(_trainer); return (userExtraBalance + returnFromMonster); } function getMonsterClassBasic(uint32 _classId) constant external returns(uint256, uint256, uint256, bool) { EtheremonDataBase data = EtheremonDataBase(dataContract); MonsterClassAcc memory class; (class.classId, class.price, class.returnPrice, class.total, class.catchable) = data.getMonsterClass(_classId); return (class.price, class.returnPrice, class.total, class.catchable); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[{"name":"_objId","type":"uint64"}],"name":"getObjBattleInfo","outputs":[{"name":"classId","type":"uint32"},{"name":"exp","type":"uint32"},{"name":"isGason","type":"bool"},{"name":"ancestorLength","type":"uint256"},{"name":"xfactorsLength","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_classId","type":"uint32"},{"name":"_type","type":"uint8"},{"name":"value","type":"uint32"}],"name":"addClassProperty","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"setMaxDexSize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"dataContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint32"}],"name":"gen0Config","outputs":[{"name":"classId","type":"uint32"},{"name":"originalPrice","type":"uint256"},{"name":"returnPrice","type":"uint256"},{"name":"total","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"moderators","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxDexSize","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_classId","type":"uint32"},{"name":"_type","type":"uint8"},{"name":"_price","type":"uint256"},{"name":"_returnPrice","type":"uint256"},{"name":"_ss1","type":"uint8"},{"name":"_ss2","type":"uint8"},{"name":"_ss3","type":"uint8"},{"name":"_ss4","type":"uint8"},{"name":"_ss5","type":"uint8"},{"name":"_ss6","type":"uint8"}],"name":"addMonsterClassBasic","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_objId","type":"uint64"}],"name":"getObjIndex","outputs":[{"name":"classId","type":"uint32"},{"name":"createIndex","type":"uint32"},{"name":"lastClaimIndex","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_objId","type":"uint64"},{"name":"amount","type":"uint32"}],"name":"decreaseMonsterExp","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"maxRan","type":"uint8"},{"name":"index","type":"uint8"},{"name":"priAddress","type":"address"}],"name":"getRandom","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_objId","type":"uint64"}],"name":"getReturnFromMonster","outputs":[{"name":"current","type":"uint256"},{"name":"total","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_isMaintaining","type":"bool"}],"name":"UpdateMaintaining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"STAT_MAX","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalModerators","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_sendTo","type":"address"},{"name":"_amount","type":"uint256"}],"name":"withdrawEther","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_objId","type":"uint64"},{"name":"amount","type":"uint32"}],"name":"increaseMonsterExp","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_ratio","type":"uint16"}],"name":"setPriceIncreasingRatio","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getEarningAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_classId","type":"uint32"},{"name":"_type","type":"uint8"},{"name":"index","type":"uint256"}],"name":"getClassPropertyValue","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"cashOut","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"setOriginalPriceGen0","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_classId","type":"uint32"},{"name":"_name","type":"string"}],"name":"catchMonster","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_newModerator","type":"address"}],"name":"AddModerator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"GEN0_NO","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalCashout","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_classId","type":"uint32"},{"name":"_type","type":"uint8"}],"name":"getClassPropertySize","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_classId","type":"uint32"},{"name":"catchable","type":"bool"}],"name":"setCatchable","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_objId","type":"uint64"},{"name":"name","type":"string"}],"name":"renameMonster","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_classId","type":"uint32"}],"name":"getMonsterClassBasic","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint32"}],"name":"genxProperty","outputs":[{"name":"classId","type":"uint32"},{"name":"isGason","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_oldModerator","type":"address"}],"name":"RemoveModerator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_trainer","type":"address"}],"name":"getTrainerEarn","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_classId","type":"uint32"},{"name":"_type2","type":"uint8"},{"name":"_type3","type":"uint8"},{"name":"_st1","type":"uint8"},{"name":"_st2","type":"uint8"},{"name":"_st3","type":"uint8"},{"name":"_st4","type":"uint8"},{"name":"_st5","type":"uint8"},{"name":"_st6","type":"uint8"}],"name":"addMonsterClassExtend","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"moveDataContractBalanceToWorld","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"STAT_COUNT","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalEarn","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"priceIncreasingRatio","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ETHEREMON_PROCESSOR","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_classId","type":"uint32"},{"name":"_isGason","type":"bool"}],"name":"setGason","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_classId","type":"uint32"}],"name":"getGen0COnfig","outputs":[{"name":"","type":"uint32"},{"name":"","type":"uint256"},{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isMaintaining","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"ChangeOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_trainer","type":"address"}],"name":"getTrainerBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_objId","type":"uint64"}],"name":"isGason","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_dataContract","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"trainer","type":"address"},{"indexed":false,"name":"objId","type":"uint64"}],"name":"EventCatchMonster","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"trainer","type":"address"},{"indexed":false,"name":"result","type":"uint8"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"EventCashOut","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"sendTo","type":"address"},{"indexed":false,"name":"result","type":"uint8"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"EventWithdrawEther","type":"event"}]
Contract Creation Code
60606040526000805460a060020a61ffff02191681556002805460ff1916600117905560058190556006556007805461ffff19166103e81790556101f460085560098054600160a060020a0319169055341561005a57600080fd5b6040516020806149d58339810160405280805160008054600160a060020a03338116600160a060020a031992831617909255600a8054929093169116179055505061492b806100aa6000396000f3006060604052600436106102155763ffffffff60e060020a600035041662119f34811461024057806305660ce81461029d57806308c977e7146102c65780630d668818146102dc5780630daf41511461030b57806314d0f1ba146103585780631649b76d1461038b5780631756ffd9146103b05780631bea4a611461040057806331afa55f1461044e5780633a34f09a14610477578063464299f9146104b857806348ef5aa8146104f05780634e3dc2f1146105085780634efb023e1461051b578063522f6815146105455780635643a7111461058b57806357918052146105b457806359187cec146105ce5780635b626339146105e15780635c7b79f51461061f57806366ba267014610635578063681551d1146106485780636c81fd6d1461066557806373d65c001461068457806386048c9a1461069757806388e9abb6146106aa5780638b886d04146106cc5780638d1d22d8146106ed5780638da5cb5b1461071957806394f6ba1c1461072c5780639a21492c14610774578063b85d6275146107b1578063bc62c89a146107d0578063bf5f4edf146107ef578063d7b84f681461083c578063d98e14bd1461084f578063dffd722f14610862578063e19bb96414610875578063e7e7e3e814610888578063e92704e81461089b578063ecff537f146108bc578063ee4e441614610906578063f285329214610919578063f445037b14610938578063fd08374814610957575b33600160a060020a0316738a60806f05876f4d6db00c877b0558dbcad306821461023e57600080fd5b005b341561024b57600080fd5b61026067ffffffffffffffff60043516610977565b60405163ffffffff95861681529390941660208401529015156040808401919091526060830191909152608082019290925260a001905180910390f35b34156102a857600080fd5b61023e63ffffffff60043581169060ff602435169060443516610ac4565b34156102d157600080fd5b61023e600435610bcc565b34156102e757600080fd5b6102ef610bfc565b604051600160a060020a03909116815260200160405180910390f35b341561031657600080fd5b61032763ffffffff60043516610c0b565b60405163ffffffff948516815260208101939093526040808401929092529092166060820152608001905180910390f35b341561036357600080fd5b610377600160a060020a0360043516610c3c565b604051901515815260200160405180910390f35b341561039657600080fd5b61039e610c51565b60405190815260200160405180910390f35b34156103bb57600080fd5b61023e63ffffffff6004351660ff602435811690604435906064359060843581169060a43581169060c43581169060e435811690610104358116906101243516610c57565b341561040b57600080fd5b61042067ffffffffffffffff6004351661129f565b60405163ffffffff938416815291831660208301529091166040808301919091526060909101905180910390f35b341561045957600080fd5b61023e67ffffffffffffffff6004351663ffffffff602435166113aa565b341561048257600080fd5b6104a260ff60043581169060243516600160a060020a036044351661144a565b60405160ff909116815260200160405180910390f35b34156104c357600080fd5b6104d867ffffffffffffffff600435166114a4565b60405191825260208201526040908101905180910390f35b34156104fb57600080fd5b61023e6004351515611579565b341561051357600080fd5b6104a26115a7565b341561052657600080fd5b61052e6115ac565b60405161ffff909116815260200160405180910390f35b341561055057600080fd5b610567600160a060020a03600435166024356115ce565b6040518082600681111561057757fe5b60ff16815260200191505060405180910390f35b341561059657600080fd5b61023e67ffffffffffffffff6004351663ffffffff6024351661175e565b34156105bf57600080fd5b61023e61ffff600435166117e5565b34156105d957600080fd5b61039e611828565b34156105ec57600080fd5b61060663ffffffff6004351660ff60243516604435611951565b60405163ffffffff909116815260200160405180910390f35b341561062a57600080fd5b6105676004356119e2565b341561064057600080fd5b61023e612066565b61023e6004803563ffffffff169060248035908101910135613115565b341561067057600080fd5b61023e600160a060020a036004351661366a565b341561068f57600080fd5b6104a2613714565b34156106a257600080fd5b61039e613719565b34156106b557600080fd5b61039e63ffffffff6004351660ff6024351661371f565b34156106d757600080fd5b61023e63ffffffff600435166024351515613774565b34156106f857600080fd5b61023e6004803567ffffffffffffffff169060248035908101910135613915565b341561072457600080fd5b6102ef613b06565b341561073757600080fd5b61074863ffffffff60043516613b15565b604051938452602084019290925260408084019190915290151560608301526080909101905180910390f35b341561077f57600080fd5b61079063ffffffff60043516613bfd565b60405163ffffffff9092168252151560208201526040908101905180910390f35b34156107bc57600080fd5b61023e600160a060020a0360043516613c22565b34156107db57600080fd5b61039e600160a060020a0360043516613ccc565b34156107fa57600080fd5b61023e63ffffffff6004351660ff60243581169060443581169060643581169060843581169060a43581169060c43581169060e4358116906101043516613e0b565b341561084757600080fd5b61023e614479565b341561085a57600080fd5b6104a26144f8565b341561086d57600080fd5b61039e6144fd565b341561088057600080fd5b61052e614503565b341561089357600080fd5b6102ef61450d565b34156108a657600080fd5b61023e63ffffffff600435166024351515614525565b34156108c757600080fd5b6108d863ffffffff60043516614584565b60405163ffffffff938416815260208101929092529091166040808301919091526060909101905180910390f35b341561091157600080fd5b6103776145b6565b341561092457600080fd5b61023e600160a060020a03600435166145bf565b341561094357600080fd5b61039e600160a060020a0360043516614616565b341561096257600080fd5b61037767ffffffffffffffff600435166146a6565b600080600080600080610988614819565b600a54600160a060020a0316915060008263072024608a8360405160e0015260405160e060020a63ffffffff841602815267ffffffffffffffff909116600482015260240160e060405180830381600087803b15156109e657600080fd5b6102c65a03f115156109f757600080fd5b505050604051805190602001805190602001805190602001805190602001805190602001805190602001805160e08a01525063ffffffff90811660c089015290811660a08801529081166080870152600160a060020a039091166040860152166020840190815267ffffffffffffffff90911683526004906000905163ffffffff1663ffffffff16815260200190815260200160002090508160200151826080015182546001840154600290940154929c919b50640100000000900460ff16995091975095509350505050565b600160a060020a033316600090815260016020819052604082205460ff16151514610aee57600080fd5b5063ffffffff83166000818152600460205260408120805463ffffffff19169092178255836001811115610b1e57fe5b1415610b7857806001018054806001018281610b3a9190614865565b916000526020600020906008918282040191900660040284909190916101000a81548163ffffffff021916908363ffffffff16021790555050610bc6565b60028101805460018101610b8c8382614865565b916000526020600020906008918282040191900660040284909190916101000a81548163ffffffff021916908363ffffffff160217905550505b50505050565b600160a060020a03331660009081526001602081905260409091205460ff16151514610bf757600080fd5b600855565b600a54600160a060020a031681565b6003602081905260009182526040909120805460018201546002830154929093015463ffffffff9182169392911684565b60016020526000908152604090205460ff1681565b60085481565b6000610c6161489e565b600160a060020a03331660009081526001602081905260409091205460ff16151514610c8c57600080fd5b600a54600160a060020a0316915081639d29cac48d600060405160a0015260405163ffffffff83811660e060020a02825291909116600482015260240160a060405180830381600087803b1515610ce257600080fd5b6102c65a03f11515610cf357600080fd5b5050506040518051906020018051906020018051906020018051906020018051151560808701525063ffffffff90811660608601526040850191909152602084019190915290811682528c161580610d57575063ffffffff8c16815163ffffffff16145b15610d6157600080fd5b81600160a060020a031663c8ff80a18d8c8c600160006040516020015260405163ffffffff86811660e060020a0282529490941660048501526024840192909252604483015215156064820152608401602060405180830381600087803b1515610dca57600080fd5b6102c65a03f11515610ddb57600080fd5b50505060405180515050600160a060020a0382166326bda739600063ffffffff8f168e82604051602001526040518463ffffffff1660e060020a02815260040180846004811115610e2857fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b1515610e7457600080fd5b6102c65a03f11515610e8557600080fd5b50505060405180515050600160a060020a0382166326bda739600263ffffffff8f168b6000604051602001526040518463ffffffff1660e060020a02815260040180846004811115610ed357fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b1515610f1f57600080fd5b6102c65a03f11515610f3057600080fd5b50505060405180515050600160a060020a0382166326bda739600263ffffffff8f168a6000604051602001526040518463ffffffff1660e060020a02815260040180846004811115610f7e57fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b1515610fca57600080fd5b6102c65a03f11515610fdb57600080fd5b50505060405180515050600160a060020a0382166326bda739600263ffffffff8f16896000604051602001526040518463ffffffff1660e060020a0281526004018084600481111561102957fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b151561107557600080fd5b6102c65a03f1151561108657600080fd5b50505060405180515050600160a060020a0382166326bda739600263ffffffff8f16886000604051602001526040518463ffffffff1660e060020a028152600401808460048111156110d457fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b151561112057600080fd5b6102c65a03f1151561113157600080fd5b50505060405180515050600160a060020a0382166326bda739600263ffffffff8f16876000604051602001526040518463ffffffff1660e060020a0281526004018084600481111561117f57fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b15156111cb57600080fd5b6102c65a03f115156111dc57600080fd5b50505060405180515050600160a060020a0382166326bda739600263ffffffff8f16866000604051602001526040518463ffffffff1660e060020a0281526004018084600481111561122a57fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b151561127657600080fd5b6102c65a03f1151561128757600080fd5b50505060405180515050505050505050505050505050565b6000806000806112ad614819565b600a54600160a060020a0316915081630720246087600060405160e0015260405160e060020a63ffffffff841602815267ffffffffffffffff909116600482015260240160e060405180830381600087803b151561130a57600080fd5b6102c65a03f1151561131b57600080fd5b505050604051805190602001805190602001805190602001805190602001805190602001805190602001805160e08901525063ffffffff90811660c088015290811660a08701529081166080860152600160a060020a039091166040850152166020830190815267ffffffffffffffff9091168252518160a001518260c0015194509450945050509193909250565b600160a060020a033316600090815260016020819052604082205460ff161515146113d457600080fd5b50600a54600160a060020a0316806331afa55f848460405163ffffffff84811660e060020a02825267ffffffffffffffff93909316600482015291166024820152604401600060405180830381600087803b151561143157600080fd5b6102c65a03f1151561144257600080fd5b505050505050565b6000600019430140600160a060020a03831601815b8460ff168160ff16108015611477575060068160ff16105b1561148b576101008204915060010161145f565b8560ff168281151561149957fe5b069695505050505050565b6000808080808080806114b68961129f565b63ffffffff80841660008181526003602052604090208054959b509399509197509195509116146114ed576000975087965061156e565b50506003810154600090819063ffffffff908116908516101561151b57600383015463ffffffff1684900391505b600383015463ffffffff90811690861610156115415750600382015463ffffffff168490035b6115558263ffffffff1684600201546147c7565b6115698263ffffffff1685600201546147c7565b975097505b505050505050915091565b60005433600160a060020a0390811691161461159457600080fd5b6002805460ff1916911515919091179055565b602081565b60005474010000000000000000000000000000000000000000900461ffff1681565b600160a060020a0333166000908152600160208190526040822054829160ff9091161515146115fc57600080fd5b30600160a060020a0316318311156116705783600160a060020a03167fdd015856503ad75c75662bfdfd4366944a55a7bafb8e8cacaa950659ce2b680f600660006040518083600681111561164d57fe5b60ff1681526020018281526020019250505060405180910390a260069150611757565b611678611828565b9050808311156116c15783600160a060020a03167fdd015856503ad75c75662bfdfd4366944a55a7bafb8e8cacaa950659ce2b680f600660006040518083600681111561164d57fe5b600160a060020a03841683156108fc0284604051600060405180830381858888f1935050505015156116f257600080fd5b6005805484019055600160a060020a0384167fdd015856503ad75c75662bfdfd4366944a55a7bafb8e8cacaa950659ce2b680f6000856040518083600681111561173857fe5b60ff1681526020018281526020019250505060405180910390a2600091505b5092915050565b600160a060020a033316600090815260016020819052604082205460ff1615151461178857600080fd5b50600a54600160a060020a031680635643a711848460405163ffffffff84811660e060020a02825267ffffffffffffffff93909316600482015291166024820152604401600060405180830381600087803b151561143157600080fd5b600160a060020a03331660009081526001602081905260409091205460ff1615151461181057600080fd5b6007805461ffff191661ffff92909216919091179055565b600080600181805b601863ffffffff84161161192e5763ffffffff80841660009081526003602081905260408220908101549094509091161180156118765750815463ffffffff8481169116145b8015611886575060008260010154115b8015611896575060008260020154115b1561192357816002015482600101548115156118ae57fe5b6003840154919004915063ffffffff168110156118f85760028281015460018401540182026002840154600385015463ffffffff1684900302919004949094019390930192611923565b600382015460028084015460018086015463ffffffff90941693848603909101909102010402840193505b600190920191611830565b61193a846006546147eb565b935061194884600554614805565b95945050505050565b60008083600181111561196057fe5b14156119b75763ffffffff8416600090815260046020526040902060010180548390811061198a57fe5b90600052602060002090600891828204019190066004029054906101000a900463ffffffff1690506119db565b63ffffffff8416600090815260046020526040902060020180548390811061198a57fe5b9392505050565b6000806000806000806119f3614819565b600a54600160a060020a031695506000808763c782fc6033836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515611a5157600080fd5b6102c65a03f11515611a6257600080fd5b505050604051805197506000965050600160a060020a0388166347c17bac33886040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515611ac757600080fd5b6102c65a03f11515611ad857600080fd5b5050506040518051955060009450505b84841015611dcb5787600160a060020a03166375fe2e33338660006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515611b4d57600080fd5b6102c65a03f11515611b5e57600080fd5b5050506040518051965050600067ffffffffffffffff87161115611dc05787600160a060020a0316630720246087600060405160e0015260405160e060020a63ffffffff841602815267ffffffffffffffff909116600482015260240160e060405180830381600087803b1515611bd457600080fd5b6102c65a03f11515611be557600080fd5b505050604051805190602001805190602001805190602001805190602001805190602001805190602001805160e08b01525063ffffffff90811660c08a015290811660a08901529081166080880152600160a060020a039091166040870152166020850190815267ffffffffffffffff90911684526003906000905163ffffffff1663ffffffff16815260200190815260200160002091508260200151825463ffffffff90811691161415611dc057600382015463ffffffff1660c084015163ffffffff161015611dc0576003820154611ccf9063ffffffff1660c085015163ffffffff16614805565b905060008163ffffffff161115611dc057611cf48163ffffffff1683600201546147c7565b90960195600160a060020a0388166332666a31845185608001518660a00151600387015463ffffffff1660405163ffffffff86811660e060020a02825267ffffffffffffffff95909516600482015292841660448401529083166064830152909116608482015260a06024820152600960a48201527f206e616d65206d6520000000000000000000000000000000000000000000000060c482015260e401600060405180830381600087803b1515611dab57600080fd5b6102c65a03f11515611dbc57600080fd5b5050505b600190930192611ae8565b891515611dd6578699505b868a1115611de357600080fd5b8988600160a060020a03163130600160a060020a031631011015611e0657600080fd5b8930600160a060020a0316311015611e9257600160a060020a03881663522f681530823160006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515611e7657600080fd5b6102c65a03f11515611e8757600080fd5b505050604051805150505b60008a1115611ffc5787600160a060020a031663b55cdbf9338c8a0360405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b1515611ef157600080fd5b6102c65a03f11515611f0257600080fd5b5050600160a060020a03331690508a156108fc028b604051600060405180830381858888f193505050501515611ffc5787600160a060020a031663b55cdbf9338960405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b1515611f8657600080fd5b6102c65a03f11515611f9757600080fd5b50505033600160a060020a03167fde2ec039772c8252fbdc620a480847194009c38dfbd74c4ae947e3df493a304f6003600060405180836006811115611fd957fe5b60ff1681526020018281526020019250505060405180910390a260039850612059565b33600160a060020a03167fde2ec039772c8252fbdc620a480847194009c38dfbd74c4ae947e3df493a304f60008c6040518083600681111561203a57fe5b60ff1681526020018281526020019250505060405180910390a2600098505b5050505050505050919050565b600160a060020a03331660009081526001602081905260409091205460ff1615151461209157600080fd5b608060405190810160409081526001808352670429d069189e0000602080850191909152660aa87bee538000928401929092526101766060840152600052600390527fa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff90921691909117905550608060405190810160409081526002808352670429d069189e0000602080850191909152660aa87bee538000928401929092526101986060840152600052600390527fc3a24b0501bd2c13a7e57f2db4369ec4c223447539fc0724a9d55ac4a06ebd4d8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff90921691909117905550608060405190810160409081526003808352670429d069189e0000602080850191909152660aa87bee538000928401929092526101756060840152600081905290527fcbc4e5fb02c3d1de23a9f1e014b4d2ee5aeaea9505df5e855c9210bf472495af8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff909216919091179055506080604051908101604090815260048083526702c68af0bb14000060208085019190915266071afd498d0000928401929092526101b56060840152600052600390527f83ec6a1f0257b830b5e016457c9cf1435391bf56cc98f369a58a54fe937724658151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600580835267016345785d8a000060208085019190915266038d7ea4c68000928401929092526101f16060840152600052600390527f405aad32e1adbac89bb7f176e338b8fc6e994ca210c9bb7bdca249b4659422508151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff90921691909117905550608060405190810160409081526006808352670429d069189e0000602080850191909152660aa87bee5380009284019290925261017c6060840152600052600390527fc69056f16cbaa3c616b828e333ab7d3a32310765507f8f58359e99ebb7a885f38151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff909216919091179055506080604051908101604090815260078083526702c68af0bb14000060208085019190915266071afd498d0000928401929092526101596060840152600052600390527ff2c49132ed1cee2a7e75bde50d332a2f81f1d01e5456d8a19d1df09bd561dbd28151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600880835267016345785d8a000060208085019190915266038d7ea4c68000928401929092526102066060840152600052600390527f85aaa47b6dc46495bb8824fad4583769726fea36efd831a35556690b830a8fbe8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600980835267016345785d8a000060208085019190915266038d7ea4c68000928401929092526101bf6060840152600052600390527f8a8dc4e5242ea8b1ab1d60606dae757e6c2cca9f92a2cced9f72c19960bcb4588151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600a8083526702c68af0bb14000060208085019190915266071afd498d00009284019290925261017c6060840152600052600390527f9dcb9783ba5cd0b54745f65f4f918525e461e91888c334e5342cb380ac558d538151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600b8083526702c68af0bb14000060208085019190915266071afd498d0000928401929092526101626060840152600052600390527f2d72af3c1b2b2956e6f694fb741556d5ca9524373974378cdbec16afa8b841648151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600c8083526702c68af0bb14000060208085019190915266071afd498d00009284019290925261015a6060840152600052600390527fd56a60595ebefebed7f22dcee6c2acc61b06cf8c68e84c88677840365d1ff92b8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600d8083526702c68af0bb14000060208085019190915266071afd498d00009284019290925261015f6060840152600052600390527fa8f2d96126c6d0ad63adabaef7bf5cf47f163fb0c218a473d28f62312d197bcf8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600e8083526702c68af0bb14000060208085019190915266071afd498d0000928401929092526101526060840152600052600390527fd6ebcc64c739277b117ce359e436534b234b76e914c80ad276abf5b5620789398151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600f8083526702c68af0bb14000060208085019190915266071afd498d0000928401929092526101556060840152600052600390527ff60b7f6a315ec68a6ac240e69dca53652b38627f709a2caa217d9e18af4d7a608151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff909216919091179055506080604051908101604090815260108083526704db732547630000602080850191909152660c6f3b40b6c000928401929092526101806060840152600052600390527f47d4745e02b343689a5e7ac121d2a352b7a15c10328a8759fd7d4cf0999002bb8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152601180835267016345785d8a000060208085019190915266038d7ea4c68000928401929092526101316060840152600052600390527ffc111d09a6e2f0958402cbe16a5aef32c9d8ddb9a4df7271140de57bfed6525a8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152601280835267016345785d8a000060208085019190915266038d7ea4c68000928401929092526101ab6060840152600052600390527f6a2b6bffaca788160f671fa62d34758b717f75a90ad5a468757c50d61f33c4438151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152601380835267016345785d8a000060208085019190915266038d7ea4c68000928401929092526101306060840152600052600390527f8a8166be5f30abeb6c91ee2f07eeb0b2eb14b4d59534d10a1c143964bd6179198151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152601480835267058d15e1762800006020808501919091526611c37937e080009284019290925260526060840152600052600390527f0ffe031ee7f67944a037276fd51f48fcc2fe05a729c43144606bc8777da8014f8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff909216919091179055506080604051908101604090815260158083526001602080850182905292840152607b6060840152600052600390527f94f2575c7592b1dfd5a8846a17482da7b0e38fb10c93880d74916c5f167924648151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff909216919091179055506080604051908101604090815260168083526702c68af0bb14000060208085019190915266038d7ea4c68000928401929092526101d46060840152600052600390527f370c8c7c6215b209793aa720f65163fbeecd5f5114008532ba0649ee234054028151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff909216919091179055506080604051908101604090815260178083526706f05b59d3b200006020808501919091526608e1bc9bf040009284019290925261012e6060840152600052600390527f0f0519a40093d7edad68f12e2ec868fdf92a03df1cbec3e035c987d6b218f2f48151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff90921691909117905550608060405190810160409081526018808352670de0b6b3a76400006020808501919091526611c37937e080009284019290925260c36060840152600052600390527fa3ddc4e8d053be09ec661eb04964a206cbd921c2c11fc03088857923bed1485a8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff90921691909117905550565b600061311f61489e565b600254600090819081908190819060ff161561313a57600080fd5b600a54600160a060020a0316965086639d29cac48b600060405160a0015260405163ffffffff83811660e060020a02825291909116600482015260240160a060405180830381600087803b151561319057600080fd5b6102c65a03f115156131a157600080fd5b5050506040518051906020018051906020018051906020018051906020018051151560808c01525063ffffffff90811660608b015260408a01919091526020890191909152168652855163ffffffff1615806131ff57508560800151155b1561320957600080fd5b60085487600160a060020a03166347c17bac3360006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561326357600080fd5b6102c65a03f1151561327457600080fd5b50505060405180519050111561328957600080fd5b6133043488600160a060020a031663c782fc603360006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156132e457600080fd5b6102c65a03f115156132f557600080fd5b505050604051805190506147eb565b9450856020015193506000866060015163ffffffff16111561334a5760075461ffff16600160608801510363ffffffff1687602001510281151561334457fe5b04840193505b8484111561335757600080fd5b6006805485019055600160a060020a03871663b55cdbf9336133798888614805565b60405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b15156133bc57600080fd5b6102c65a03f115156133cd57600080fd5b50505086600160a060020a031663fc4d20f58b338c8c60006040516020015260405163ffffffff86811660e060020a028252851660048201908152600160a060020a0385166024830152606060448301908152606483018490529091608401848480828437820191505095505050505050602060405180830381600087803b151561345757600080fd5b6102c65a03f1151561346857600080fd5b5050506040518051935060009250505b60068210156135f55786600160a060020a03166362b21ad760028c63ffffffff16856000604051602001526040518463ffffffff1660e060020a028152600401808460048111156134c557fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b151561350b57600080fd5b6102c65a03f1151561351c57600080fd5b5050506040518051600954909150613541906020908590600160a060020a031661144a565b01905086600160a060020a03166326bda739600385846000604051602001526040518463ffffffff1660e060020a0281526004018084600481111561358257fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b15156135ce57600080fd5b6102c65a03f115156135df57600080fd5b5050506040518051905050600182019150613478565b6009805473ffffffffffffffffffffffffffffffffffffffff191633600160a060020a03169081179091557f77cb179e9e5f39d98ac520c7c9fe2d085ac4e521f56806105fdeb1032885ee098460405167ffffffffffffffff909116815260200160405180910390a250505050505050505050565b60005433600160a060020a0390811691161461368557600080fd5b600160a060020a03811660009081526001602052604090205460ff16151561371157600160a060020a03811660009081526001602081905260408220805460ff191682179055815461ffff7401000000000000000000000000000000000000000080830482169093011690910275ffff0000000000000000000000000000000000000000199091161790555b50565b601881565b60055481565b60008082600181111561372e57fe5b1415613753575063ffffffff821660009081526004602052604090206001015461376e565b5063ffffffff82166000908152600460205260409020600201545b92915050565b60008061377f61489e565b600160a060020a03331660009081526001602081905260409091205460ff161515146137aa57600080fd5b63ffffffff8086166000818152600360205260409020805490955090911614156137d357600080fd5b600a54600160a060020a0316915081639d29cac486600060405160a0015260405163ffffffff83811660e060020a02825291909116600482015260240160a060405180830381600087803b151561382957600080fd5b6102c65a03f1151561383a57600080fd5b5050506040518051906020018051906020018051906020018051906020018051151560808701525063ffffffff908116606086015260408501919091526020840191909152168152600160a060020a03821663c8ff80a18251836020015184604001518860006040516020015260405163ffffffff86811660e060020a0282529490941660048501526024840192909252604483015215156064820152608401602060405180830381600087803b15156138f357600080fd5b6102c65a03f1151561390457600080fd5b505050604051805150505050505050565b600061391f614819565b60025460ff161561392f57600080fd5b600a54600160a060020a0316915081630720246086600060405160e0015260405160e060020a63ffffffff841602815267ffffffffffffffff909116600482015260240160e060405180830381600087803b151561398c57600080fd5b6102c65a03f1151561399d57600080fd5b505050604051805190602001805190602001805190602001805190602001805190602001805190602001805160e08901525063ffffffff90811660c088015290811660a08701529081166080860152600160a060020a03909116604085015216602083015267ffffffffffffffff90811682528516815167ffffffffffffffff16141580613a41575033600160a060020a03168160400151600160a060020a031614155b15613a4b57600080fd5b81600160a060020a03166332666a3186868685608001518660a001518760c0015160405163ffffffff88811660e060020a02825267ffffffffffffffff88166004830190815285821660448401528482166064840152908316608483015260a06024830190815260a48301879052909160c4018787808284378201915050975050505050505050600060405180830381600087803b1515613aeb57600080fd5b6102c65a03f11515613afc57600080fd5b5050505050505050565b600054600160a060020a031681565b6000806000806000613b2561489e565b600a54600160a060020a0316915081639d29cac488600060405160a0015260405163ffffffff83811660e060020a02825291909116600482015260240160a060405180830381600087803b1515613b7b57600080fd5b6102c65a03f11515613b8c57600080fd5b5050506040518051906020018051906020018051906020018051906020018051151560808701525063ffffffff908116606086015260408501919091526020840191825291909116825251816040015182606001518360800151929a91995063ffffffff1697509095509350505050565b60046020526000908152604090205463ffffffff811690640100000000900460ff1682565b60005433600160a060020a03908116911614613c3d57600080fd5b600160a060020a03811660009081526001602081905260409091205460ff161515141561371157600160a060020a03166000908152600160205260408120805460ff19169055805475ffff0000000000000000000000000000000000000000198116740100000000000000000000000000000000000000009182900461ffff9081166000190116909102179055565b600a54600090600160a060020a0316818080808080866347c17bac8a836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515613d2e57600080fd5b6102c65a03f11515613d3f57600080fd5b5050506040518051925060009150505b81811015613dfe5786600160a060020a03166375fe2e338a8360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515613db457600080fd5b6102c65a03f11515613dc557600080fd5b5050506040518051935050600067ffffffffffffffff84161115613df657613dec836114a4565b9681019690955093505b600101613d4f565b5093979650505050505050565b600160a060020a033316600090815260016020819052604082205460ff16151514613e3557600080fd5b50600a54600160a060020a031663ffffffff8a161580613ef15750600081600160a060020a03166341b0eb5360018d63ffffffff166000604051602001526040518363ffffffff1660e060020a02815260040180836004811115613e9557fe5b60ff1681526020018267ffffffffffffffff1667ffffffffffffffff16815260200192505050602060405180830381600087803b1515613ed457600080fd5b6102c65a03f11515613ee557600080fd5b50505060405180519050115b15613efb57600080fd5b60008960ff161115613fb35780600160a060020a03166326bda73960008c63ffffffff168c6000604051602001526040518463ffffffff1660e060020a02815260040180846004811115613f4b57fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b1515613f9757600080fd5b6102c65a03f11515613fa857600080fd5b505050604051805150505b60008860ff16111561406b5780600160a060020a03166326bda73960008c63ffffffff168b6000604051602001526040518463ffffffff1660e060020a0281526004018084600481111561400357fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b151561404f57600080fd5b6102c65a03f1151561406057600080fd5b505050604051805150505b80600160a060020a03166326bda73960018c63ffffffff168a6000604051602001526040518463ffffffff1660e060020a028152600401808460048111156140af57fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b15156140fb57600080fd5b6102c65a03f1151561410c57600080fd5b50505060405180515050600160a060020a0381166326bda739600163ffffffff8d16896000604051602001526040518463ffffffff1660e060020a0281526004018084600481111561415a57fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b15156141a657600080fd5b6102c65a03f115156141b757600080fd5b50505060405180515050600160a060020a0381166326bda739600163ffffffff8d16886000604051602001526040518463ffffffff1660e060020a0281526004018084600481111561420557fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b151561425157600080fd5b6102c65a03f1151561426257600080fd5b50505060405180515050600160a060020a0381166326bda739600163ffffffff8d16876000604051602001526040518463ffffffff1660e060020a028152600401808460048111156142b057fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b15156142fc57600080fd5b6102c65a03f1151561430d57600080fd5b50505060405180515050600160a060020a0381166326bda739600163ffffffff8d16866000604051602001526040518463ffffffff1660e060020a0281526004018084600481111561435b57fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b15156143a757600080fd5b6102c65a03f115156143b857600080fd5b50505060405180515050600160a060020a0381166326bda739600163ffffffff8d16856000604051602001526040518463ffffffff1660e060020a0281526004018084600481111561440657fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b151561445257600080fd5b6102c65a03f1151561446357600080fd5b5050506040518051505050505050505050505050565b600a54600160a060020a03168063522f681530823160006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156144da57600080fd5b6102c65a03f115156144eb57600080fd5b5050506040518051505050565b600681565b60065481565b60075461ffff1681565b738a60806f05876f4d6db00c877b0558dbcad3068281565b600160a060020a033316600090815260016020819052604082205460ff1615151461454f57600080fd5b5063ffffffff909116600090815260046020526040902080549115156401000000000264ff0000000019909216919091179055565b63ffffffff80821660009081526003602081905260409091208054600182015492820154908416931690509193909250565b60025460ff1681565b60005433600160a060020a039081169116146145da57600080fd5b600160a060020a038116156137115760008054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff1990911617905550565b600a54600090600160a060020a031681808263c782fc6086836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561467457600080fd5b6102c65a03f1151561468557600080fd5b50505060405180519050915061469a85613ccc565b91909101949350505050565b6000806146b1614819565b600a54600160a060020a031691506000826307202460868360405160e0015260405160e060020a63ffffffff841602815267ffffffffffffffff909116600482015260240160e060405180830381600087803b151561470f57600080fd5b6102c65a03f1151561472057600080fd5b505050604051805190602001805190602001805190602001805190602001805190602001805190602001805160e08a01525063ffffffff90811660c089015290811660a08801529081166080870152600160a060020a039091166040860152166020840190815267ffffffffffffffff90911683526004906000905163ffffffff168152602081019190915260400160002054640100000000900460ff1695945050505050565b60008282028315806147e357508284828115156147e057fe5b04145b15156119db57fe5b60008282018381108015906147e35750828110156119db57fe5b6000808284101561481257fe5b5050900390565b610100604051908101604090815260008083526020830181905290820152606081016148436148cc565b8152600060208201819052604082018190526060820181905260809091015290565b81548183558181151161489957600701600890048160070160089004836000526020600020918201910161489991906148de565b505050565b60a0604051908101604090815260008083526020830181905290820181905260608201819052608082015290565b60206040519081016040526000815290565b6148fc91905b808211156148f857600081556001016148e4565b5090565b905600a165627a7a72305820de2c7d2b7c4c2667b06cd2cb9244d23d79668bf26275594b81a2a7437b49f2410029000000000000000000000000abc1c404424bdf24c19a5cc5ef8f47781d18eb3e
Deployed Bytecode
0x6060604052600436106102155763ffffffff60e060020a600035041662119f34811461024057806305660ce81461029d57806308c977e7146102c65780630d668818146102dc5780630daf41511461030b57806314d0f1ba146103585780631649b76d1461038b5780631756ffd9146103b05780631bea4a611461040057806331afa55f1461044e5780633a34f09a14610477578063464299f9146104b857806348ef5aa8146104f05780634e3dc2f1146105085780634efb023e1461051b578063522f6815146105455780635643a7111461058b57806357918052146105b457806359187cec146105ce5780635b626339146105e15780635c7b79f51461061f57806366ba267014610635578063681551d1146106485780636c81fd6d1461066557806373d65c001461068457806386048c9a1461069757806388e9abb6146106aa5780638b886d04146106cc5780638d1d22d8146106ed5780638da5cb5b1461071957806394f6ba1c1461072c5780639a21492c14610774578063b85d6275146107b1578063bc62c89a146107d0578063bf5f4edf146107ef578063d7b84f681461083c578063d98e14bd1461084f578063dffd722f14610862578063e19bb96414610875578063e7e7e3e814610888578063e92704e81461089b578063ecff537f146108bc578063ee4e441614610906578063f285329214610919578063f445037b14610938578063fd08374814610957575b33600160a060020a0316738a60806f05876f4d6db00c877b0558dbcad306821461023e57600080fd5b005b341561024b57600080fd5b61026067ffffffffffffffff60043516610977565b60405163ffffffff95861681529390941660208401529015156040808401919091526060830191909152608082019290925260a001905180910390f35b34156102a857600080fd5b61023e63ffffffff60043581169060ff602435169060443516610ac4565b34156102d157600080fd5b61023e600435610bcc565b34156102e757600080fd5b6102ef610bfc565b604051600160a060020a03909116815260200160405180910390f35b341561031657600080fd5b61032763ffffffff60043516610c0b565b60405163ffffffff948516815260208101939093526040808401929092529092166060820152608001905180910390f35b341561036357600080fd5b610377600160a060020a0360043516610c3c565b604051901515815260200160405180910390f35b341561039657600080fd5b61039e610c51565b60405190815260200160405180910390f35b34156103bb57600080fd5b61023e63ffffffff6004351660ff602435811690604435906064359060843581169060a43581169060c43581169060e435811690610104358116906101243516610c57565b341561040b57600080fd5b61042067ffffffffffffffff6004351661129f565b60405163ffffffff938416815291831660208301529091166040808301919091526060909101905180910390f35b341561045957600080fd5b61023e67ffffffffffffffff6004351663ffffffff602435166113aa565b341561048257600080fd5b6104a260ff60043581169060243516600160a060020a036044351661144a565b60405160ff909116815260200160405180910390f35b34156104c357600080fd5b6104d867ffffffffffffffff600435166114a4565b60405191825260208201526040908101905180910390f35b34156104fb57600080fd5b61023e6004351515611579565b341561051357600080fd5b6104a26115a7565b341561052657600080fd5b61052e6115ac565b60405161ffff909116815260200160405180910390f35b341561055057600080fd5b610567600160a060020a03600435166024356115ce565b6040518082600681111561057757fe5b60ff16815260200191505060405180910390f35b341561059657600080fd5b61023e67ffffffffffffffff6004351663ffffffff6024351661175e565b34156105bf57600080fd5b61023e61ffff600435166117e5565b34156105d957600080fd5b61039e611828565b34156105ec57600080fd5b61060663ffffffff6004351660ff60243516604435611951565b60405163ffffffff909116815260200160405180910390f35b341561062a57600080fd5b6105676004356119e2565b341561064057600080fd5b61023e612066565b61023e6004803563ffffffff169060248035908101910135613115565b341561067057600080fd5b61023e600160a060020a036004351661366a565b341561068f57600080fd5b6104a2613714565b34156106a257600080fd5b61039e613719565b34156106b557600080fd5b61039e63ffffffff6004351660ff6024351661371f565b34156106d757600080fd5b61023e63ffffffff600435166024351515613774565b34156106f857600080fd5b61023e6004803567ffffffffffffffff169060248035908101910135613915565b341561072457600080fd5b6102ef613b06565b341561073757600080fd5b61074863ffffffff60043516613b15565b604051938452602084019290925260408084019190915290151560608301526080909101905180910390f35b341561077f57600080fd5b61079063ffffffff60043516613bfd565b60405163ffffffff9092168252151560208201526040908101905180910390f35b34156107bc57600080fd5b61023e600160a060020a0360043516613c22565b34156107db57600080fd5b61039e600160a060020a0360043516613ccc565b34156107fa57600080fd5b61023e63ffffffff6004351660ff60243581169060443581169060643581169060843581169060a43581169060c43581169060e4358116906101043516613e0b565b341561084757600080fd5b61023e614479565b341561085a57600080fd5b6104a26144f8565b341561086d57600080fd5b61039e6144fd565b341561088057600080fd5b61052e614503565b341561089357600080fd5b6102ef61450d565b34156108a657600080fd5b61023e63ffffffff600435166024351515614525565b34156108c757600080fd5b6108d863ffffffff60043516614584565b60405163ffffffff938416815260208101929092529091166040808301919091526060909101905180910390f35b341561091157600080fd5b6103776145b6565b341561092457600080fd5b61023e600160a060020a03600435166145bf565b341561094357600080fd5b61039e600160a060020a0360043516614616565b341561096257600080fd5b61037767ffffffffffffffff600435166146a6565b600080600080600080610988614819565b600a54600160a060020a0316915060008263072024608a8360405160e0015260405160e060020a63ffffffff841602815267ffffffffffffffff909116600482015260240160e060405180830381600087803b15156109e657600080fd5b6102c65a03f115156109f757600080fd5b505050604051805190602001805190602001805190602001805190602001805190602001805190602001805160e08a01525063ffffffff90811660c089015290811660a08801529081166080870152600160a060020a039091166040860152166020840190815267ffffffffffffffff90911683526004906000905163ffffffff1663ffffffff16815260200190815260200160002090508160200151826080015182546001840154600290940154929c919b50640100000000900460ff16995091975095509350505050565b600160a060020a033316600090815260016020819052604082205460ff16151514610aee57600080fd5b5063ffffffff83166000818152600460205260408120805463ffffffff19169092178255836001811115610b1e57fe5b1415610b7857806001018054806001018281610b3a9190614865565b916000526020600020906008918282040191900660040284909190916101000a81548163ffffffff021916908363ffffffff16021790555050610bc6565b60028101805460018101610b8c8382614865565b916000526020600020906008918282040191900660040284909190916101000a81548163ffffffff021916908363ffffffff160217905550505b50505050565b600160a060020a03331660009081526001602081905260409091205460ff16151514610bf757600080fd5b600855565b600a54600160a060020a031681565b6003602081905260009182526040909120805460018201546002830154929093015463ffffffff9182169392911684565b60016020526000908152604090205460ff1681565b60085481565b6000610c6161489e565b600160a060020a03331660009081526001602081905260409091205460ff16151514610c8c57600080fd5b600a54600160a060020a0316915081639d29cac48d600060405160a0015260405163ffffffff83811660e060020a02825291909116600482015260240160a060405180830381600087803b1515610ce257600080fd5b6102c65a03f11515610cf357600080fd5b5050506040518051906020018051906020018051906020018051906020018051151560808701525063ffffffff90811660608601526040850191909152602084019190915290811682528c161580610d57575063ffffffff8c16815163ffffffff16145b15610d6157600080fd5b81600160a060020a031663c8ff80a18d8c8c600160006040516020015260405163ffffffff86811660e060020a0282529490941660048501526024840192909252604483015215156064820152608401602060405180830381600087803b1515610dca57600080fd5b6102c65a03f11515610ddb57600080fd5b50505060405180515050600160a060020a0382166326bda739600063ffffffff8f168e82604051602001526040518463ffffffff1660e060020a02815260040180846004811115610e2857fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b1515610e7457600080fd5b6102c65a03f11515610e8557600080fd5b50505060405180515050600160a060020a0382166326bda739600263ffffffff8f168b6000604051602001526040518463ffffffff1660e060020a02815260040180846004811115610ed357fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b1515610f1f57600080fd5b6102c65a03f11515610f3057600080fd5b50505060405180515050600160a060020a0382166326bda739600263ffffffff8f168a6000604051602001526040518463ffffffff1660e060020a02815260040180846004811115610f7e57fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b1515610fca57600080fd5b6102c65a03f11515610fdb57600080fd5b50505060405180515050600160a060020a0382166326bda739600263ffffffff8f16896000604051602001526040518463ffffffff1660e060020a0281526004018084600481111561102957fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b151561107557600080fd5b6102c65a03f1151561108657600080fd5b50505060405180515050600160a060020a0382166326bda739600263ffffffff8f16886000604051602001526040518463ffffffff1660e060020a028152600401808460048111156110d457fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b151561112057600080fd5b6102c65a03f1151561113157600080fd5b50505060405180515050600160a060020a0382166326bda739600263ffffffff8f16876000604051602001526040518463ffffffff1660e060020a0281526004018084600481111561117f57fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b15156111cb57600080fd5b6102c65a03f115156111dc57600080fd5b50505060405180515050600160a060020a0382166326bda739600263ffffffff8f16866000604051602001526040518463ffffffff1660e060020a0281526004018084600481111561122a57fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b151561127657600080fd5b6102c65a03f1151561128757600080fd5b50505060405180515050505050505050505050505050565b6000806000806112ad614819565b600a54600160a060020a0316915081630720246087600060405160e0015260405160e060020a63ffffffff841602815267ffffffffffffffff909116600482015260240160e060405180830381600087803b151561130a57600080fd5b6102c65a03f1151561131b57600080fd5b505050604051805190602001805190602001805190602001805190602001805190602001805190602001805160e08901525063ffffffff90811660c088015290811660a08701529081166080860152600160a060020a039091166040850152166020830190815267ffffffffffffffff9091168252518160a001518260c0015194509450945050509193909250565b600160a060020a033316600090815260016020819052604082205460ff161515146113d457600080fd5b50600a54600160a060020a0316806331afa55f848460405163ffffffff84811660e060020a02825267ffffffffffffffff93909316600482015291166024820152604401600060405180830381600087803b151561143157600080fd5b6102c65a03f1151561144257600080fd5b505050505050565b6000600019430140600160a060020a03831601815b8460ff168160ff16108015611477575060068160ff16105b1561148b576101008204915060010161145f565b8560ff168281151561149957fe5b069695505050505050565b6000808080808080806114b68961129f565b63ffffffff80841660008181526003602052604090208054959b509399509197509195509116146114ed576000975087965061156e565b50506003810154600090819063ffffffff908116908516101561151b57600383015463ffffffff1684900391505b600383015463ffffffff90811690861610156115415750600382015463ffffffff168490035b6115558263ffffffff1684600201546147c7565b6115698263ffffffff1685600201546147c7565b975097505b505050505050915091565b60005433600160a060020a0390811691161461159457600080fd5b6002805460ff1916911515919091179055565b602081565b60005474010000000000000000000000000000000000000000900461ffff1681565b600160a060020a0333166000908152600160208190526040822054829160ff9091161515146115fc57600080fd5b30600160a060020a0316318311156116705783600160a060020a03167fdd015856503ad75c75662bfdfd4366944a55a7bafb8e8cacaa950659ce2b680f600660006040518083600681111561164d57fe5b60ff1681526020018281526020019250505060405180910390a260069150611757565b611678611828565b9050808311156116c15783600160a060020a03167fdd015856503ad75c75662bfdfd4366944a55a7bafb8e8cacaa950659ce2b680f600660006040518083600681111561164d57fe5b600160a060020a03841683156108fc0284604051600060405180830381858888f1935050505015156116f257600080fd5b6005805484019055600160a060020a0384167fdd015856503ad75c75662bfdfd4366944a55a7bafb8e8cacaa950659ce2b680f6000856040518083600681111561173857fe5b60ff1681526020018281526020019250505060405180910390a2600091505b5092915050565b600160a060020a033316600090815260016020819052604082205460ff1615151461178857600080fd5b50600a54600160a060020a031680635643a711848460405163ffffffff84811660e060020a02825267ffffffffffffffff93909316600482015291166024820152604401600060405180830381600087803b151561143157600080fd5b600160a060020a03331660009081526001602081905260409091205460ff1615151461181057600080fd5b6007805461ffff191661ffff92909216919091179055565b600080600181805b601863ffffffff84161161192e5763ffffffff80841660009081526003602081905260408220908101549094509091161180156118765750815463ffffffff8481169116145b8015611886575060008260010154115b8015611896575060008260020154115b1561192357816002015482600101548115156118ae57fe5b6003840154919004915063ffffffff168110156118f85760028281015460018401540182026002840154600385015463ffffffff1684900302919004949094019390930192611923565b600382015460028084015460018086015463ffffffff90941693848603909101909102010402840193505b600190920191611830565b61193a846006546147eb565b935061194884600554614805565b95945050505050565b60008083600181111561196057fe5b14156119b75763ffffffff8416600090815260046020526040902060010180548390811061198a57fe5b90600052602060002090600891828204019190066004029054906101000a900463ffffffff1690506119db565b63ffffffff8416600090815260046020526040902060020180548390811061198a57fe5b9392505050565b6000806000806000806119f3614819565b600a54600160a060020a031695506000808763c782fc6033836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515611a5157600080fd5b6102c65a03f11515611a6257600080fd5b505050604051805197506000965050600160a060020a0388166347c17bac33886040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515611ac757600080fd5b6102c65a03f11515611ad857600080fd5b5050506040518051955060009450505b84841015611dcb5787600160a060020a03166375fe2e33338660006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515611b4d57600080fd5b6102c65a03f11515611b5e57600080fd5b5050506040518051965050600067ffffffffffffffff87161115611dc05787600160a060020a0316630720246087600060405160e0015260405160e060020a63ffffffff841602815267ffffffffffffffff909116600482015260240160e060405180830381600087803b1515611bd457600080fd5b6102c65a03f11515611be557600080fd5b505050604051805190602001805190602001805190602001805190602001805190602001805190602001805160e08b01525063ffffffff90811660c08a015290811660a08901529081166080880152600160a060020a039091166040870152166020850190815267ffffffffffffffff90911684526003906000905163ffffffff1663ffffffff16815260200190815260200160002091508260200151825463ffffffff90811691161415611dc057600382015463ffffffff1660c084015163ffffffff161015611dc0576003820154611ccf9063ffffffff1660c085015163ffffffff16614805565b905060008163ffffffff161115611dc057611cf48163ffffffff1683600201546147c7565b90960195600160a060020a0388166332666a31845185608001518660a00151600387015463ffffffff1660405163ffffffff86811660e060020a02825267ffffffffffffffff95909516600482015292841660448401529083166064830152909116608482015260a06024820152600960a48201527f206e616d65206d6520000000000000000000000000000000000000000000000060c482015260e401600060405180830381600087803b1515611dab57600080fd5b6102c65a03f11515611dbc57600080fd5b5050505b600190930192611ae8565b891515611dd6578699505b868a1115611de357600080fd5b8988600160a060020a03163130600160a060020a031631011015611e0657600080fd5b8930600160a060020a0316311015611e9257600160a060020a03881663522f681530823160006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515611e7657600080fd5b6102c65a03f11515611e8757600080fd5b505050604051805150505b60008a1115611ffc5787600160a060020a031663b55cdbf9338c8a0360405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b1515611ef157600080fd5b6102c65a03f11515611f0257600080fd5b5050600160a060020a03331690508a156108fc028b604051600060405180830381858888f193505050501515611ffc5787600160a060020a031663b55cdbf9338960405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b1515611f8657600080fd5b6102c65a03f11515611f9757600080fd5b50505033600160a060020a03167fde2ec039772c8252fbdc620a480847194009c38dfbd74c4ae947e3df493a304f6003600060405180836006811115611fd957fe5b60ff1681526020018281526020019250505060405180910390a260039850612059565b33600160a060020a03167fde2ec039772c8252fbdc620a480847194009c38dfbd74c4ae947e3df493a304f60008c6040518083600681111561203a57fe5b60ff1681526020018281526020019250505060405180910390a2600098505b5050505050505050919050565b600160a060020a03331660009081526001602081905260409091205460ff1615151461209157600080fd5b608060405190810160409081526001808352670429d069189e0000602080850191909152660aa87bee538000928401929092526101766060840152600052600390527fa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff90921691909117905550608060405190810160409081526002808352670429d069189e0000602080850191909152660aa87bee538000928401929092526101986060840152600052600390527fc3a24b0501bd2c13a7e57f2db4369ec4c223447539fc0724a9d55ac4a06ebd4d8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff90921691909117905550608060405190810160409081526003808352670429d069189e0000602080850191909152660aa87bee538000928401929092526101756060840152600081905290527fcbc4e5fb02c3d1de23a9f1e014b4d2ee5aeaea9505df5e855c9210bf472495af8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff909216919091179055506080604051908101604090815260048083526702c68af0bb14000060208085019190915266071afd498d0000928401929092526101b56060840152600052600390527f83ec6a1f0257b830b5e016457c9cf1435391bf56cc98f369a58a54fe937724658151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600580835267016345785d8a000060208085019190915266038d7ea4c68000928401929092526101f16060840152600052600390527f405aad32e1adbac89bb7f176e338b8fc6e994ca210c9bb7bdca249b4659422508151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff90921691909117905550608060405190810160409081526006808352670429d069189e0000602080850191909152660aa87bee5380009284019290925261017c6060840152600052600390527fc69056f16cbaa3c616b828e333ab7d3a32310765507f8f58359e99ebb7a885f38151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff909216919091179055506080604051908101604090815260078083526702c68af0bb14000060208085019190915266071afd498d0000928401929092526101596060840152600052600390527ff2c49132ed1cee2a7e75bde50d332a2f81f1d01e5456d8a19d1df09bd561dbd28151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600880835267016345785d8a000060208085019190915266038d7ea4c68000928401929092526102066060840152600052600390527f85aaa47b6dc46495bb8824fad4583769726fea36efd831a35556690b830a8fbe8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600980835267016345785d8a000060208085019190915266038d7ea4c68000928401929092526101bf6060840152600052600390527f8a8dc4e5242ea8b1ab1d60606dae757e6c2cca9f92a2cced9f72c19960bcb4588151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600a8083526702c68af0bb14000060208085019190915266071afd498d00009284019290925261017c6060840152600052600390527f9dcb9783ba5cd0b54745f65f4f918525e461e91888c334e5342cb380ac558d538151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600b8083526702c68af0bb14000060208085019190915266071afd498d0000928401929092526101626060840152600052600390527f2d72af3c1b2b2956e6f694fb741556d5ca9524373974378cdbec16afa8b841648151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600c8083526702c68af0bb14000060208085019190915266071afd498d00009284019290925261015a6060840152600052600390527fd56a60595ebefebed7f22dcee6c2acc61b06cf8c68e84c88677840365d1ff92b8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600d8083526702c68af0bb14000060208085019190915266071afd498d00009284019290925261015f6060840152600052600390527fa8f2d96126c6d0ad63adabaef7bf5cf47f163fb0c218a473d28f62312d197bcf8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600e8083526702c68af0bb14000060208085019190915266071afd498d0000928401929092526101526060840152600052600390527fd6ebcc64c739277b117ce359e436534b234b76e914c80ad276abf5b5620789398151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600f8083526702c68af0bb14000060208085019190915266071afd498d0000928401929092526101556060840152600052600390527ff60b7f6a315ec68a6ac240e69dca53652b38627f709a2caa217d9e18af4d7a608151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff909216919091179055506080604051908101604090815260108083526704db732547630000602080850191909152660c6f3b40b6c000928401929092526101806060840152600052600390527f47d4745e02b343689a5e7ac121d2a352b7a15c10328a8759fd7d4cf0999002bb8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152601180835267016345785d8a000060208085019190915266038d7ea4c68000928401929092526101316060840152600052600390527ffc111d09a6e2f0958402cbe16a5aef32c9d8ddb9a4df7271140de57bfed6525a8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152601280835267016345785d8a000060208085019190915266038d7ea4c68000928401929092526101ab6060840152600052600390527f6a2b6bffaca788160f671fa62d34758b717f75a90ad5a468757c50d61f33c4438151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152601380835267016345785d8a000060208085019190915266038d7ea4c68000928401929092526101306060840152600052600390527f8a8166be5f30abeb6c91ee2f07eeb0b2eb14b4d59534d10a1c143964bd6179198151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152601480835267058d15e1762800006020808501919091526611c37937e080009284019290925260526060840152600052600390527f0ffe031ee7f67944a037276fd51f48fcc2fe05a729c43144606bc8777da8014f8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff909216919091179055506080604051908101604090815260158083526001602080850182905292840152607b6060840152600052600390527f94f2575c7592b1dfd5a8846a17482da7b0e38fb10c93880d74916c5f167924648151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff909216919091179055506080604051908101604090815260168083526702c68af0bb14000060208085019190915266038d7ea4c68000928401929092526101d46060840152600052600390527f370c8c7c6215b209793aa720f65163fbeecd5f5114008532ba0649ee234054028151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff909216919091179055506080604051908101604090815260178083526706f05b59d3b200006020808501919091526608e1bc9bf040009284019290925261012e6060840152600052600390527f0f0519a40093d7edad68f12e2ec868fdf92a03df1cbec3e035c987d6b218f2f48151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff90921691909117905550608060405190810160409081526018808352670de0b6b3a76400006020808501919091526611c37937e080009284019290925260c36060840152600052600390527fa3ddc4e8d053be09ec661eb04964a206cbd921c2c11fc03088857923bed1485a8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff90921691909117905550565b600061311f61489e565b600254600090819081908190819060ff161561313a57600080fd5b600a54600160a060020a0316965086639d29cac48b600060405160a0015260405163ffffffff83811660e060020a02825291909116600482015260240160a060405180830381600087803b151561319057600080fd5b6102c65a03f115156131a157600080fd5b5050506040518051906020018051906020018051906020018051906020018051151560808c01525063ffffffff90811660608b015260408a01919091526020890191909152168652855163ffffffff1615806131ff57508560800151155b1561320957600080fd5b60085487600160a060020a03166347c17bac3360006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561326357600080fd5b6102c65a03f1151561327457600080fd5b50505060405180519050111561328957600080fd5b6133043488600160a060020a031663c782fc603360006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156132e457600080fd5b6102c65a03f115156132f557600080fd5b505050604051805190506147eb565b9450856020015193506000866060015163ffffffff16111561334a5760075461ffff16600160608801510363ffffffff1687602001510281151561334457fe5b04840193505b8484111561335757600080fd5b6006805485019055600160a060020a03871663b55cdbf9336133798888614805565b60405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b15156133bc57600080fd5b6102c65a03f115156133cd57600080fd5b50505086600160a060020a031663fc4d20f58b338c8c60006040516020015260405163ffffffff86811660e060020a028252851660048201908152600160a060020a0385166024830152606060448301908152606483018490529091608401848480828437820191505095505050505050602060405180830381600087803b151561345757600080fd5b6102c65a03f1151561346857600080fd5b5050506040518051935060009250505b60068210156135f55786600160a060020a03166362b21ad760028c63ffffffff16856000604051602001526040518463ffffffff1660e060020a028152600401808460048111156134c557fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b151561350b57600080fd5b6102c65a03f1151561351c57600080fd5b5050506040518051600954909150613541906020908590600160a060020a031661144a565b01905086600160a060020a03166326bda739600385846000604051602001526040518463ffffffff1660e060020a0281526004018084600481111561358257fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b15156135ce57600080fd5b6102c65a03f115156135df57600080fd5b5050506040518051905050600182019150613478565b6009805473ffffffffffffffffffffffffffffffffffffffff191633600160a060020a03169081179091557f77cb179e9e5f39d98ac520c7c9fe2d085ac4e521f56806105fdeb1032885ee098460405167ffffffffffffffff909116815260200160405180910390a250505050505050505050565b60005433600160a060020a0390811691161461368557600080fd5b600160a060020a03811660009081526001602052604090205460ff16151561371157600160a060020a03811660009081526001602081905260408220805460ff191682179055815461ffff7401000000000000000000000000000000000000000080830482169093011690910275ffff0000000000000000000000000000000000000000199091161790555b50565b601881565b60055481565b60008082600181111561372e57fe5b1415613753575063ffffffff821660009081526004602052604090206001015461376e565b5063ffffffff82166000908152600460205260409020600201545b92915050565b60008061377f61489e565b600160a060020a03331660009081526001602081905260409091205460ff161515146137aa57600080fd5b63ffffffff8086166000818152600360205260409020805490955090911614156137d357600080fd5b600a54600160a060020a0316915081639d29cac486600060405160a0015260405163ffffffff83811660e060020a02825291909116600482015260240160a060405180830381600087803b151561382957600080fd5b6102c65a03f1151561383a57600080fd5b5050506040518051906020018051906020018051906020018051906020018051151560808701525063ffffffff908116606086015260408501919091526020840191909152168152600160a060020a03821663c8ff80a18251836020015184604001518860006040516020015260405163ffffffff86811660e060020a0282529490941660048501526024840192909252604483015215156064820152608401602060405180830381600087803b15156138f357600080fd5b6102c65a03f1151561390457600080fd5b505050604051805150505050505050565b600061391f614819565b60025460ff161561392f57600080fd5b600a54600160a060020a0316915081630720246086600060405160e0015260405160e060020a63ffffffff841602815267ffffffffffffffff909116600482015260240160e060405180830381600087803b151561398c57600080fd5b6102c65a03f1151561399d57600080fd5b505050604051805190602001805190602001805190602001805190602001805190602001805190602001805160e08901525063ffffffff90811660c088015290811660a08701529081166080860152600160a060020a03909116604085015216602083015267ffffffffffffffff90811682528516815167ffffffffffffffff16141580613a41575033600160a060020a03168160400151600160a060020a031614155b15613a4b57600080fd5b81600160a060020a03166332666a3186868685608001518660a001518760c0015160405163ffffffff88811660e060020a02825267ffffffffffffffff88166004830190815285821660448401528482166064840152908316608483015260a06024830190815260a48301879052909160c4018787808284378201915050975050505050505050600060405180830381600087803b1515613aeb57600080fd5b6102c65a03f11515613afc57600080fd5b5050505050505050565b600054600160a060020a031681565b6000806000806000613b2561489e565b600a54600160a060020a0316915081639d29cac488600060405160a0015260405163ffffffff83811660e060020a02825291909116600482015260240160a060405180830381600087803b1515613b7b57600080fd5b6102c65a03f11515613b8c57600080fd5b5050506040518051906020018051906020018051906020018051906020018051151560808701525063ffffffff908116606086015260408501919091526020840191825291909116825251816040015182606001518360800151929a91995063ffffffff1697509095509350505050565b60046020526000908152604090205463ffffffff811690640100000000900460ff1682565b60005433600160a060020a03908116911614613c3d57600080fd5b600160a060020a03811660009081526001602081905260409091205460ff161515141561371157600160a060020a03166000908152600160205260408120805460ff19169055805475ffff0000000000000000000000000000000000000000198116740100000000000000000000000000000000000000009182900461ffff9081166000190116909102179055565b600a54600090600160a060020a0316818080808080866347c17bac8a836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515613d2e57600080fd5b6102c65a03f11515613d3f57600080fd5b5050506040518051925060009150505b81811015613dfe5786600160a060020a03166375fe2e338a8360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515613db457600080fd5b6102c65a03f11515613dc557600080fd5b5050506040518051935050600067ffffffffffffffff84161115613df657613dec836114a4565b9681019690955093505b600101613d4f565b5093979650505050505050565b600160a060020a033316600090815260016020819052604082205460ff16151514613e3557600080fd5b50600a54600160a060020a031663ffffffff8a161580613ef15750600081600160a060020a03166341b0eb5360018d63ffffffff166000604051602001526040518363ffffffff1660e060020a02815260040180836004811115613e9557fe5b60ff1681526020018267ffffffffffffffff1667ffffffffffffffff16815260200192505050602060405180830381600087803b1515613ed457600080fd5b6102c65a03f11515613ee557600080fd5b50505060405180519050115b15613efb57600080fd5b60008960ff161115613fb35780600160a060020a03166326bda73960008c63ffffffff168c6000604051602001526040518463ffffffff1660e060020a02815260040180846004811115613f4b57fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b1515613f9757600080fd5b6102c65a03f11515613fa857600080fd5b505050604051805150505b60008860ff16111561406b5780600160a060020a03166326bda73960008c63ffffffff168b6000604051602001526040518463ffffffff1660e060020a0281526004018084600481111561400357fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b151561404f57600080fd5b6102c65a03f1151561406057600080fd5b505050604051805150505b80600160a060020a03166326bda73960018c63ffffffff168a6000604051602001526040518463ffffffff1660e060020a028152600401808460048111156140af57fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b15156140fb57600080fd5b6102c65a03f1151561410c57600080fd5b50505060405180515050600160a060020a0381166326bda739600163ffffffff8d16896000604051602001526040518463ffffffff1660e060020a0281526004018084600481111561415a57fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b15156141a657600080fd5b6102c65a03f115156141b757600080fd5b50505060405180515050600160a060020a0381166326bda739600163ffffffff8d16886000604051602001526040518463ffffffff1660e060020a0281526004018084600481111561420557fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b151561425157600080fd5b6102c65a03f1151561426257600080fd5b50505060405180515050600160a060020a0381166326bda739600163ffffffff8d16876000604051602001526040518463ffffffff1660e060020a028152600401808460048111156142b057fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b15156142fc57600080fd5b6102c65a03f1151561430d57600080fd5b50505060405180515050600160a060020a0381166326bda739600163ffffffff8d16866000604051602001526040518463ffffffff1660e060020a0281526004018084600481111561435b57fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b15156143a757600080fd5b6102c65a03f115156143b857600080fd5b50505060405180515050600160a060020a0381166326bda739600163ffffffff8d16856000604051602001526040518463ffffffff1660e060020a0281526004018084600481111561440657fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b151561445257600080fd5b6102c65a03f1151561446357600080fd5b5050506040518051505050505050505050505050565b600a54600160a060020a03168063522f681530823160006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156144da57600080fd5b6102c65a03f115156144eb57600080fd5b5050506040518051505050565b600681565b60065481565b60075461ffff1681565b738a60806f05876f4d6db00c877b0558dbcad3068281565b600160a060020a033316600090815260016020819052604082205460ff1615151461454f57600080fd5b5063ffffffff909116600090815260046020526040902080549115156401000000000264ff0000000019909216919091179055565b63ffffffff80821660009081526003602081905260409091208054600182015492820154908416931690509193909250565b60025460ff1681565b60005433600160a060020a039081169116146145da57600080fd5b600160a060020a038116156137115760008054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff1990911617905550565b600a54600090600160a060020a031681808263c782fc6086836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561467457600080fd5b6102c65a03f1151561468557600080fd5b50505060405180519050915061469a85613ccc565b91909101949350505050565b6000806146b1614819565b600a54600160a060020a031691506000826307202460868360405160e0015260405160e060020a63ffffffff841602815267ffffffffffffffff909116600482015260240160e060405180830381600087803b151561470f57600080fd5b6102c65a03f1151561472057600080fd5b505050604051805190602001805190602001805190602001805190602001805190602001805190602001805160e08a01525063ffffffff90811660c089015290811660a08801529081166080870152600160a060020a039091166040860152166020840190815267ffffffffffffffff90911683526004906000905163ffffffff168152602081019190915260400160002054640100000000900460ff1695945050505050565b60008282028315806147e357508284828115156147e057fe5b04145b15156119db57fe5b60008282018381108015906147e35750828110156119db57fe5b6000808284101561481257fe5b5050900390565b610100604051908101604090815260008083526020830181905290820152606081016148436148cc565b8152600060208201819052604082018190526060820181905260809091015290565b81548183558181151161489957600701600890048160070160089004836000526020600020918201910161489991906148de565b505050565b60a0604051908101604090815260008083526020830181905290820181905260608201819052608082015290565b60206040519081016040526000815290565b6148fc91905b808211156148f857600081556001016148e4565b5090565b905600a165627a7a72305820de2c7d2b7c4c2667b06cd2cb9244d23d79668bf26275594b81a2a7437b49f2410029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000abc1c404424bdf24c19a5cc5ef8f47781d18eb3e
-----Decoded View---------------
Arg [0] : _dataContract (address): 0xABC1c404424BDF24C19A5cC5EF8F47781D18Eb3E
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000abc1c404424bdf24c19a5cc5ef8f47781d18eb3e
Swarm Source
bzzr://de2c7d2b7c4c2667b06cd2cb9244d23d79668bf26275594b81a2a7437b49f241
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | Ether (ETH) | 100.00% | $3,155.04 | 1.0123 | $3,193.95 |
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.