Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0.01 ETH
Eth Value
$21.75 (@ $2,175.42/ETH)More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 31 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Purchase Card | 10316288 | 1720 days ago | IN | 0.01 ETH | 0.00216939 | ||||
Purchase Card | 9760248 | 1806 days ago | IN | 0.0081 ETH | 0.00015148 | ||||
Add Make | 7446490 | 2173 days ago | IN | 0 ETH | 0.00010029 | ||||
Purchase Card | 7307723 | 2195 days ago | IN | 0.014742 ETH | 0.00069178 | ||||
Purchase Card | 7307694 | 2195 days ago | IN | 0.0081 ETH | 0.00065399 | ||||
Purchase Card | 7307665 | 2195 days ago | IN | 0.014742 ETH | 0.00069178 | ||||
Purchase Card | 7307657 | 2195 days ago | IN | 0.014742 ETH | 0.00069178 | ||||
Purchase Card | 7307556 | 2195 days ago | IN | 0.0081 ETH | 0.00049296 | ||||
Purchase Card | 7207570 | 2216 days ago | IN | 0.0162 ETH | 0.00036972 | ||||
Purchase Card | 6802778 | 2289 days ago | IN | 0.024964 ETH | 0.00059728 | ||||
Purchase Card | 6674273 | 2310 days ago | IN | 0.0081 ETH | 0.00065399 | ||||
Purchase Card | 6674134 | 2310 days ago | IN | 0.0081 ETH | 0.00039239 | ||||
Purchase Card | 6674125 | 2310 days ago | IN | 0.013122 ETH | 0.00039239 | ||||
Purchase Card | 6674079 | 2310 days ago | IN | 0.013284 ETH | 0.00069178 | ||||
Purchase Card | 6673813 | 2310 days ago | IN | 0.1 ETH | 0.00032919 | ||||
Purchase Card | 6673805 | 2310 days ago | IN | 0.04394295 ETH | 0.00065424 | ||||
Purchase Card | 6493386 | 2340 days ago | IN | 0.04394295 ETH | 0.00055346 | ||||
Purchase Card | 6443249 | 2348 days ago | IN | 0.3723875 ETH | 0.0002815 | ||||
Purchase Card | 6443247 | 2348 days ago | IN | 0.01 ETH | 0.00069182 | ||||
Purchase Card | 6443245 | 2348 days ago | IN | 0.013284 ETH | 0.00069182 | ||||
Purchase Card | 6443245 | 2348 days ago | IN | 0.03704641 ETH | 0.00065456 | ||||
Purchase Card | 6443245 | 2348 days ago | IN | 0.0162 ETH | 0.00065399 | ||||
Purchase Card | 6443241 | 2348 days ago | IN | 0.02388204 ETH | 0.00131377 | ||||
Purchase Card | 6440465 | 2349 days ago | IN | 0.013122 ETH | 0.00135637 | ||||
Purchase Card | 6440463 | 2349 days ago | IN | 0.0081 ETH | 0.00143878 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Method | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|---|
- | 10316288 | 1720 days ago | 0.00882352 ETH | ||||
- | 10316288 | 1720 days ago | 0.00029411 ETH | ||||
- | 10316288 | 1720 days ago | 0.00058823 ETH | ||||
- | 10316288 | 1720 days ago | 0.00029411 ETH | ||||
- | 9760248 | 1806 days ago | 0.00022252 ETH | ||||
- | 9760248 | 1806 days ago | 0.00022252 ETH | ||||
- | 9760248 | 1806 days ago | 0.00008901 ETH | ||||
- | 9760248 | 1806 days ago | 0.00667582 ETH | ||||
- | 9760248 | 1806 days ago | 0.00044505 ETH | ||||
- | 9760248 | 1806 days ago | 0.00044505 ETH | ||||
- | 7307723 | 2195 days ago | 0.00040059 ETH | ||||
- | 7307723 | 2195 days ago | 0.00040059 ETH | ||||
- | 7307723 | 2195 days ago | 0.00016023 ETH | ||||
- | 7307723 | 2195 days ago | 0.00016023 ETH | ||||
- | 7307723 | 2195 days ago | 0.01201793 ETH | ||||
- | 7307723 | 2195 days ago | 0.00080119 ETH | ||||
- | 7307723 | 2195 days ago | 0.00080119 ETH | ||||
- | 7307694 | 2195 days ago | 0.00022252 ETH | ||||
- | 7307694 | 2195 days ago | 0.00022252 ETH | ||||
- | 7307694 | 2195 days ago | 0.00008901 ETH | ||||
- | 7307694 | 2195 days ago | 0.00667582 ETH | ||||
- | 7307694 | 2195 days ago | 0.00044505 ETH | ||||
- | 7307694 | 2195 days ago | 0.00044505 ETH | ||||
- | 7307665 | 2195 days ago | 0.00040059 ETH | ||||
- | 7307665 | 2195 days ago | 0.00040059 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
CryptoFlipCar2
Compiler Version
v0.4.24+commit.e67f0147
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-07-08 */ pragma solidity ^0.4.24; library SafeMath { function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; assert(c / a == b); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } } contract Manageable { address public owner; address public manager; bool public contractLock; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); event ManagerTransferred(address indexed previousManager, address indexed newManager); event ContractLockChanged(address admin, bool state); constructor() public { owner = msg.sender; manager = msg.sender; contractLock = false; } modifier onlyOwner() { require(msg.sender == owner); _; } modifier onlyAdmin() { require((msg.sender == manager) || (msg.sender == owner)); _; } modifier isUnlocked() { require(!contractLock); _; } function transferManager(address newManager) public onlyAdmin { require(_addrNotNull(newManager)); emit ManagerTransferred(manager, newManager); manager = newManager; } function transferOwner(address _newOwner) public onlyOwner { require(_newOwner != address(0)); emit OwnershipTransferred(owner, _newOwner); owner = _newOwner; } function setContractLock(bool setting) public onlyAdmin { contractLock = setting; emit ContractLockChanged(msg.sender, setting); } function _addrNotNull(address _to) internal pure returns (bool) { return(_to != address(0)); } } contract CryptoFlipCar2 is Manageable { using SafeMath for uint256; uint256 private constant TYPE_CAR = 3; uint256 private constant TYPE_MAKE = 2; uint256 private constant TYPE_COMPANY = 1; uint256 private constant TYPE_WHALE = 0; uint256 private constant ADDR_M = (2**160)-1; uint256 private constant PRICE_M = (2**96)-1; uint256 private constant MAKE_PRICE_M = (2**91)-1; uint256 private constant COMPANY_ID_M = (2**5)-1; uint256 private constant RACE_ID_M = (2**96)-1; uint256 private constant RACE_BET_M = (2**128) - 1; uint256 private constant WINNER_M = (2**2)-1; uint256 private constant PINKSLIP_M = (2**1)-1; uint256 private constant STATE_M = (2**2)-1; uint256 private constant ADDR_S = 2**160; uint256 private constant MAKE_PRICE_S = 2**165; uint256 private constant RACE_ID_S = 2**162; uint256 private constant RACE_WINNER_S = 2**128; uint256 private constant PINKSLIP_S = 2**130; uint256 private constant STATE_S = 2**131; uint256 private constant RACE_READY = 0; uint256 private constant RACE_OPENED = 1; uint256 private constant RACE_FINISHED = 3; uint256 private constant AD_PRICE = 5000000000000000; uint256 private constant COMPANY_START_PRICE = 0.1 ether; uint256 private constant MAKE_START_PRICE = 0.01 ether; uint256 private constant CAR_START_PRICE = 0.005 ether; /********************************************** EVENTS **********************************************/ event RaceCreated(uint256 raceId, address player1, uint256 cardId, uint256 betAmount); event RaceFinished(uint256 raceId, address winner); event CardPurchased(uint256 cardType, uint256 cardId, address buyer, address seller, uint256 price); event CardTransferred(uint256 cardType, uint256 cardId, address buyer, address seller); event AdPurchased(uint256 cardType, uint256 cardId, address buyer, address seller, uint256 price); event CarAdded(uint256 id, uint256 makeId); event MakeAdded(uint256 id, uint256 companyId); event CompanyAdded(uint256 id); /****************************************************************************************************/ /********************************************** STRUCTS *********************************************/ struct Advert { uint256 data; string link; string text; } struct Car { address[4] owners; uint256 price; uint256 makeId; bool locked; } struct Race { uint256 player1Data; uint256 player2Data; uint256 metaData; } /****************************************************************************************************/ /*********************************************** VARS ***********************************************/ uint256 private whaleCard; mapping(uint256 => Race) private racesMap; mapping(uint256 => uint256) private companiesMap; mapping(uint256 => uint256) private makesMap; mapping(uint256 => Car) private carsMap; mapping(uint256 => mapping(uint256 => Advert)) private adsMap; uint256 public carCount; uint256 public makeCount; uint256 public companyCount; uint256 public openRaceCount; uint256 public finishedRaceCount; uint256 private adCardOwnerCut = 5; uint256 private ownerCut = 50; uint256 private whaleCut = 5; uint256 private devCut = 5; uint256 private parentCut = 10; uint256 private oldCarCut = 2; bool private initDone = false; /****************************************************************************************************/ function init() public onlyAdmin { require(!initDone); initDone = true; whaleCard = 544244940971561611450182022165966101192029151941515963475380724124; companiesMap[0] = 865561039198320994090019029559199471223345461753643689577969591538; companiesMap[1] = 865561039198320993054179444739682765137514550166591154999543755547; companiesMap[2] = 554846819998923714678602910082262521292860787724376787491777411291; companiesMap[3] = 355671038460848535541135615183955125321318851275538745891777411291; companiesMap[4] = 146150163733090292102777780770905740002982644405466239152731821942; companiesMap[5] = 355671038460848535508878910989526070534946658842850550567444902178; companiesMap[6] = 146150163733090292102777780770905740002982644405466239152731821942; companiesMap[7] = 146150163733090292102777780770905740002982644405466239152731821942; companyCount = 8; makesMap[0] = 4605053916465184876084057218227438981618782007393731932205532781978; makesMap[1] = 2914591086370370174599913075554161534533507828594490006968556374688; makesMap[2] = 1844677902766057073279966936236223278229324254247807717511561402428; makesMap[3] = 1844677902766057073279966936236223278229324254247807717511561402428; makesMap[4] = 4605053916465184876911990996766451400782681524689254663484418928006; makesMap[5] = 4605053916465184878081670562508085129910431352928816695390378405668; makesMap[6] = 1167517659978517137984061586248765661373868143008706876811221867930; makesMap[7] = 738935227834504519292893252751116942230691621264798552983426488380; makesMap[8] = 1167517659978517139445563223579668579577552975724989896467154410906; makesMap[9] = 738935227834504520754394890082019860434376453981081572639359031356; makesMap[10] = 738935227834504523289617387884832456129379376897516570443342499703; makesMap[11] = 1167517659978517142247011557709217019077442283260142618443342499703; makesMap[12] = 467680523945888942876598267953905513549396800157884357088327079798; makeCount = 13; carsMap[0] = Car({locked: false, owners:[0x3177Abbe93422c9525652b5d4e1101a248A99776, 0x5C035Bb4Cb7dacbfeE076A5e61AA39a10da2E956, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], price: 13122000000000000, makeId: 0 }); // solhint-disable-line max-line-length carsMap[1] = Car({locked: false, owners:[0x7396176Ac6C1ef05d57180e7733b9188B3571d9A, 0x71f35825a3B1528859dFa1A64b24242BC0d12990, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], price: 13122000000000000, makeId: 0 }); // solhint-disable-line max-line-length carsMap[2] = Car({locked: false, owners:[0x71f35825a3B1528859dFa1A64b24242BC0d12990, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], price: 8100000000000000, makeId: 0 }); // solhint-disable-line max-line-length carsMap[3] = Car({locked: false, owners:[0x65A05c896d9A6f428B3936ac5db8df28752Ccd44, 0x71f35825a3B1528859dFa1A64b24242BC0d12990, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], price: 13122000000000000, makeId: 0 }); // solhint-disable-line max-line-length carsMap[4] = Car({locked: false, owners:[0x3177Abbe93422c9525652b5d4e1101a248A99776, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], price: 10000000000000000, makeId: 5 }); // solhint-disable-line max-line-length carsMap[5] = Car({locked: false, owners:[0x3177Abbe93422c9525652b5d4e1101a248A99776, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], price: 10000000000000000, makeId: 1 }); // solhint-disable-line max-line-length carsMap[6] = Car({locked: false, owners:[0x3177Abbe93422c9525652b5d4e1101a248A99776, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], price: 10000000000000000, makeId: 4 }); // solhint-disable-line max-line-length carsMap[7] = Car({locked: false, owners:[0x62D5Be95C330b512b35922E347319afD708dA981, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], price: 16200000000000000, makeId: 4 }); // solhint-disable-line max-line-length carsMap[8] = Car({locked: false, owners:[0x3130259deEdb3052E24FAD9d5E1f490CB8CCcaa0, 0x3177Abbe93422c9525652b5d4e1101a248A99776, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], price: 16200000000000000, makeId: 6 }); // solhint-disable-line max-line-length carsMap[9] = Car({locked: false, owners:[0x19fC7935fd9D0BC335b4D0df3bE86eD51aD2E62A, 0x558F42Baf1A9352A955D301Fa644AD0F619B97d9, 0x5e4b61220039823aeF8a54EfBe47773194494f77, 0x7396176Ac6C1ef05d57180e7733b9188B3571d9A], price: 22051440000000000, makeId: 10}); // solhint-disable-line max-line-length carsMap[10] = Car({locked: false, owners:[0x504Af27f1Cef15772370b7C04b5D9d593Ee729f5, 0x19fC7935fd9D0BC335b4D0df3bE86eD51aD2E62A, 0x558F42Baf1A9352A955D301Fa644AD0F619B97d9, 0x5e4b61220039823aeF8a54EfBe47773194494f77], price: 37046419200000000, makeId: 11}); // solhint-disable-line max-line-length carsMap[11] = Car({locked: false, owners:[0x7396176Ac6C1ef05d57180e7733b9188B3571d9A, 0x5e4b61220039823aeF8a54EfBe47773194494f77, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], price: 8100000000000000, makeId: 4 }); // solhint-disable-line max-line-length carsMap[12] = Car({locked: false, owners:[0x5632CA98e5788edDB2397757Aa82d1Ed6171e5aD, 0x7396176Ac6C1ef05d57180e7733b9188B3571d9A, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], price: 8100000000000000, makeId: 7 }); // solhint-disable-line max-line-length carsMap[13] = Car({locked: false, owners:[0x5632CA98e5788edDB2397757Aa82d1Ed6171e5aD, 0x5e4b61220039823aeF8a54EfBe47773194494f77, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], price: 8100000000000000, makeId: 10}); // solhint-disable-line max-line-length carsMap[14] = Car({locked: false, owners:[0x504Af27f1Cef15772370b7C04b5D9d593Ee729f5, 0x5e4b61220039823aeF8a54EfBe47773194494f77, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], price: 8100000000000000, makeId: 11}); // solhint-disable-line max-line-length carsMap[15] = Car({locked: false, owners:[0x5632CA98e5788edDB2397757Aa82d1Ed6171e5aD, 0x5e4b61220039823aeF8a54EfBe47773194494f77, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], price: 8100000000000000, makeId: 8 }); // solhint-disable-line max-line-length carsMap[16] = Car({locked: false, owners:[0x3177Abbe93422c9525652b5d4e1101a248A99776, 0x558F42Baf1A9352A955D301Fa644AD0F619B97d9, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], price: 8100000000000000, makeId: 9 }); // solhint-disable-line max-line-length carsMap[17] = Car({locked: false, owners:[0x5632CA98e5788edDB2397757Aa82d1Ed6171e5aD, 0x558F42Baf1A9352A955D301Fa644AD0F619B97d9, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], price: 8100000000000000, makeId: 2 }); // solhint-disable-line max-line-length carsMap[18] = Car({locked: false, owners:[0x5632CA98e5788edDB2397757Aa82d1Ed6171e5aD, 0x19fC7935fd9D0BC335b4D0df3bE86eD51aD2E62A, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], price: 8100000000000000, makeId: 3 }); // solhint-disable-line max-line-length carsMap[19] = Car({locked: false, owners:[0x308e9C99Ac194101C971FFcAca897AC943843dE8, 0x19fC7935fd9D0BC335b4D0df3bE86eD51aD2E62A, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], price: 8100000000000000, makeId: 6 }); // solhint-disable-line max-line-length carsMap[20] = Car({locked: false, owners:[0x5632CA98e5788edDB2397757Aa82d1Ed6171e5aD, 0xE9cfDadEa5FA5475861B62aA7d5dAA493C377122, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], price: 8100000000000000, makeId: 10}); // solhint-disable-line max-line-length carsMap[21] = Car({locked: false, owners:[0x308e9C99Ac194101C971FFcAca897AC943843dE8, 0x3177Abbe93422c9525652b5d4e1101a248A99776, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], price: 8100000000000000, makeId: 0 }); // solhint-disable-line max-line-length carsMap[22] = Car({locked: false, owners:[0x5632CA98e5788edDB2397757Aa82d1Ed6171e5aD, 0x308e9C99Ac194101C971FFcAca897AC943843dE8, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], price: 8100000000000000, makeId: 12}); // solhint-disable-line max-line-length carsMap[23] = Car({locked: false, owners:[0xac2b4B94eCA37Cb7c9cF7062fEfB2792c5792731, 0x263b604509D6a825719859Ee458b2D91fb7d330D, 0x3177Abbe93422c9525652b5d4e1101a248A99776, 0x0000000000000000000000000000000000000000], price: 13284000000000000, makeId: 12}); //solhint-disable-line max-line-length carsMap[24] = Car({locked: false, owners:[0x5632CA98e5788edDB2397757Aa82d1Ed6171e5aD, 0x308e9C99Ac194101C971FFcAca897AC943843dE8, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], price: 8100000000000000, makeId: 2 }); // solhint-disable-line max-line-length carsMap[25] = Car({locked: false, owners:[0x5632CA98e5788edDB2397757Aa82d1Ed6171e5aD, 0x504Af27f1Cef15772370b7C04b5D9d593Ee729f5, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], price: 8100000000000000, makeId: 12}); // solhint-disable-line max-line-length carsMap[26] = Car({locked: false, owners:[0x9bD750685bF5bfCe24d1B8DE03a1ff3D2631ef5a, 0x3177Abbe93422c9525652b5d4e1101a248A99776, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], price: 8100000000000000, makeId: 11}); // solhint-disable-line max-line-length carCount = 27; } /********************************************** RACES ***********************************************/ function createRace(uint256 _cardId, uint256 _betAmount, uint256 pinkSlip) public payable isUnlocked { uint256 excess = msg.value.sub(_betAmount); require(_owns(msg.sender, TYPE_CAR, _cardId)); require(!carsMap[_cardId].locked); carsMap[_cardId].locked = true; racesMap[openRaceCount+finishedRaceCount].player1Data = _packPlayerData(msg.sender, _cardId); racesMap[openRaceCount+finishedRaceCount].metaData = _packRaceData(_betAmount, 0, pinkSlip, RACE_OPENED); openRaceCount++; emit RaceCreated(openRaceCount+finishedRaceCount, msg.sender, _cardId, _betAmount); _pay(msg.sender, excess); } function joinRaceAndFinish (uint256 _raceId, uint256 _cardId) public payable isUnlocked { require(msg.sender == tx.origin); require(_owns(msg.sender, TYPE_CAR, _cardId)); require(!carsMap[_cardId].locked); (uint256 bet, bool pinkslip) = _unpackRaceFinishData(racesMap[_raceId].metaData); require(_raceOpened(racesMap[_raceId].metaData)); openRaceCount--; finishedRaceCount++; racesMap[_raceId].player2Data = _packPlayerData(msg.sender, _cardId); address player1 = address(racesMap[_raceId].player1Data & ADDR_M); uint256 winner = _getRNGValue(_raceId); address winnerAddr = (winner == 1) ? player1 : msg.sender; _transferCar(winnerAddr, racesMap[_raceId].player1Data, pinkslip); _transferCar(winnerAddr, racesMap[_raceId].player2Data, pinkslip); uint256 devFee = bet.mul(2).mul(devCut) / 100; uint256 winnings = bet.mul(2).sub(devFee); _updateRaceWinner(_raceId, winner); emit RaceFinished(_raceId, winnerAddr); _pay(msg.sender, msg.value.sub(bet)); _pay(owner, devFee); _pay(winnerAddr, winnings); } /****************************************************************************************************/ /******************************************** PURCHASE **********************************************/ function purchaseAd(uint256 _cardType, uint256 _cardId, string adText, string adLink) public payable isUnlocked { (address seller, uint256 price) = _unpackItemData(adsMap[_cardType][_cardId].data); price = (price == 0) ? AD_PRICE : price; seller = (seller == address(0)) ? owner : seller; uint256 excess = msg.value.sub(price); require(_released(_cardType, _cardId)); require(_cardType != 0); uint256 totalPerc = 100 + adCardOwnerCut + ownerCut + devCut; uint256 newPrice = price.mul(totalPerc) / 100; uint256 cardsellerCommission = price.mul(adCardOwnerCut) / totalPerc; uint256 devFee = price.mul(devCut) / totalPerc; uint256 sellerCommission = price - (cardsellerCommission + devFee); uint256 adData = _packItemData(msg.sender, newPrice); adsMap[_cardType][_cardId] = Advert({text: adText, link: adLink, data: adData}); emit AdPurchased(_cardType, _cardId, msg.sender, seller, price); _pay(ownerOf(_cardType, _cardId), cardsellerCommission); _pay(owner, devFee); _pay(seller, sellerCommission); _pay(msg.sender, excess); } function purchaseCard(uint256 _cardType, uint256 _cardId) public payable isUnlocked { if ( _cardType == TYPE_WHALE) { _purchaseWhaleCard(); } else if (_cardType == TYPE_COMPANY) { _purchaseCompany(_cardId); } else if (_cardType == TYPE_MAKE) { _purchaseMake(_cardId); } else if (_cardType == TYPE_CAR) { _purchaseCar(_cardId); } } /****************************************************************************************************/ /********************************************* GETTERS **********************************************/ function getWhaleCard() public view returns (address _owner, uint256 _price) { (_owner, _price) = _unpackItemData(whaleCard); } function getCompany(uint256 _companyId) public view returns(address _owner, uint256 _price) { (_owner, _price) = _unpackItemData(companiesMap[_companyId]); } function getMake(uint256 _makeId) public view returns(address _owner, uint256 _price, uint256 _companyId) { (_owner, _companyId, _price) = _unpackMakeData(makesMap[_makeId]); } function getCar(uint256 _carId) public view returns (address[4] owners, uint256 price, uint256 makeId) { Car memory _car = carsMap[_carId]; owners = _car.owners; price = _car.price; makeId = _car.makeId; } function getRace(uint256 _raceId) public view returns(uint256 _p1Data, uint256 _p2Data, uint256 _raceMetaData) { Race memory _race = racesMap[_raceId]; _p1Data = _race.player1Data; _p2Data = _race.player2Data; _raceMetaData = _race.metaData; } function getFullRace(uint256 _raceId) public view returns( address p1, uint256 p1Id, address p2, uint256 p2Id, uint256 bet, uint256 winner, bool pinkslip, uint256 state) { Race memory _race = racesMap[_raceId]; (p1, p1Id) = _unpackPlayerData(_race.player1Data); (p2, p2Id) = _unpackPlayerData(_race.player2Data); (bet, winner, pinkslip, state) = _unpackRaceData(_race.metaData); } function getAd(uint256 _cardType, uint256 _cardId) public view returns(string text, string link, address seller, uint256 price) { Advert memory ad = adsMap[_cardType][_cardId]; (seller, price) = _unpackItemData(ad.data); price = (price == 0) ? AD_PRICE : price; seller = (seller == address(0)) ? owner : seller; text = ad.text; link = ad.link; } function getCuts() public view returns(uint256[6] cuts) { cuts = [adCardOwnerCut, ownerCut, whaleCut, devCut, parentCut, oldCarCut]; } function ownerOf(uint256 cardType, uint256 cardId) public view returns(address cardOwner) { if (cardType == TYPE_WHALE) { cardOwner = address(whaleCard & ADDR_M); } else if (cardType == TYPE_COMPANY) { cardOwner = address(companiesMap[cardId] & ADDR_M); } else if (cardType == TYPE_MAKE) { cardOwner = address(makesMap[cardId] & ADDR_M); } else if (cardType == TYPE_CAR) { cardOwner = carsMap[cardId].owners[0]; } } /****************************************************************************************************/ /********************************************* RELEASE **********************************************/ function transferCard(address _newOwner, uint256 _cardType, uint256 _cardId) public onlyAdmin { _transferCard(_newOwner, _cardType, _cardId); } /****************************************************************************************************/ /******************************************** ADD CARDS *********************************************/ function addCompany() public onlyAdmin { companiesMap[companyCount] = _packItemData(owner, COMPANY_START_PRICE); emit CompanyAdded(companyCount++); } function addMake(uint256 _companyId) public onlyAdmin { makesMap[makeCount] = _packMakeData(owner, MAKE_START_PRICE, _companyId); emit MakeAdded(makeCount++, _companyId); } function addCar(uint256 _makeId) public onlyAdmin { carsMap[carCount] = Car({price: CAR_START_PRICE, owners: [owner, address(0), address(0), address(0)], makeId: _makeId, locked : false}); emit CarAdded(carCount++, _makeId); } function addAd(address _ownerAddr, uint256 _price, uint256 _cardType, uint256 _cardId, string _text, string _link) public onlyAdmin { require(_addrNotNull(_ownerAddr) && (_price != 0)); uint256 _data = _packItemData(_ownerAddr, _price); adsMap[_cardType][_cardId] = Advert({text: _text, link: _link, data: _data}); } function editCuts(uint256[6] cuts) public onlyAdmin { adCardOwnerCut = (cuts[0] == 0) ? adCardOwnerCut : cuts[0]; ownerCut = (cuts[1] == 0) ? ownerCut : cuts[1]; whaleCut = (cuts[2] == 0) ? whaleCut : cuts[2]; devCut = (cuts[3] == 0) ? devCut : cuts[3]; parentCut = (cuts[4] == 0) ? parentCut : cuts[4]; oldCarCut = (cuts[5] == 0) ? oldCarCut : cuts[5]; } /****************************************************************************************************/ /********************************************* PRIVATE **********************************************/ function _editPriceOf(uint256 cardType, uint256 cardId, uint256 _newPrice) private { if (cardType == TYPE_WHALE) { whaleCard = (~(PRICE_M*ADDR_S) & whaleCard) | ((_newPrice & PRICE_M) * ADDR_S); } else if (cardType == TYPE_COMPANY) { companiesMap[cardId] = (~(PRICE_M*ADDR_S) & companiesMap[cardId]) | ((_newPrice & PRICE_M) * ADDR_S); } else if (cardType == TYPE_MAKE) { makesMap[cardId] = (~(MAKE_PRICE_M*MAKE_PRICE_S) & makesMap[cardId]) | ((_newPrice & MAKE_PRICE_M) * MAKE_PRICE_S); } else if (cardType == TYPE_CAR) { carsMap[cardId].price = _newPrice; } } function _priceOf(uint256 cardType, uint256 cardId) private view returns(uint256 _price) { if (cardType == TYPE_WHALE) { _price = (PRICE_M & (whaleCard / ADDR_S)); } else if (cardType == TYPE_COMPANY) { _price = (PRICE_M & (companiesMap[cardId] / ADDR_S)); } else if (cardType == TYPE_MAKE) { _price = (MAKE_PRICE_M & (makesMap[cardId] / MAKE_PRICE_S)); } else if (cardType == TYPE_CAR) { _price = carsMap[cardId].price; } } function _owns(address _owner, uint256 cardType, uint256 cardId) private view returns(bool) { address _toCheck = ownerOf(cardType, cardId); return(_owner == _toCheck); } function _released(uint256 cardType, uint256 cardId) private view returns(bool) { return(_addrNotNull(ownerOf(cardType, cardId))); } function _transferCard(address newOwner, uint256 cardType, uint256 cardId) private returns (bool) { require(_released(cardType, cardId)); address seller = ownerOf(cardType, cardId); if ( newOwner == seller) { } else if (cardType == TYPE_WHALE) { whaleCard = (~(ADDR_M) & whaleCard) | (uint256(newOwner) & ADDR_M); } else if (cardType == TYPE_COMPANY) { companiesMap[cardId] = (~(ADDR_M) & companiesMap[cardId]) | (uint256(newOwner) & ADDR_M); } else if (cardType == TYPE_MAKE) { makesMap[cardId] = (~(ADDR_M) & makesMap[cardId]) | (uint256(newOwner) & ADDR_M); } else if (cardType == TYPE_CAR) { carsMap[cardId].owners[3] = carsMap[cardId].owners[2]; carsMap[cardId].owners[2] = carsMap[cardId].owners[1]; carsMap[cardId].owners[1] = carsMap[cardId].owners[0]; carsMap[cardId].owners[0] = newOwner; } emit CardTransferred(cardType, cardId, newOwner, seller); } function _pay(address _to, uint256 _value) private { if ( _addrNotNull(_to) && _value != 0) { _to.transfer(_value); } } function _transferCar(address newOwner, uint256 _data, bool pinkslip) private returns (bool) { uint256 id = _getRacerCar(_data); carsMap[id].locked = false; if ( pinkslip) { _transferCard(newOwner, TYPE_CAR, id); } } function _oldOwnersOf(uint256 _carId) private view returns(uint256) { Car memory _car = carsMap[_carId]; uint256 count = _addrNotNull(_car.owners[1]) ? 1 : 0; count += (_addrNotNull(_car.owners[2]) ? 1 : 0); count += (_addrNotNull(_car.owners[3]) ? 1 : 0); return(count); } function _packItemData(address itemOwner, uint256 price) public pure returns(uint256) { uint256 _data = (~(ADDR_M) & _data) | (uint256(itemOwner) & ADDR_M); _data = (~(PRICE_M*ADDR_S) & _data) | ((price & PRICE_M) * ADDR_S); return(_data); } function _unpackItemData(uint256 _data) private pure returns(address itemOwner, uint256 price) { itemOwner = address(_data & ADDR_M); price = PRICE_M & (_data / ADDR_S); } function _packMakeData(address makeOwner, uint256 price, uint256 companyId) private pure returns(uint256 _data) { _data = (~(ADDR_M) & _data) | (uint256(makeOwner) & ADDR_M); _data = (~(COMPANY_ID_M*ADDR_S) & _data) | ((companyId & COMPANY_ID_M) * ADDR_S); _data = (~(MAKE_PRICE_M*MAKE_PRICE_S) & _data) | ((price & MAKE_PRICE_M) * MAKE_PRICE_S); } function _unpackMakeData(uint256 _data) private pure returns(address makeOwner, uint256 companyId, uint256 price) { makeOwner = address(_data & ADDR_M); companyId = COMPANY_ID_M & (_data / ADDR_S); price = (MAKE_PRICE_M & (_data / MAKE_PRICE_S)); } function _purchaseCar(uint256 _cardId) private { Car memory car = carsMap[_cardId]; require(!car.locked); uint256 excess = msg.value.sub(car.price); require(msg.sender != car.owners[0]); uint256 totalPerc = 100 + ownerCut + devCut + whaleCut + (2 * parentCut) + (oldCarCut * _oldOwnersOf(_cardId)); uint256 parentFee = car.price.mul(parentCut) / totalPerc; uint256 oldCarFee = car.price.mul(oldCarCut) / totalPerc; uint256 whaleFee = car.price.mul(whaleCut) / totalPerc; uint256 devFee = car.price.mul(devCut) / totalPerc; uint256 sellerCommission = car.price - ((oldCarFee * _oldOwnersOf(_cardId)) + (2 * parentFee) + devFee + whaleFee); uint256 companyId = COMPANY_ID_M & (makesMap[car.makeId] / ADDR_S); emit CardPurchased(TYPE_CAR, _cardId, msg.sender, car.owners[0], car.price); _transferCard(msg.sender, TYPE_CAR, _cardId); _editPriceOf(TYPE_CAR, _cardId, car.price.mul(totalPerc) / 100); _pay(ownerOf(TYPE_COMPANY, companyId), parentFee); _pay(ownerOf(TYPE_MAKE, car.makeId), parentFee); _pay(car.owners[0], sellerCommission); _pay(car.owners[1], oldCarFee); _pay(car.owners[2], oldCarFee); _pay(car.owners[3], oldCarFee); _pay(ownerOf(0, 0), whaleFee); _pay(owner, devFee); _pay(msg.sender, excess); } function _purchaseMake(uint256 _cardId) private isUnlocked { (address seller, uint256 price, uint256 companyId) = getMake(_cardId); uint256 excess = msg.value.sub(price); require(msg.sender != seller); uint256 totalPerc = 100 + ownerCut + devCut + parentCut + whaleCut; uint256 parentFee = price.mul(parentCut) / totalPerc; uint256 whaleFee = price.mul(whaleCut) / totalPerc; uint256 devFee = price.mul(devCut) / totalPerc; uint256 newPrice = price.mul(totalPerc) / 100; uint256 sellerCommission = price - (parentFee+whaleFee+devFee); _transferCard(msg.sender, 2, _cardId); _editPriceOf(2, _cardId, newPrice); emit CardPurchased(2, _cardId, msg.sender, seller, price); _pay(ownerOf(TYPE_WHALE, 0), whaleFee); _pay(ownerOf(TYPE_COMPANY, companyId), parentFee); _pay(owner, devFee); _pay(seller, sellerCommission); _pay(msg.sender, excess); } function _purchaseCompany(uint256 _cardId) private isUnlocked { (address seller, uint256 price) = getCompany(_cardId); uint256 excess = msg.value.sub(price); require(msg.sender != seller); uint256 totalPerc = 100+ownerCut+devCut+whaleCut; uint256 newPrice = price.mul(totalPerc) / 100; _transferCard(msg.sender, 1, _cardId); _editPriceOf(1, _cardId, newPrice); uint256 whaleFee = price.mul(whaleCut) / totalPerc; uint256 devFee = price.mul(devCut) / totalPerc; uint256 sellerCommission = price - (whaleFee + devFee); emit CardPurchased(1, _cardId, msg.sender, seller, price); _pay(ownerOf(0,0), whaleFee); _pay(owner, devFee); _pay(seller,sellerCommission); _pay(msg.sender, excess); } function _purchaseWhaleCard() private isUnlocked { (address seller, uint256 price) = getWhaleCard(); uint256 excess = msg.value.sub(price); require(msg.sender != seller); uint256 totalPerc = 100 + ownerCut + devCut; uint256 devFee = price.mul(devCut) / totalPerc; uint256 sellerCommission = price - devFee; uint256 newPrice = price.mul(totalPerc) / 100; _transferCard(msg.sender, TYPE_WHALE, TYPE_WHALE); _editPriceOf(TYPE_WHALE, TYPE_WHALE, newPrice); emit CardPurchased(TYPE_WHALE, TYPE_WHALE, msg.sender, seller, price); _pay(owner, devFee); _pay(seller, sellerCommission); _pay(msg.sender, excess); } /****************************************************************************************************/ /****************************************** PRIVATE RACE ********************************************/ function _packPlayerData(address player, uint256 id) private pure returns(uint256 playerData) { playerData = (~(ADDR_M) & playerData) | (uint256(player) & ADDR_M); playerData = (~(RACE_ID_M*ADDR_S) & playerData) | ((id & RACE_ID_M) * ADDR_S); } function _unpackPlayerData(uint256 playerData) private pure returns(address player, uint256 id) { player = address(playerData & ADDR_M); id = (RACE_ID_M & (playerData / ADDR_S)); } function _packRaceData(uint256 _bet, uint256 _winner, uint256 _pinkslip, uint256 _state) private pure returns(uint256 _raceData) { _raceData = (~(RACE_BET_M) & _raceData) | (_bet & RACE_BET_M); _raceData = (~(WINNER_M*RACE_WINNER_S) & _raceData) | ((_winner & WINNER_M) * RACE_WINNER_S); _raceData = (~(PINKSLIP_M*PINKSLIP_S) & _raceData) | ((_pinkslip & PINKSLIP_M) * PINKSLIP_S); _raceData = (~(STATE_M*STATE_S) & _raceData) | ((_state & STATE_M) * STATE_S); } function _unpackRaceData(uint256 _raceData) private pure returns(uint256 bet, uint256 winner, bool pinkslip, uint256 state) { bet = _raceData & RACE_BET_M; winner = (WINNER_M & (_raceData / RACE_WINNER_S)); pinkslip = (PINKSLIP_M & (_raceData / PINKSLIP_S)) != 0; state = (STATE_M & (_raceData / STATE_S)); } function _unpackRaceFinishData(uint256 _raceData) private pure returns(uint256 bet, bool pinkslip) { bet = _raceData & RACE_BET_M; pinkslip = (PINKSLIP_M & (_raceData / PINKSLIP_S)) != 0; } function _updateRaceWinner(uint256 raceId, uint256 winner) private { racesMap[raceId].metaData = (~(STATE_M*STATE_S) & racesMap[raceId].metaData) | ((RACE_FINISHED & STATE_M) * STATE_S); racesMap[raceId].metaData = (~(WINNER_M*RACE_WINNER_S) & racesMap[raceId].metaData) | ((winner & WINNER_M) * RACE_WINNER_S); } function _raceOpened(uint256 raceData) private pure returns (bool opened) { uint256 state = (STATE_M & (raceData / STATE_S)); opened = ((state == RACE_OPENED)); } function _getRacerCar(uint256 playerData) private pure returns (uint256 id) { id = (RACE_ID_M & (playerData / ADDR_S)); } function _getRNGValue(uint256 id) private view returns(uint256 winner) { Race memory race = racesMap[id]; uint256 p1Price = _priceOf(TYPE_CAR, _getRacerCar(race.player1Data)); uint256 p2Price = _priceOf(TYPE_CAR, _getRacerCar(race.player2Data)); uint256 _totalValue = p1Price.add(p2Price); uint256 blockToCheck = block.number - 1; uint256 weight = (p1Price.mul(2) < _totalValue) ? _totalValue/2 : p1Price; //uint256 ratio = ((2**256)-1)/_totalValue; uint256 ratio = 115792089237316195423570985008687907853269984665640564039457584007913129639935/_totalValue; bytes32 blockHash = blockhash(blockToCheck); winner = (uint256(keccak256(abi.encodePacked(blockHash))) > weight*ratio) ? 2 : 1; } /****************************************************************************************************/ }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":true,"inputs":[],"name":"finishedRaceCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_raceId","type":"uint256"}],"name":"getRace","outputs":[{"name":"_p1Data","type":"uint256"},{"name":"_p2Data","type":"uint256"},{"name":"_raceMetaData","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"},{"name":"_cardType","type":"uint256"},{"name":"_cardId","type":"uint256"}],"name":"transferCard","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"carCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_cardType","type":"uint256"},{"name":"_cardId","type":"uint256"}],"name":"getAd","outputs":[{"name":"text","type":"string"},{"name":"link","type":"string"},{"name":"seller","type":"address"},{"name":"price","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"itemOwner","type":"address"},{"name":"price","type":"uint256"}],"name":"_packItemData","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"_raceId","type":"uint256"}],"name":"getFullRace","outputs":[{"name":"p1","type":"address"},{"name":"p1Id","type":"uint256"},{"name":"p2","type":"address"},{"name":"p2Id","type":"uint256"},{"name":"bet","type":"uint256"},{"name":"winner","type":"uint256"},{"name":"pinkslip","type":"bool"},{"name":"state","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"manager","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_makeId","type":"uint256"}],"name":"addCar","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"setting","type":"bool"}],"name":"setContractLock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_companyId","type":"uint256"}],"name":"getCompany","outputs":[{"name":"_owner","type":"address"},{"name":"_price","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"makeCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_carId","type":"uint256"}],"name":"getCar","outputs":[{"name":"owners","type":"address[4]"},{"name":"price","type":"uint256"},{"name":"makeId","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"openRaceCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_cardType","type":"uint256"},{"name":"_cardId","type":"uint256"}],"name":"purchaseCard","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"cuts","type":"uint256[6]"}],"name":"editCuts","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getWhaleCard","outputs":[{"name":"_owner","type":"address"},{"name":"_price","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_makeId","type":"uint256"}],"name":"getMake","outputs":[{"name":"_owner","type":"address"},{"name":"_price","type":"uint256"},{"name":"_companyId","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_ownerAddr","type":"address"},{"name":"_price","type":"uint256"},{"name":"_cardType","type":"uint256"},{"name":"_cardId","type":"uint256"},{"name":"_text","type":"string"},{"name":"_link","type":"string"}],"name":"addAd","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_cardType","type":"uint256"},{"name":"_cardId","type":"uint256"},{"name":"adText","type":"string"},{"name":"adLink","type":"string"}],"name":"purchaseAd","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"companyCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getCuts","outputs":[{"name":"cuts","type":"uint256[6]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_raceId","type":"uint256"},{"name":"_cardId","type":"uint256"}],"name":"joinRaceAndFinish","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_companyId","type":"uint256"}],"name":"addMake","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newManager","type":"address"}],"name":"transferManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"contractLock","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"cardType","type":"uint256"},{"name":"cardId","type":"uint256"}],"name":"ownerOf","outputs":[{"name":"cardOwner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_cardId","type":"uint256"},{"name":"_betAmount","type":"uint256"},{"name":"pinkSlip","type":"uint256"}],"name":"createRace","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"init","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"addCompany","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[{"indexed":false,"name":"raceId","type":"uint256"},{"indexed":false,"name":"player1","type":"address"},{"indexed":false,"name":"cardId","type":"uint256"},{"indexed":false,"name":"betAmount","type":"uint256"}],"name":"RaceCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"raceId","type":"uint256"},{"indexed":false,"name":"winner","type":"address"}],"name":"RaceFinished","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"cardType","type":"uint256"},{"indexed":false,"name":"cardId","type":"uint256"},{"indexed":false,"name":"buyer","type":"address"},{"indexed":false,"name":"seller","type":"address"},{"indexed":false,"name":"price","type":"uint256"}],"name":"CardPurchased","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"cardType","type":"uint256"},{"indexed":false,"name":"cardId","type":"uint256"},{"indexed":false,"name":"buyer","type":"address"},{"indexed":false,"name":"seller","type":"address"}],"name":"CardTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"cardType","type":"uint256"},{"indexed":false,"name":"cardId","type":"uint256"},{"indexed":false,"name":"buyer","type":"address"},{"indexed":false,"name":"seller","type":"address"},{"indexed":false,"name":"price","type":"uint256"}],"name":"AdPurchased","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"id","type":"uint256"},{"indexed":false,"name":"makeId","type":"uint256"}],"name":"CarAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"id","type":"uint256"},{"indexed":false,"name":"companyId","type":"uint256"}],"name":"MakeAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"id","type":"uint256"}],"name":"CompanyAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousManager","type":"address"},{"indexed":true,"name":"newManager","type":"address"}],"name":"ManagerTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"admin","type":"address"},{"indexed":false,"name":"state","type":"bool"}],"name":"ContractLockChanged","type":"event"}]
Contract Creation Code
60806040526005600d8190556032600e55600f819055601055600a60115560026012556013805460ff191690556000805433600160a060020a031991821681178355600180549092161760a060020a60ff02191690556148a990819061006590396000f3006080604052600436106101955763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630b654e7d811461019a5780630d71aba5146101c1578063119f2c9f146101f7578063297a1f561461022057806329e10c1314610235578063304c69ed1461034e5780633c5f2bf214610372578063481c6a75146103dc5780634cf2010e1461040d5780634fb2e45d1461042557806353ebf6bd1461044657806357d139171461046057806359b09b251461049b5780635e8be190146104b0578063606dc1041461050c57806368fcb6ee146105215780636d8758c71461052f5780637294789b146105725780637a4b7075146105875780637f09171b146105c757806389009ab0146106795780638da5cb5b1461070a5780638e75dd471461071f57806392bc3251146107345780639e6d4cd014610781578063a8cbb5de1461078f578063ba0e930a146107a7578063cf837fad146107c8578063d9dad80d146107f1578063d9e7c8ca1461080c578063e1c7392a1461081d578063ea7873db14610832575b600080fd5b3480156101a657600080fd5b506101af610847565b60408051918252519081900360200190f35b3480156101cd57600080fd5b506101d960043561084d565b60408051938452602084019290925282820152519081900360600190f35b34801561020357600080fd5b5061021e600160a060020a0360043516602435604435610899565b005b34801561022c57600080fd5b506101af6108d8565b34801561024157600080fd5b506102506004356024356108de565b60405180806020018060200185600160a060020a0316600160a060020a03168152602001848152602001838103835287818151815260200191508051906020019080838360005b838110156102af578181015183820152602001610297565b50505050905090810190601f1680156102dc5780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b8381101561030f5781810151838201526020016102f7565b50505050905090810190601f16801561033c5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b34801561035a57600080fd5b506101af600160a060020a0360043516602435610aa2565b34801561037e57600080fd5b5061038a600435610acb565b60408051600160a060020a03998a168152602081019890985295909716868601526060860193909352608085019190915260a0840152151560c083015260e08201929092529051908190036101000190f35b3480156103e857600080fd5b506103f1610b5f565b60408051600160a060020a039092168252519081900360200190f35b34801561041957600080fd5b5061021e600435610b6e565b34801561043157600080fd5b5061021e600160a060020a0360043516610c84565b34801561045257600080fd5b5061021e6004351515610d0b565b34801561046c57600080fd5b50610478600435610da5565b60408051600160a060020a03909316835260208301919091528051918290030190f35b3480156104a757600080fd5b506101af610dc9565b3480156104bc57600080fd5b506104c8600435610dcf565b6040518084608080838360005b838110156104ed5781810151838201526020016104d5565b5050505091909101938452505060208201526040805191829003019150f35b34801561051857600080fd5b506101af610e7b565b61021e600435602435610e81565b34801561053b57600080fd5b506040805160c081810190925261021e91369160049160c491908390600690839083908082843750939650610ee695505050505050565b34801561057e57600080fd5b50610478610fb3565b34801561059357600080fd5b5061059f600435610fca565b60408051600160a060020a039094168452602084019290925282820152519081900360600190f35b3480156105d357600080fd5b50604080516020601f60843560048181013592830184900484028501840190955281845261021e94600160a060020a03813516946024803595604435956064359536959460a494909391019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a999881019791965091820194509250829150840183828082843750949750610ff29650505050505050565b604080516020600460443581810135601f810184900484028501840190955284845261021e94823594602480359536959460649492019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497506110c19650505050505050565b34801561071657600080fd5b506103f161132e565b34801561072b57600080fd5b506101af61133d565b34801561074057600080fd5b50610749611343565b604051808260c080838360005b8381101561076e578181015183820152602001610756565b5050505090500191505060405180910390f35b61021e60043560243561138a565b34801561079b57600080fd5b5061021e6004356115b9565b3480156107b357600080fd5b5061021e600160a060020a0360043516611663565b3480156107d457600080fd5b506107dd611701565b604080519115158252519081900360200190f35b3480156107fd57600080fd5b506103f1600435602435611711565b61021e6004356024356044356117a3565b34801561082957600080fd5b5061021e6118d8565b34801561083e57600080fd5b5061021e6134de565b600c5481565b600080600061085a614697565b50505060009182525060036020908152604091829020825160608101845281548082526001830154938201849052600290920154930183905292909190565b600154600160a060020a03163314806108bc5750600054600160a060020a031633145b15156108c757600080fd5b6108d2838383613580565b50505050565b60085481565b6060806000806108ec6146b9565b6000878152600760209081526040808320898452825291829020825160608101845281548152600180830180548651600293821615610100026000190190911692909204601f81018690048602830186019096528582529194929385810193919291908301828280156109a05780601f10610975576101008083540402835291602001916109a0565b820191906000526020600020905b81548152906001019060200180831161098357829003601f168201915b5050509183525050600282810180546040805160206001841615610100026000190190931694909404601f81018390048302850183019091528084529381019390830182828015610a325780601f10610a0757610100808354040283529160200191610a32565b820191906000526020600020905b815481529060010190602001808311610a1557829003601f168201915b5050505050815250509050610a4a8160000151613711565b90935091508115610a5b5781610a64565b6611c37937e080005b9150600160a060020a03831615610a7b5782610a88565b600054600160a060020a03165b925080604001519450806020015193505092959194509250565b6bffffffffffffffffffffffff811660a060020a02600160a060020a03831617805b5092915050565b600080600080600080600080610adf614697565b506000898152600360209081526040918290208251606081018452815480825260018301549382019390935260029091015492810192909252610b2190613711565b6020830151919a509850610b3490613711565b60408301519198509650610b4790613739565b9b9d9a9c50989a979991989097909650945092505050565b600154600160a060020a031681565b600154600160a060020a0316331480610b915750600054600160a060020a031633145b1515610b9c57600080fd5b604080516101008101825260008054600160a060020a03166080830190815260a0830182905260c0830182905260e0830182905282526611c37937e0800060208084019190915282840185905260608301829052600854825260069052919091208151610c0c90829060046146db565b50602082810151600483015560408084015160058401556060909301516006909201805460ff1916921515929092179091556008805460018101909155825190815290810183905281517f04cdb7765ff1f03edce753a5ecf2102f5711ee6836cceab06fcb5c25631f7954929181900390910190a150565b600054600160a060020a03163314610c9b57600080fd5b600160a060020a0381161515610cb057600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360008054600160a060020a031916600160a060020a0392909216919091179055565b600154600160a060020a0316331480610d2e5750600054600160a060020a031633145b1515610d3957600080fd5b6001805474ff0000000000000000000000000000000000000000191660a060020a8315159081029190911790915560408051338152602081019290925280517fd1b3ccafda2b2f8613e51c6ac4f6e844932f92b0058df6d7ee800b152f55a00d9281900390910190a150565b6000818152600460205260408120548190610dbf90613711565b9094909350915050565b60095481565b610dd7614733565b600080610de2614752565b600085815260066020526040908190208151610100810190925281608081018260048282826020028201915b8154600160a060020a03168152600190910190602001808311610e0e5750505091835250506004820154602080830191909152600583015460408084019190915260069093015460ff16151560609092019190915282519083015192909101519097919650945092505050565b600b5481565b60015460a060020a900460ff1615610e9857600080fd5b811515610eac57610ea761379b565b610ee2565b6001821415610ebe57610ea7816138d5565b6002821415610ed057610ea781613a4b565b6003821415610ee257610ee281613c04565b5050565b600154600160a060020a0316331480610f095750600054600160a060020a031633145b1515610f1457600080fd5b805115610f22578051610f26565b600d545b600d55602081015115610f3d576020810151610f41565b600e545b600e55604081015115610f58576040810151610f5c565b600f545b600f55606081015115610f73576060810151610f77565b6010545b601055608081015115610f8e576080810151610f92565b6011545b60115560a081015115610fa95760a0810151610fad565b6012545b60125550565b600080610fc1600254613711565b90939092509050565b60008181526005602052604081205481908190610fe690613f25565b91969195509350915050565b600154600090600160a060020a03163314806110185750600054600160a060020a031633145b151561102357600080fd5b61102c87613f64565b801561103757508515155b151561104257600080fd5b61104c8787610aa2565b60408051606081018252828152602080820186815282840188905260008a8152600783528481208a8252835293909320825181559251805194955091936110999260018501920190614783565b50604082015180516110b5916002840191602090910190614783565b50505050505050505050565b6000806000806000806000806000600160149054906101000a900460ff161515156110eb57600080fd5b60008d81526007602090815260408083208f845290915290205461110e90613711565b98509850876000146111205787611129565b6611c37937e080005b9750600160a060020a03891615611140578861114d565b600054600160a060020a03165b985061115f348963ffffffff613f7216565b965061116b8d8d613f84565b151561117657600080fd5b8c151561118257600080fd5b601054600e54600d540101606490810196506111a4898863ffffffff613f9f16565b8115156111ad57fe5b049450856111c6600d548a613f9f90919063ffffffff16565b8115156111cf57fe5b049350856111e86010548a613f9f90919063ffffffff16565b8115156111f157fe5b049250828401880391506112053386610aa2565b90506060604051908101604052808281526020018b81526020018c815250600760008f815260200190815260200160002060008e815260200190815260200160002060008201518160000155602082015181600101908051906020019061126d929190614783565b5060408201518051611289916002840191602090910190614783565b5050604080518f8152602081018f90523381830152600160a060020a038c166060820152608081018b905290517fed9697d697377066f602632dbc407fbf90d3bad230e7f25cc21aeac8019f827492509081900360a00190a16112f56112ef8e8e611711565b85613fca565b60005461130b90600160a060020a031684613fca565b6113158983613fca565b61131f3388613fca565b50505050505050505050505050565b600054600160a060020a031681565b600a5481565b61134b6147fd565b60c060405190810160405280600d548152602001600e548152602001600f54815260200160105481526020016011548152602001601254815250905090565b6000806000806000806000600160149054906101000a900460ff161515156113b157600080fd5b3332146113bd57600080fd5b6113c93360038a61401e565b15156113d457600080fd5b6000888152600660208190526040909120015460ff16156113f457600080fd5b60008981526003602052604090206002015461140f9061404d565b60008b815260036020526040902060020154919850965061142f9061407e565b151561143a57600080fd5b600b8054600019019055600c80546001019055611457338961409b565b60008a8152600360205260409020600181019190915554600160a060020a03169450611482896140bf565b9350836001146114925733611494565b845b60008a8152600360205260409020549093506114b290849088614232565b506000898152600360205260409020600101546114d190849088614232565b506010546064906114f9906114ed8a600263ffffffff613f9f16565b9063ffffffff613f9f16565b81151561150257fe5b0491506115268261151a89600263ffffffff613f9f16565b9063ffffffff613f7216565b90506115328985614275565b604080518a8152600160a060020a038516602082015281517fee5eda7d4bc9f5e4bc6db101e046920476dafec9794c3c31ce87677e8a734551929181900390910190a161158e33611589348a63ffffffff613f7216565b613fca565b6000546115a490600160a060020a031683613fca565b6115ae8382613fca565b505050505050505050565b600154600160a060020a03163314806115dc5750600054600160a060020a031633145b15156115e757600080fd5b60005461160590600160a060020a0316662386f26fc10000836142e4565b6009805460009081526005602090815260409182902093909355815460018101909255805191825291810183905281517f4eed356ce980e19ea77547887d9dcaad0d384d4eba9c9e32be462c7f4a7cc4b1929181900390910190a150565b600154600160a060020a03163314806116865750600054600160a060020a031633145b151561169157600080fd5b61169a81613f64565b15156116a557600080fd5b600154604051600160a060020a038084169216907f9cb45c728de594dab506a1f1a8554e24c8eeaf983618d5ec5dd7bc6f3c49feee90600090a360018054600160a060020a031916600160a060020a0392909216919091179055565b60015460a060020a900460ff1681565b600082151561172c5750600254600160a060020a031661179d565b60018314156117535750600081815260046020526040902054600160a060020a031661179d565b600283141561177a5750600081815260056020526040902054600160a060020a031661179d565b600383141561179d5750600081815260066020526040902054600160a060020a03165b92915050565b60015460009060a060020a900460ff16156117bd57600080fd5b6117cd348463ffffffff613f7216565b90506117db3360038661401e565b15156117e657600080fd5b6000848152600660208190526040909120015460ff161561180657600080fd5b600084815260066020819052604090912001805460ff1916600117905561182d338561409b565b600c54600b5401600090815260036020526040812091909155611854908490846001614345565b600c8054600b80549091016000908152600360209081526040918290206002019490945581546001808201909355925481519301909101825233928201929092528082018690526060810185905290517f9f3d2016362a557fe42fc00b84031dd0d51054378aee0929c635e566007ab40a9181900360800190a16108d23382613fca565b600154600160a060020a03163314806118fb5750600054600160a060020a031633145b151561190657600080fd5b60135460ff161561191657600080fd5b6013805460ff191660011790557b052afc75504bb800aebe42970dbb7d20cf7809dcf92e3a312b18e19c6002557b08380ff5038a0000e7eca2a94e9d59848f3c1e1ffaacd881d4c3a4f27f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec557b08380ff5038a0000327bfb6286026bd1a017ba6693e0f47c8b98731b7fabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05557b0544c20615f60000ef764bac8a438e7e498c2e5fccf0f174c3e3f8db7f91da3fd0782e51c6b3986e9e672fd566868e71f3dbc2d6c2cd6fbb3e361af2a7557b036096a1708a0000ef764bac8a438e7e498c2e5fccf0f174c3e3f8db7f2e174c10e159ea99b867ce3205125c24a42d128804e4070ed6fcc8cc98166aa0557b016345785d8a00003177abbe93422c9525652b5d4e1101a248a997767f1a1e6821cde7d0159c0d293177871e09677b4e42307c7db3ba94f8648a5a050f8190557b036096a1708a0000e9cfdadea5fa5475861b62aa7d5daa493c3771227f04cde762ef08b6b6c5ded8e8c4c0b3f4e5c9ad7342c88fcc93681b4588b73f05557fc59312466997bb42aaaf719ece141047820e6b34531e1670dc1852a453648f0f8190557fbeb3bad75134cb432e5707980e3245c52c5998a1125ee30f2f0dbf3925b1e551556008600a557b2bba4416770700007396176ac6c1ef05d57180e7733b9188b3571d9a7f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc557b1bacfa7c654200003130259deedb3052e24fad9d5e1f490cb8cccaa07f1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b557b118429e08ddc0000a2381223639181689cd6c46d38a1a4884bb6d83c7f89832631fb3c3307a103ba2c84ab569c64d6182a18893dcd163f0f1c2090733a8190557fa9bc9a3a348c357ba16b37005d7e6b3236198c0e939f4af8c5f19b8deeb8ebc0557b2bba441677070001049bed1598655b64f09e4835084fbc502ab1ad867f3eec716f11ba9e820c81ca75eb978ffb45831ef8b7a53e5e422c26008e1ca6d5557b2bba441677070001d17e2bfe196470a9fefb567e8f5992214eb42f247f458b30c2d72bfd2c6317304a4594ecbafe5f729d3111b65fdc3a33bd48e5432d557b0b161406058800027396176ac6c1ef05d57180e7733b9188b3571d9a7f069400f22b28c6c362558d92f66163cec5671cba50b61abd2eecfcd0eaeac518557b070440856e700002a2381223639181689cd6c46d38a1a4884bb6d83c7feddb6698d7c569ff62ff64f1f1492bf14a54594835ba0faac91f84b4f5d81460557b0b161406058800037396176ac6c1ef05d57180e7733b9188b3571d9a7ffb33122aa9f93cc639ebe80a7bc4784c11e6053dde89c6f4f7e268c6a623da1e557b070440856e700003a2381223639181689cd6c46d38a1a4884bb6d83c7fc0a4a8be475dfebc377ebef2d7c4ff47656f572a08dd92b81017efcdba0febe1557b070440856e7000055e4b61220039823aef8a54efbe47773194494f777fa18b128af1c8fc61ff46f02d146e54546f34d340574cf2cef6a753cba6b6701d557b0b161406058800055e4b61220039823aef8a54efbe47773194494f777f40f28f99a40bc9f6beea1013afdbc3cdcc689eb76b82c4de06c0acf1e1932ed5557b0470de4df82000063177abbe93422c9525652b5d4e1101a248a997767ff907e7e6656fa73566b18c1215272fe9fca2c55c552e62c923e21e000ac4b4e655600d6009556040805161010081018252733177abbe93422c9525652b5d4e1101a248a9977660808201908152735c035bb4cb7dacbfee076a5e61aa39a10da2e95660a0830152600060c0830181905260e08301819052908252662e9e63b4be2000602083810191909152928201819052606082018190528052600690915280517f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f890611ed190829060046146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252737396176ac6c1ef05d57180e7733b9188b3571d9a608082019081527371f35825a3b1528859dfa1a64b24242bc0d1299060a0830152600060c0830181905260e08301819052908252662e9e63b4be2000828601529181018290529485018190526001905291905281517f3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a3191611fa69183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff19169115159190911790558051610100810182527371f35825a3b1528859dfa1a64b24242bc0d1299060808201908152600060a0830181905260c0830181905260e08301819052908252661cc6e836ae4000828601529181018290529485018190526002905291905281517f8819ef417987f8ae7a81f42cdfb18815282fe989326fbff903d13cf0e03ace29916120689183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff19169115159190911790558051610100810182527365a05c896d9a6f428b3936ac5db8df28752ccd44608082019081527371f35825a3b1528859dfa1a64b24242bc0d1299060a0830152600060c0830181905260e08301819052908252662e9e63b4be2000828601529181018290529485018190526003905291905281517f75f96ab15d697e93042dc45b5c896c4b27e89bb6eaf39475c5c371cb2513f7d29161213d9183916146db565b506020828101516004838101919091556040808501516005808601919091556060958601516006958601805460ff1916911515919091179055815161010081018352733177abbe93422c9525652b5d4e1101a248a9977660808201908152600060a0830181905260c0830181905260e08301819052908252662386f26fc10000828701529281019190915294850181905281905291905281517fc5069e24aaadb2addc3e52e868fcf3f4f8acf5a87e24300992fd4540c2a87eed916122039183916146db565b506020828101516004838101919091556040808501516005808601919091556060958601516006958601805460ff1916911515919091179055815161010081018352733177abbe93422c9525652b5d4e1101a248a9977660808201908152600060a0830181905260c0830181905260e08301819052908252662386f26fc1000082870152600193820193909352958601829052905291905281517fbfd358e93f18da3ed276c3afdbdba00b8f0b6008a03476a6a86bd6320ee6938b916122ca9183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252733177abbe93422c9525652b5d4e1101a248a9977660808201908152600060a0830181905260c0830181905260e08301819052908252662386f26fc100008286015291810183905294850181905283905291905281517f697b2bd7bb2984c4e0dc14c79c987d37818484a62958b9c45a0e8b962f20650f9161238b9183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff19169115159190911790558051610100810182527362d5be95c330b512b35922e347319afd708da98160808201908152600060a0830181905260c0830181905260e0830181905290825266398dd06d5c8000828601529181018390529485018190526007905291905281517f4ced6d0d36392b04cc5d8761b1327b3bbba6e1089c77f60a9a9ca18e05e4f00e9161244d9183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252733130259deedb3052e24fad9d5e1f490cb8cccaa060808201908152733177abbe93422c9525652b5d4e1101a248a9977660a0830152600060c0830181905260e0830181905290825266398dd06d5c8000828601529181018590529485018190526008905291905281517fb8d683c9d414f481826f3e7fe14b3ac6ae8c73450778287390c4bb8cb9f2e80b916125229183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff19169115159190911790558051610100810182527319fc7935fd9d0bc335b4d0df3be86ed51ad2e62a6080820190815273558f42baf1a9352a955d301fa644ad0f619b97d960a0830152735e4b61220039823aef8a54efbe47773194494f7760c0830152737396176ac6c1ef05d57180e7733b9188b3571d9a60e08301528152664e57aaf7fc600081850152600a918101919091526000948101859052600990945291905281517fca4d0c6c94a9477136dd41a99cc19ecbe441c8f6609efe7c6fa65be007a47323916126209183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff191691151591909117905580516101008101825273504af27f1cef15772370b7c04b5d9d593ee729f5608082019081527319fc7935fd9d0bc335b4d0df3be86ed51ad2e62a60a083015273558f42baf1a9352a955d301fa644ad0f619b97d960c0830152735e4b61220039823aef8a54efbe47773194494f7760e0830152815266839d85a09dc00081850152600b918101919091526000948101859052600a90945291905281517f4da38fc8e544afc56a4c2a17752b8ddb67d8e23ac4583c9029d2e2d1dbe6c9889161271e9183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252737396176ac6c1ef05d57180e7733b9188b3571d9a60808201908152735e4b61220039823aef8a54efbe47773194494f7760a0830152600060c0830181905260e08301819052908252661cc6e836ae400082860152918101839052948501819052600b905291905281517f85291c2e7881182c13e19eca9b58927ebfdc2c5d04882018eeb33d8241d35711916127f39183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252735632ca98e5788eddb2397757aa82d1ed6171e5ad60808201908152737396176ac6c1ef05d57180e7733b9188b3571d9a60a0830152600060c0830181905260e08301819052908252661cc6e836ae400082860152600792820192909252948501819052600c905291905281517f0b94fa1b86997cc1f1148bfbe25b674e8cefc7cc6f976aa8d7c7966bd4cca347916128cb9183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252735632ca98e5788eddb2397757aa82d1ed6171e5ad60808201908152735e4b61220039823aef8a54efbe47773194494f7760a0830152600060c0830181905260e08301819052908252661cc6e836ae400082860152600a92820192909252948501819052600d905291905281517f248457bacb20e239ae314d8db91c0f270e453c28ee138c84f97aea6cfcf9a499916129a39183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff191691151591909117905580516101008101825273504af27f1cef15772370b7c04b5d9d593ee729f560808201908152735e4b61220039823aef8a54efbe47773194494f7760a0830152600060c0830181905260e08301819052908252661cc6e836ae400082860152600b92820192909252948501819052600e905291905281517faca6cdb4b5fe0ec50731a73f714dd191dc1911bfeb3f9eeb9e94ed0f6065ef8d91612a7b9183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252735632ca98e5788eddb2397757aa82d1ed6171e5ad60808201908152735e4b61220039823aef8a54efbe47773194494f7760a0830152600060c0830181905260e08301819052908252661cc6e836ae400082860152600892820192909252948501819052600f905291905281517ff130046d53bc87538ab17e4752ba5f5082985eecc06ccb932c5a55e8242dd50291612b539183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252733177abbe93422c9525652b5d4e1101a248a997766080820190815273558f42baf1a9352a955d301fa644ad0f619b97d960a0830152600060c0830181905260e08301819052908252661cc6e836ae4000828601526009928201929092529485018190526010905291905281517f6fac4587033fa036e2426ad0134940d3a683633cc2b2b7862f39195344f163d191612c2b9183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252735632ca98e5788eddb2397757aa82d1ed6171e5ad6080820190815273558f42baf1a9352a955d301fa644ad0f619b97d960a0830152600060c0830181905260e08301819052908252661cc6e836ae4000828601526002928201929092529485018190526011905291905281517f84a4048ee77615560f9afb39551a46e123dd0dd6c928af241dc565271d03256991612d039183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252735632ca98e5788eddb2397757aa82d1ed6171e5ad608082019081527319fc7935fd9d0bc335b4d0df3be86ed51ad2e62a60a0830152600060c0830181905260e08301819052908252661cc6e836ae4000828601526003928201929092529485018190526012905291905281517fee4750d043edce57577a49a1f0c4b389e3b8c38c27dc693bc6b7154c0728077191612ddb9183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff191691151591909117905580516101008101825273308e9c99ac194101c971ffcaca897ac943843de8608082019081527319fc7935fd9d0bc335b4d0df3be86ed51ad2e62a60a0830152600060c0830181905260e08301819052908252661cc6e836ae4000828601529181018590529485018190526013905291905281517fb72a5233413dd9985e70abb239a7ba917e489fbf2ece87f523c6e26971cc821f91612eb09183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252735632ca98e5788eddb2397757aa82d1ed6171e5ad6080820190815273e9cfdadea5fa5475861b62aa7d5daa493c37712260a0830152600060c0830181905260e08301819052908252661cc6e836ae400082860152600a928201929092529485018190526014905291905281517f098d468efb4f874d617491296c759dc9ae46efb517fe36bcf30699ad3f714c0f91612f889183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff191691151591909117905580516101008101825273308e9c99ac194101c971ffcaca897ac943843de860808201908152733177abbe93422c9525652b5d4e1101a248a9977660a0830152600060c0830181905260e08301819052908252661cc6e836ae4000828601529181018290529485018190526015905291905281517feda6feebfb4ffb7de2d0dc45a13b92dc953c2ed6ee96fa7fe8179e7c4266747f9161305d9183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252735632ca98e5788eddb2397757aa82d1ed6171e5ad6080820190815273308e9c99ac194101c971ffcaca897ac943843de860a0830152600060c0830181905260e08301819052908252661cc6e836ae400082860152600c928201929092529485018190526016905291905281517f7d35cc2b0520994422695eb24e3bf4f74e9cba2704cae72ecd9ec54409a56afb916131359183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff191691151591909117905580516101008101825273ac2b4b94eca37cb7c9cf7062fefb2792c57927316080820190815273263b604509d6a825719859ee458b2d91fb7d330d60a0830152733177abbe93422c9525652b5d4e1101a248a9977660c0830152600060e08301819052908252662f31ba4532400082860152600c928201929092529485018190526017905291905281517f84f72166cd6dc886f96a4867c4575af2a636c629c04227c9418bfffa7a09a9ed916132209183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252735632ca98e5788eddb2397757aa82d1ed6171e5ad6080820190815273308e9c99ac194101c971ffcaca897ac943843de860a0830152600060c0830181905260e08301819052908252661cc6e836ae4000828601526002928201929092529485018190526018905291905281517f7ca528807b45d0675df0059116d2304ca9c7f495d9ab623cd80c79f11948b856916132f89183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252735632ca98e5788eddb2397757aa82d1ed6171e5ad6080820190815273504af27f1cef15772370b7c04b5d9d593ee729f560a0830152600060c0830181905260e08301819052908252661cc6e836ae400082860152600c928201929092529485018190526019905291905281517ff377e614ebf060ffd3a592667b14b65ef761b258b68bf422a9c7bfae70ee46e2916133d09183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252739bd750685bf5bfce24d1b8de03a1ff3d2631ef5a60808201908152733177abbe93422c9525652b5d4e1101a248a9977660a0830152600060c0830181905260e08301819052908252661cc6e836ae400082860152600b92820192909252948501819052601a905291905281517f2d88733daa8d83575c1c435b1a4140007e667f8dfbe2e5678ffec947a513e5cd916134a89183916146db565b5060208201516004820155604082015160058201556060909101516006909101805460ff1916911515919091179055601b600855565b600154600160a060020a03163314806135015750600054600160a060020a031633145b151561350c57600080fd5b60005461352a90600160a060020a031667016345785d8a0000610aa2565b600a8054600090815260046020908152604091829020939093558154600181019092558051918252517fe536f9ebee2df81f2fd45936316633380f27a487a21914f44fcd1be0cbeb92f3929181900390910190a1565b60008061358d8484613f84565b151561359857600080fd5b6135a28484611711565b905080600160a060020a031685600160a060020a031614156135c3576136b9565b8315156135ea5760028054600160a060020a031916600160a060020a0387161790556136b9565b600184141561361f5760008381526004602052604090208054600160a060020a031916600160a060020a0387161790556136b9565b60028414156136545760008381526005602052604090208054600160a060020a031916600160a060020a0387161790556136b9565b60038414156136b9576000838152600660205260409020600281018054600383018054600160a060020a0319908116600160a060020a038085169190911790925560018501805493821684841617909455845492811683831617909355881691161790555b6040805185815260208101859052600160a060020a03808816828401528316606082015290517f757cbc4f2614cb83d98b4f0c93f5e2a81a376e6157c55c46063a4591b4a4d92d9181900360800190a1509392505050565b600160a060020a038116600060a060020a83046bffffffffffffffffffffffff169050915091565b6fffffffffffffffffffffffffffffffff81169160037001000000000000000000000000000000008304811692600170040000000000000000000000000000000082041615159270080000000000000000000000000000000090910490911690565b6000806000806000806000600160149054906101000a900460ff161515156137c257600080fd5b6137ca610fb3565b90975095506137df348763ffffffff613f7216565b945033600160a060020a03881614156137f757600080fd5b601054600e5481016064019450849061381790889063ffffffff613f9f16565b81151561382057fe5b0492508286039150606461383a878663ffffffff613f9f16565b81151561384357fe5b04905061385233600080613580565b5061385f600080836143da565b60408051600080825260208201523381830152600160a060020a038916606082015260808101889052905160008051602061485e8339815191529181900360a00190a16000546138b890600160a060020a031684613fca565b6138c28783613fca565b6138cc3386613fca565b50505050505050565b600080600080600080600080600160149054906101000a900460ff161515156138fd57600080fd5b61390689610da5565b909850965061391b348863ffffffff613f7216565b955033600160a060020a038916141561393357600080fd5b600f54601054600e54010160649081019550613955888763ffffffff613f9f16565b81151561395e57fe5b04935061396d3360018b613580565b5061397a60018a866143da565b84613990600f5489613f9f90919063ffffffff16565b81151561399957fe5b049250846139b260105489613f9f90919063ffffffff16565b8115156139bb57fe5b6040805160018152602081018d90523381830152600160a060020a038c166060820152608081018b905290519290910493508484018903925060008051602061485e833981519152919081900360a00190a1613a21613a1b600080611711565b84613fca565b600054613a3790600160a060020a031683613fca565b613a418882613fca565b6115ae3387613fca565b600080600080600080600080600080600160149054906101000a900460ff16151515613a7657600080fd5b613a7f8b610fca565b919b5099509750613a96348a63ffffffff613f7216565b965033600160a060020a038b161415613aae57600080fd5b600f54601154601054600e54606401010101955085613ad86011548b613f9f90919063ffffffff16565b811515613ae157fe5b04945085613afa600f548b613f9f90919063ffffffff16565b811515613b0357fe5b04935085613b1c6010548b613f9f90919063ffffffff16565b811515613b2557fe5b0492506064613b3a8a8863ffffffff613f9f16565b811515613b4357fe5b0491505083830182018803613b5a3360028d613580565b50613b6760028c846143da565b6040805160028152602081018d90523381830152600160a060020a038c166060820152608081018b9052905160008051602061485e8339815191529181900360a00190a1613bb96112ef600080611711565b613bcd613bc760018a611711565b86613fca565b600054613be390600160a060020a031684613fca565b613bed8a82613fca565b613bf73388613fca565b5050505050505050505050565b613c0c614752565b6000828152600660205260408082208151610100810190925282918291829182918291829182919081608081018260048282826020028201915b8154600160a060020a03168152600190910190602001808311613c46575050509183525050600482015460208201526005820154604082015260069091015460ff16151560609182015281015190995015613ca057600080fd5b6020890151613cb690349063ffffffff613f7216565b895151909850600160a060020a0316331415613cd157600080fd5b613cda8a6144c7565b60125402601154600202600f54601054600e5460640101010101965086613d106011548b60200151613f9f90919063ffffffff16565b811515613d1957fe5b04955086613d366012548b60200151613f9f90919063ffffffff16565b811515613d3f57fe5b04945086613d5c600f548b60200151613f9f90919063ffffffff16565b811515613d6557fe5b04935086613d826010548b60200151613f9f90919063ffffffff16565b811515613d8b57fe5b049250838387600202613d9d8d6144c7565b8802010101896020015103915060a060020a600560008b60400151815260200190815260200160002054811515613dd057fe5b04601f16905060008051602061485e83398151915260038b338c600001516000600481101515613dfc57fe5b60200201518d602001516040518086815260200185815260200184600160a060020a0316600160a060020a0316815260200183600160a060020a0316600160a060020a031681526020018281526020019550505050505060405180910390a1613e673360038c613580565b50613e9660038b6064613e878b8e60200151613f9f90919063ffffffff16565b811515613e9057fe5b046143da565b613eaa613ea4600183611711565b87613fca565b613ebc613ea460028b60400151611711565b885151613ec99083613fca565b8851613edd9060015b602002015186613fca565b8851613eea906002613ed2565b8851613ef7906003613ed2565b613f056112ef600080611711565b600054613f1b90600160a060020a031684613fca565b6110b53389613fca565b600160a060020a0381169160a060020a8204601f16917420000000000000000000000000000000000000000090046b07ffffffffffffffffffffff1690565b600160a060020a0316151590565b600082821115613f7e57fe5b50900390565b6000613f98613f938484611711565b613f64565b9392505050565b600080831515613fb25760009150610ac4565b50828202828482811515613fc257fe5b0414613f9857fe5b613fd382613f64565b8015613fde57508015155b15610ee257604051600160a060020a0383169082156108fc029083906000818181858888f19350505050158015614019573d6000803e3d6000fd5b505050565b60008061402b8484611711565b905080600160a060020a031685600160a060020a03161491505b509392505050565b6fffffffffffffffffffffffffffffffff811691700400000000000000000000000000000000909104600116151590565b700800000000000000000000000000000000900460031660011490565b6bffffffffffffffffffffffff1660a060020a02600160a060020a03919091161790565b60006140c9614697565b6000806000806000806000600360008b8152602001908152602001600020606060405190810160405290816000820154815260200160018201548152602001600282015481525050975061412a60036141258a600001516145be565b6145d6565b965061413e60036141258a602001516145be565b9550614150878763ffffffff61468816565b9450600019430193508461416b88600263ffffffff613f9f16565b10614176578661417b565b600285045b92508460001981151561418a57fe5b604080518740602080830182905283518084038201815292840193849052825195909404965094508686029390928291908401908083835b602083106141e15780518252601f1990920191602091820191016141c2565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020600190041161421e576001614221565b60025b60ff169a9950505050505050505050565b60008061423e846145be565b600081815260066020819052604090912001805460ff19169055905082156140455761426c85600383613580565b50509392505050565b60009182526003602081905260409092206002018054700300000000000000000000000000000000197018000000000000000000000000000000001990911670180000000000000000000000000000000017169190921670010000000000000000000000000000000002179055565b742000000000000000000000000000000000000000006b07ffffffffffffffffffffff90921691909102600160a060020a039290921660a060020a601f929092169190910217741fffffffffffffffffffffffffffffffffffffffff161790565b70180000000000000000000000000000000019700400000000000000000000000000000000196003948516700100000000000000000000000000000000026fffffffffffffffffffffffffffffffff9690961695909517949094166001929092167004000000000000000000000000000000000291909117929092169116700800000000000000000000000000000000021790565b82151561440b5760028054600160a060020a03166bffffffffffffffffffffffff831660a060020a02179055614019565b600183141561444a5760008281526004602052604090208054600160a060020a03166bffffffffffffffffffffffff831660a060020a02179055614019565b60028314156144a85760008281526005602052604090208054741fffffffffffffffffffffffffffffffffffffffff166b07ffffffffffffffffffffff83167420000000000000000000000000000000000000000002179055614019565b6003831415614019576000918252600660205260409091206004015550565b60006144d1614752565b6000838152600660205260408082208151610100810190925281608081018260048282826020028201915b8154600160a060020a031681526001909101906020018083116144fc575050509183525050600482015460208201526005820154604082015260069091015460ff161515606090910152805190925061455c9060015b6020020151613f64565b61456757600061456a565b60015b825160ff91909116915061457f906002614552565b61458a57600061458d565b60015b825160ff9190911691909101906145a5906003614552565b6145b05760006145b3565b60015b60ff16019392505050565b60a060020a90046bffffffffffffffffffffffff1690565b60008215156145ff5760025460a060020a905b046bffffffffffffffffffffffff16905061179d565b60018314156146225760008281526004602052604090205460a060020a906145e9565b6002831415614667576000828152600560205260409020547420000000000000000000000000000000000000000090046b07ffffffffffffffffffffff16905061179d565b600383141561179d5750600090815260066020526040902060040154919050565b600082820183811015613f9857fe5b6060604051908101604052806000815260200160008152602001600081525090565b6060604051908101604052806000815260200160608152602001606081525090565b8260048101928215614723579160200282015b828111156147235782518254600160a060020a031916600160a060020a039091161782556020909201916001909101906146ee565b5061472f92915061481c565b5090565b6080604051908101604052806004906020820280388339509192915050565b60e060405190810160405280614766614733565b815260200160008152602001600081526020016000151581525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106147c457805160ff19168380011785556147f1565b828001600101855582156147f1579182015b828111156147f15782518255916020019190600101906147d6565b5061472f929150614843565b60c0604051908101604052806006906020820280388339509192915050565b61484091905b8082111561472f578054600160a060020a0319168155600101614822565b90565b61484091905b8082111561472f57600081556001016148495600fd18032b1f4495899c97de852a729c98c1c58331a207e8127c9078bcccda6e70a165627a7a723058205b1724d0216572f3e229cda395e6e837ebd1244e0a8b0f9d2b7094e318bff6ed0029
Deployed Bytecode
0x6080604052600436106101955763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630b654e7d811461019a5780630d71aba5146101c1578063119f2c9f146101f7578063297a1f561461022057806329e10c1314610235578063304c69ed1461034e5780633c5f2bf214610372578063481c6a75146103dc5780634cf2010e1461040d5780634fb2e45d1461042557806353ebf6bd1461044657806357d139171461046057806359b09b251461049b5780635e8be190146104b0578063606dc1041461050c57806368fcb6ee146105215780636d8758c71461052f5780637294789b146105725780637a4b7075146105875780637f09171b146105c757806389009ab0146106795780638da5cb5b1461070a5780638e75dd471461071f57806392bc3251146107345780639e6d4cd014610781578063a8cbb5de1461078f578063ba0e930a146107a7578063cf837fad146107c8578063d9dad80d146107f1578063d9e7c8ca1461080c578063e1c7392a1461081d578063ea7873db14610832575b600080fd5b3480156101a657600080fd5b506101af610847565b60408051918252519081900360200190f35b3480156101cd57600080fd5b506101d960043561084d565b60408051938452602084019290925282820152519081900360600190f35b34801561020357600080fd5b5061021e600160a060020a0360043516602435604435610899565b005b34801561022c57600080fd5b506101af6108d8565b34801561024157600080fd5b506102506004356024356108de565b60405180806020018060200185600160a060020a0316600160a060020a03168152602001848152602001838103835287818151815260200191508051906020019080838360005b838110156102af578181015183820152602001610297565b50505050905090810190601f1680156102dc5780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b8381101561030f5781810151838201526020016102f7565b50505050905090810190601f16801561033c5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b34801561035a57600080fd5b506101af600160a060020a0360043516602435610aa2565b34801561037e57600080fd5b5061038a600435610acb565b60408051600160a060020a03998a168152602081019890985295909716868601526060860193909352608085019190915260a0840152151560c083015260e08201929092529051908190036101000190f35b3480156103e857600080fd5b506103f1610b5f565b60408051600160a060020a039092168252519081900360200190f35b34801561041957600080fd5b5061021e600435610b6e565b34801561043157600080fd5b5061021e600160a060020a0360043516610c84565b34801561045257600080fd5b5061021e6004351515610d0b565b34801561046c57600080fd5b50610478600435610da5565b60408051600160a060020a03909316835260208301919091528051918290030190f35b3480156104a757600080fd5b506101af610dc9565b3480156104bc57600080fd5b506104c8600435610dcf565b6040518084608080838360005b838110156104ed5781810151838201526020016104d5565b5050505091909101938452505060208201526040805191829003019150f35b34801561051857600080fd5b506101af610e7b565b61021e600435602435610e81565b34801561053b57600080fd5b506040805160c081810190925261021e91369160049160c491908390600690839083908082843750939650610ee695505050505050565b34801561057e57600080fd5b50610478610fb3565b34801561059357600080fd5b5061059f600435610fca565b60408051600160a060020a039094168452602084019290925282820152519081900360600190f35b3480156105d357600080fd5b50604080516020601f60843560048181013592830184900484028501840190955281845261021e94600160a060020a03813516946024803595604435956064359536959460a494909391019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a999881019791965091820194509250829150840183828082843750949750610ff29650505050505050565b604080516020600460443581810135601f810184900484028501840190955284845261021e94823594602480359536959460649492019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497506110c19650505050505050565b34801561071657600080fd5b506103f161132e565b34801561072b57600080fd5b506101af61133d565b34801561074057600080fd5b50610749611343565b604051808260c080838360005b8381101561076e578181015183820152602001610756565b5050505090500191505060405180910390f35b61021e60043560243561138a565b34801561079b57600080fd5b5061021e6004356115b9565b3480156107b357600080fd5b5061021e600160a060020a0360043516611663565b3480156107d457600080fd5b506107dd611701565b604080519115158252519081900360200190f35b3480156107fd57600080fd5b506103f1600435602435611711565b61021e6004356024356044356117a3565b34801561082957600080fd5b5061021e6118d8565b34801561083e57600080fd5b5061021e6134de565b600c5481565b600080600061085a614697565b50505060009182525060036020908152604091829020825160608101845281548082526001830154938201849052600290920154930183905292909190565b600154600160a060020a03163314806108bc5750600054600160a060020a031633145b15156108c757600080fd5b6108d2838383613580565b50505050565b60085481565b6060806000806108ec6146b9565b6000878152600760209081526040808320898452825291829020825160608101845281548152600180830180548651600293821615610100026000190190911692909204601f81018690048602830186019096528582529194929385810193919291908301828280156109a05780601f10610975576101008083540402835291602001916109a0565b820191906000526020600020905b81548152906001019060200180831161098357829003601f168201915b5050509183525050600282810180546040805160206001841615610100026000190190931694909404601f81018390048302850183019091528084529381019390830182828015610a325780601f10610a0757610100808354040283529160200191610a32565b820191906000526020600020905b815481529060010190602001808311610a1557829003601f168201915b5050505050815250509050610a4a8160000151613711565b90935091508115610a5b5781610a64565b6611c37937e080005b9150600160a060020a03831615610a7b5782610a88565b600054600160a060020a03165b925080604001519450806020015193505092959194509250565b6bffffffffffffffffffffffff811660a060020a02600160a060020a03831617805b5092915050565b600080600080600080600080610adf614697565b506000898152600360209081526040918290208251606081018452815480825260018301549382019390935260029091015492810192909252610b2190613711565b6020830151919a509850610b3490613711565b60408301519198509650610b4790613739565b9b9d9a9c50989a979991989097909650945092505050565b600154600160a060020a031681565b600154600160a060020a0316331480610b915750600054600160a060020a031633145b1515610b9c57600080fd5b604080516101008101825260008054600160a060020a03166080830190815260a0830182905260c0830182905260e0830182905282526611c37937e0800060208084019190915282840185905260608301829052600854825260069052919091208151610c0c90829060046146db565b50602082810151600483015560408084015160058401556060909301516006909201805460ff1916921515929092179091556008805460018101909155825190815290810183905281517f04cdb7765ff1f03edce753a5ecf2102f5711ee6836cceab06fcb5c25631f7954929181900390910190a150565b600054600160a060020a03163314610c9b57600080fd5b600160a060020a0381161515610cb057600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360008054600160a060020a031916600160a060020a0392909216919091179055565b600154600160a060020a0316331480610d2e5750600054600160a060020a031633145b1515610d3957600080fd5b6001805474ff0000000000000000000000000000000000000000191660a060020a8315159081029190911790915560408051338152602081019290925280517fd1b3ccafda2b2f8613e51c6ac4f6e844932f92b0058df6d7ee800b152f55a00d9281900390910190a150565b6000818152600460205260408120548190610dbf90613711565b9094909350915050565b60095481565b610dd7614733565b600080610de2614752565b600085815260066020526040908190208151610100810190925281608081018260048282826020028201915b8154600160a060020a03168152600190910190602001808311610e0e5750505091835250506004820154602080830191909152600583015460408084019190915260069093015460ff16151560609092019190915282519083015192909101519097919650945092505050565b600b5481565b60015460a060020a900460ff1615610e9857600080fd5b811515610eac57610ea761379b565b610ee2565b6001821415610ebe57610ea7816138d5565b6002821415610ed057610ea781613a4b565b6003821415610ee257610ee281613c04565b5050565b600154600160a060020a0316331480610f095750600054600160a060020a031633145b1515610f1457600080fd5b805115610f22578051610f26565b600d545b600d55602081015115610f3d576020810151610f41565b600e545b600e55604081015115610f58576040810151610f5c565b600f545b600f55606081015115610f73576060810151610f77565b6010545b601055608081015115610f8e576080810151610f92565b6011545b60115560a081015115610fa95760a0810151610fad565b6012545b60125550565b600080610fc1600254613711565b90939092509050565b60008181526005602052604081205481908190610fe690613f25565b91969195509350915050565b600154600090600160a060020a03163314806110185750600054600160a060020a031633145b151561102357600080fd5b61102c87613f64565b801561103757508515155b151561104257600080fd5b61104c8787610aa2565b60408051606081018252828152602080820186815282840188905260008a8152600783528481208a8252835293909320825181559251805194955091936110999260018501920190614783565b50604082015180516110b5916002840191602090910190614783565b50505050505050505050565b6000806000806000806000806000600160149054906101000a900460ff161515156110eb57600080fd5b60008d81526007602090815260408083208f845290915290205461110e90613711565b98509850876000146111205787611129565b6611c37937e080005b9750600160a060020a03891615611140578861114d565b600054600160a060020a03165b985061115f348963ffffffff613f7216565b965061116b8d8d613f84565b151561117657600080fd5b8c151561118257600080fd5b601054600e54600d540101606490810196506111a4898863ffffffff613f9f16565b8115156111ad57fe5b049450856111c6600d548a613f9f90919063ffffffff16565b8115156111cf57fe5b049350856111e86010548a613f9f90919063ffffffff16565b8115156111f157fe5b049250828401880391506112053386610aa2565b90506060604051908101604052808281526020018b81526020018c815250600760008f815260200190815260200160002060008e815260200190815260200160002060008201518160000155602082015181600101908051906020019061126d929190614783565b5060408201518051611289916002840191602090910190614783565b5050604080518f8152602081018f90523381830152600160a060020a038c166060820152608081018b905290517fed9697d697377066f602632dbc407fbf90d3bad230e7f25cc21aeac8019f827492509081900360a00190a16112f56112ef8e8e611711565b85613fca565b60005461130b90600160a060020a031684613fca565b6113158983613fca565b61131f3388613fca565b50505050505050505050505050565b600054600160a060020a031681565b600a5481565b61134b6147fd565b60c060405190810160405280600d548152602001600e548152602001600f54815260200160105481526020016011548152602001601254815250905090565b6000806000806000806000600160149054906101000a900460ff161515156113b157600080fd5b3332146113bd57600080fd5b6113c93360038a61401e565b15156113d457600080fd5b6000888152600660208190526040909120015460ff16156113f457600080fd5b60008981526003602052604090206002015461140f9061404d565b60008b815260036020526040902060020154919850965061142f9061407e565b151561143a57600080fd5b600b8054600019019055600c80546001019055611457338961409b565b60008a8152600360205260409020600181019190915554600160a060020a03169450611482896140bf565b9350836001146114925733611494565b845b60008a8152600360205260409020549093506114b290849088614232565b506000898152600360205260409020600101546114d190849088614232565b506010546064906114f9906114ed8a600263ffffffff613f9f16565b9063ffffffff613f9f16565b81151561150257fe5b0491506115268261151a89600263ffffffff613f9f16565b9063ffffffff613f7216565b90506115328985614275565b604080518a8152600160a060020a038516602082015281517fee5eda7d4bc9f5e4bc6db101e046920476dafec9794c3c31ce87677e8a734551929181900390910190a161158e33611589348a63ffffffff613f7216565b613fca565b6000546115a490600160a060020a031683613fca565b6115ae8382613fca565b505050505050505050565b600154600160a060020a03163314806115dc5750600054600160a060020a031633145b15156115e757600080fd5b60005461160590600160a060020a0316662386f26fc10000836142e4565b6009805460009081526005602090815260409182902093909355815460018101909255805191825291810183905281517f4eed356ce980e19ea77547887d9dcaad0d384d4eba9c9e32be462c7f4a7cc4b1929181900390910190a150565b600154600160a060020a03163314806116865750600054600160a060020a031633145b151561169157600080fd5b61169a81613f64565b15156116a557600080fd5b600154604051600160a060020a038084169216907f9cb45c728de594dab506a1f1a8554e24c8eeaf983618d5ec5dd7bc6f3c49feee90600090a360018054600160a060020a031916600160a060020a0392909216919091179055565b60015460a060020a900460ff1681565b600082151561172c5750600254600160a060020a031661179d565b60018314156117535750600081815260046020526040902054600160a060020a031661179d565b600283141561177a5750600081815260056020526040902054600160a060020a031661179d565b600383141561179d5750600081815260066020526040902054600160a060020a03165b92915050565b60015460009060a060020a900460ff16156117bd57600080fd5b6117cd348463ffffffff613f7216565b90506117db3360038661401e565b15156117e657600080fd5b6000848152600660208190526040909120015460ff161561180657600080fd5b600084815260066020819052604090912001805460ff1916600117905561182d338561409b565b600c54600b5401600090815260036020526040812091909155611854908490846001614345565b600c8054600b80549091016000908152600360209081526040918290206002019490945581546001808201909355925481519301909101825233928201929092528082018690526060810185905290517f9f3d2016362a557fe42fc00b84031dd0d51054378aee0929c635e566007ab40a9181900360800190a16108d23382613fca565b600154600160a060020a03163314806118fb5750600054600160a060020a031633145b151561190657600080fd5b60135460ff161561191657600080fd5b6013805460ff191660011790557b052afc75504bb800aebe42970dbb7d20cf7809dcf92e3a312b18e19c6002557b08380ff5038a0000e7eca2a94e9d59848f3c1e1ffaacd881d4c3a4f27f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec557b08380ff5038a0000327bfb6286026bd1a017ba6693e0f47c8b98731b7fabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05557b0544c20615f60000ef764bac8a438e7e498c2e5fccf0f174c3e3f8db7f91da3fd0782e51c6b3986e9e672fd566868e71f3dbc2d6c2cd6fbb3e361af2a7557b036096a1708a0000ef764bac8a438e7e498c2e5fccf0f174c3e3f8db7f2e174c10e159ea99b867ce3205125c24a42d128804e4070ed6fcc8cc98166aa0557b016345785d8a00003177abbe93422c9525652b5d4e1101a248a997767f1a1e6821cde7d0159c0d293177871e09677b4e42307c7db3ba94f8648a5a050f8190557b036096a1708a0000e9cfdadea5fa5475861b62aa7d5daa493c3771227f04cde762ef08b6b6c5ded8e8c4c0b3f4e5c9ad7342c88fcc93681b4588b73f05557fc59312466997bb42aaaf719ece141047820e6b34531e1670dc1852a453648f0f8190557fbeb3bad75134cb432e5707980e3245c52c5998a1125ee30f2f0dbf3925b1e551556008600a557b2bba4416770700007396176ac6c1ef05d57180e7733b9188b3571d9a7f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc557b1bacfa7c654200003130259deedb3052e24fad9d5e1f490cb8cccaa07f1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b557b118429e08ddc0000a2381223639181689cd6c46d38a1a4884bb6d83c7f89832631fb3c3307a103ba2c84ab569c64d6182a18893dcd163f0f1c2090733a8190557fa9bc9a3a348c357ba16b37005d7e6b3236198c0e939f4af8c5f19b8deeb8ebc0557b2bba441677070001049bed1598655b64f09e4835084fbc502ab1ad867f3eec716f11ba9e820c81ca75eb978ffb45831ef8b7a53e5e422c26008e1ca6d5557b2bba441677070001d17e2bfe196470a9fefb567e8f5992214eb42f247f458b30c2d72bfd2c6317304a4594ecbafe5f729d3111b65fdc3a33bd48e5432d557b0b161406058800027396176ac6c1ef05d57180e7733b9188b3571d9a7f069400f22b28c6c362558d92f66163cec5671cba50b61abd2eecfcd0eaeac518557b070440856e700002a2381223639181689cd6c46d38a1a4884bb6d83c7feddb6698d7c569ff62ff64f1f1492bf14a54594835ba0faac91f84b4f5d81460557b0b161406058800037396176ac6c1ef05d57180e7733b9188b3571d9a7ffb33122aa9f93cc639ebe80a7bc4784c11e6053dde89c6f4f7e268c6a623da1e557b070440856e700003a2381223639181689cd6c46d38a1a4884bb6d83c7fc0a4a8be475dfebc377ebef2d7c4ff47656f572a08dd92b81017efcdba0febe1557b070440856e7000055e4b61220039823aef8a54efbe47773194494f777fa18b128af1c8fc61ff46f02d146e54546f34d340574cf2cef6a753cba6b6701d557b0b161406058800055e4b61220039823aef8a54efbe47773194494f777f40f28f99a40bc9f6beea1013afdbc3cdcc689eb76b82c4de06c0acf1e1932ed5557b0470de4df82000063177abbe93422c9525652b5d4e1101a248a997767ff907e7e6656fa73566b18c1215272fe9fca2c55c552e62c923e21e000ac4b4e655600d6009556040805161010081018252733177abbe93422c9525652b5d4e1101a248a9977660808201908152735c035bb4cb7dacbfee076a5e61aa39a10da2e95660a0830152600060c0830181905260e08301819052908252662e9e63b4be2000602083810191909152928201819052606082018190528052600690915280517f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f890611ed190829060046146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252737396176ac6c1ef05d57180e7733b9188b3571d9a608082019081527371f35825a3b1528859dfa1a64b24242bc0d1299060a0830152600060c0830181905260e08301819052908252662e9e63b4be2000828601529181018290529485018190526001905291905281517f3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a3191611fa69183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff19169115159190911790558051610100810182527371f35825a3b1528859dfa1a64b24242bc0d1299060808201908152600060a0830181905260c0830181905260e08301819052908252661cc6e836ae4000828601529181018290529485018190526002905291905281517f8819ef417987f8ae7a81f42cdfb18815282fe989326fbff903d13cf0e03ace29916120689183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff19169115159190911790558051610100810182527365a05c896d9a6f428b3936ac5db8df28752ccd44608082019081527371f35825a3b1528859dfa1a64b24242bc0d1299060a0830152600060c0830181905260e08301819052908252662e9e63b4be2000828601529181018290529485018190526003905291905281517f75f96ab15d697e93042dc45b5c896c4b27e89bb6eaf39475c5c371cb2513f7d29161213d9183916146db565b506020828101516004838101919091556040808501516005808601919091556060958601516006958601805460ff1916911515919091179055815161010081018352733177abbe93422c9525652b5d4e1101a248a9977660808201908152600060a0830181905260c0830181905260e08301819052908252662386f26fc10000828701529281019190915294850181905281905291905281517fc5069e24aaadb2addc3e52e868fcf3f4f8acf5a87e24300992fd4540c2a87eed916122039183916146db565b506020828101516004838101919091556040808501516005808601919091556060958601516006958601805460ff1916911515919091179055815161010081018352733177abbe93422c9525652b5d4e1101a248a9977660808201908152600060a0830181905260c0830181905260e08301819052908252662386f26fc1000082870152600193820193909352958601829052905291905281517fbfd358e93f18da3ed276c3afdbdba00b8f0b6008a03476a6a86bd6320ee6938b916122ca9183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252733177abbe93422c9525652b5d4e1101a248a9977660808201908152600060a0830181905260c0830181905260e08301819052908252662386f26fc100008286015291810183905294850181905283905291905281517f697b2bd7bb2984c4e0dc14c79c987d37818484a62958b9c45a0e8b962f20650f9161238b9183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff19169115159190911790558051610100810182527362d5be95c330b512b35922e347319afd708da98160808201908152600060a0830181905260c0830181905260e0830181905290825266398dd06d5c8000828601529181018390529485018190526007905291905281517f4ced6d0d36392b04cc5d8761b1327b3bbba6e1089c77f60a9a9ca18e05e4f00e9161244d9183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252733130259deedb3052e24fad9d5e1f490cb8cccaa060808201908152733177abbe93422c9525652b5d4e1101a248a9977660a0830152600060c0830181905260e0830181905290825266398dd06d5c8000828601529181018590529485018190526008905291905281517fb8d683c9d414f481826f3e7fe14b3ac6ae8c73450778287390c4bb8cb9f2e80b916125229183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff19169115159190911790558051610100810182527319fc7935fd9d0bc335b4d0df3be86ed51ad2e62a6080820190815273558f42baf1a9352a955d301fa644ad0f619b97d960a0830152735e4b61220039823aef8a54efbe47773194494f7760c0830152737396176ac6c1ef05d57180e7733b9188b3571d9a60e08301528152664e57aaf7fc600081850152600a918101919091526000948101859052600990945291905281517fca4d0c6c94a9477136dd41a99cc19ecbe441c8f6609efe7c6fa65be007a47323916126209183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff191691151591909117905580516101008101825273504af27f1cef15772370b7c04b5d9d593ee729f5608082019081527319fc7935fd9d0bc335b4d0df3be86ed51ad2e62a60a083015273558f42baf1a9352a955d301fa644ad0f619b97d960c0830152735e4b61220039823aef8a54efbe47773194494f7760e0830152815266839d85a09dc00081850152600b918101919091526000948101859052600a90945291905281517f4da38fc8e544afc56a4c2a17752b8ddb67d8e23ac4583c9029d2e2d1dbe6c9889161271e9183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252737396176ac6c1ef05d57180e7733b9188b3571d9a60808201908152735e4b61220039823aef8a54efbe47773194494f7760a0830152600060c0830181905260e08301819052908252661cc6e836ae400082860152918101839052948501819052600b905291905281517f85291c2e7881182c13e19eca9b58927ebfdc2c5d04882018eeb33d8241d35711916127f39183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252735632ca98e5788eddb2397757aa82d1ed6171e5ad60808201908152737396176ac6c1ef05d57180e7733b9188b3571d9a60a0830152600060c0830181905260e08301819052908252661cc6e836ae400082860152600792820192909252948501819052600c905291905281517f0b94fa1b86997cc1f1148bfbe25b674e8cefc7cc6f976aa8d7c7966bd4cca347916128cb9183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252735632ca98e5788eddb2397757aa82d1ed6171e5ad60808201908152735e4b61220039823aef8a54efbe47773194494f7760a0830152600060c0830181905260e08301819052908252661cc6e836ae400082860152600a92820192909252948501819052600d905291905281517f248457bacb20e239ae314d8db91c0f270e453c28ee138c84f97aea6cfcf9a499916129a39183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff191691151591909117905580516101008101825273504af27f1cef15772370b7c04b5d9d593ee729f560808201908152735e4b61220039823aef8a54efbe47773194494f7760a0830152600060c0830181905260e08301819052908252661cc6e836ae400082860152600b92820192909252948501819052600e905291905281517faca6cdb4b5fe0ec50731a73f714dd191dc1911bfeb3f9eeb9e94ed0f6065ef8d91612a7b9183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252735632ca98e5788eddb2397757aa82d1ed6171e5ad60808201908152735e4b61220039823aef8a54efbe47773194494f7760a0830152600060c0830181905260e08301819052908252661cc6e836ae400082860152600892820192909252948501819052600f905291905281517ff130046d53bc87538ab17e4752ba5f5082985eecc06ccb932c5a55e8242dd50291612b539183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252733177abbe93422c9525652b5d4e1101a248a997766080820190815273558f42baf1a9352a955d301fa644ad0f619b97d960a0830152600060c0830181905260e08301819052908252661cc6e836ae4000828601526009928201929092529485018190526010905291905281517f6fac4587033fa036e2426ad0134940d3a683633cc2b2b7862f39195344f163d191612c2b9183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252735632ca98e5788eddb2397757aa82d1ed6171e5ad6080820190815273558f42baf1a9352a955d301fa644ad0f619b97d960a0830152600060c0830181905260e08301819052908252661cc6e836ae4000828601526002928201929092529485018190526011905291905281517f84a4048ee77615560f9afb39551a46e123dd0dd6c928af241dc565271d03256991612d039183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252735632ca98e5788eddb2397757aa82d1ed6171e5ad608082019081527319fc7935fd9d0bc335b4d0df3be86ed51ad2e62a60a0830152600060c0830181905260e08301819052908252661cc6e836ae4000828601526003928201929092529485018190526012905291905281517fee4750d043edce57577a49a1f0c4b389e3b8c38c27dc693bc6b7154c0728077191612ddb9183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff191691151591909117905580516101008101825273308e9c99ac194101c971ffcaca897ac943843de8608082019081527319fc7935fd9d0bc335b4d0df3be86ed51ad2e62a60a0830152600060c0830181905260e08301819052908252661cc6e836ae4000828601529181018590529485018190526013905291905281517fb72a5233413dd9985e70abb239a7ba917e489fbf2ece87f523c6e26971cc821f91612eb09183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252735632ca98e5788eddb2397757aa82d1ed6171e5ad6080820190815273e9cfdadea5fa5475861b62aa7d5daa493c37712260a0830152600060c0830181905260e08301819052908252661cc6e836ae400082860152600a928201929092529485018190526014905291905281517f098d468efb4f874d617491296c759dc9ae46efb517fe36bcf30699ad3f714c0f91612f889183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff191691151591909117905580516101008101825273308e9c99ac194101c971ffcaca897ac943843de860808201908152733177abbe93422c9525652b5d4e1101a248a9977660a0830152600060c0830181905260e08301819052908252661cc6e836ae4000828601529181018290529485018190526015905291905281517feda6feebfb4ffb7de2d0dc45a13b92dc953c2ed6ee96fa7fe8179e7c4266747f9161305d9183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252735632ca98e5788eddb2397757aa82d1ed6171e5ad6080820190815273308e9c99ac194101c971ffcaca897ac943843de860a0830152600060c0830181905260e08301819052908252661cc6e836ae400082860152600c928201929092529485018190526016905291905281517f7d35cc2b0520994422695eb24e3bf4f74e9cba2704cae72ecd9ec54409a56afb916131359183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff191691151591909117905580516101008101825273ac2b4b94eca37cb7c9cf7062fefb2792c57927316080820190815273263b604509d6a825719859ee458b2d91fb7d330d60a0830152733177abbe93422c9525652b5d4e1101a248a9977660c0830152600060e08301819052908252662f31ba4532400082860152600c928201929092529485018190526017905291905281517f84f72166cd6dc886f96a4867c4575af2a636c629c04227c9418bfffa7a09a9ed916132209183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252735632ca98e5788eddb2397757aa82d1ed6171e5ad6080820190815273308e9c99ac194101c971ffcaca897ac943843de860a0830152600060c0830181905260e08301819052908252661cc6e836ae4000828601526002928201929092529485018190526018905291905281517f7ca528807b45d0675df0059116d2304ca9c7f495d9ab623cd80c79f11948b856916132f89183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252735632ca98e5788eddb2397757aa82d1ed6171e5ad6080820190815273504af27f1cef15772370b7c04b5d9d593ee729f560a0830152600060c0830181905260e08301819052908252661cc6e836ae400082860152600c928201929092529485018190526019905291905281517ff377e614ebf060ffd3a592667b14b65ef761b258b68bf422a9c7bfae70ee46e2916133d09183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252739bd750685bf5bfce24d1b8de03a1ff3d2631ef5a60808201908152733177abbe93422c9525652b5d4e1101a248a9977660a0830152600060c0830181905260e08301819052908252661cc6e836ae400082860152600b92820192909252948501819052601a905291905281517f2d88733daa8d83575c1c435b1a4140007e667f8dfbe2e5678ffec947a513e5cd916134a89183916146db565b5060208201516004820155604082015160058201556060909101516006909101805460ff1916911515919091179055601b600855565b600154600160a060020a03163314806135015750600054600160a060020a031633145b151561350c57600080fd5b60005461352a90600160a060020a031667016345785d8a0000610aa2565b600a8054600090815260046020908152604091829020939093558154600181019092558051918252517fe536f9ebee2df81f2fd45936316633380f27a487a21914f44fcd1be0cbeb92f3929181900390910190a1565b60008061358d8484613f84565b151561359857600080fd5b6135a28484611711565b905080600160a060020a031685600160a060020a031614156135c3576136b9565b8315156135ea5760028054600160a060020a031916600160a060020a0387161790556136b9565b600184141561361f5760008381526004602052604090208054600160a060020a031916600160a060020a0387161790556136b9565b60028414156136545760008381526005602052604090208054600160a060020a031916600160a060020a0387161790556136b9565b60038414156136b9576000838152600660205260409020600281018054600383018054600160a060020a0319908116600160a060020a038085169190911790925560018501805493821684841617909455845492811683831617909355881691161790555b6040805185815260208101859052600160a060020a03808816828401528316606082015290517f757cbc4f2614cb83d98b4f0c93f5e2a81a376e6157c55c46063a4591b4a4d92d9181900360800190a1509392505050565b600160a060020a038116600060a060020a83046bffffffffffffffffffffffff169050915091565b6fffffffffffffffffffffffffffffffff81169160037001000000000000000000000000000000008304811692600170040000000000000000000000000000000082041615159270080000000000000000000000000000000090910490911690565b6000806000806000806000600160149054906101000a900460ff161515156137c257600080fd5b6137ca610fb3565b90975095506137df348763ffffffff613f7216565b945033600160a060020a03881614156137f757600080fd5b601054600e5481016064019450849061381790889063ffffffff613f9f16565b81151561382057fe5b0492508286039150606461383a878663ffffffff613f9f16565b81151561384357fe5b04905061385233600080613580565b5061385f600080836143da565b60408051600080825260208201523381830152600160a060020a038916606082015260808101889052905160008051602061485e8339815191529181900360a00190a16000546138b890600160a060020a031684613fca565b6138c28783613fca565b6138cc3386613fca565b50505050505050565b600080600080600080600080600160149054906101000a900460ff161515156138fd57600080fd5b61390689610da5565b909850965061391b348863ffffffff613f7216565b955033600160a060020a038916141561393357600080fd5b600f54601054600e54010160649081019550613955888763ffffffff613f9f16565b81151561395e57fe5b04935061396d3360018b613580565b5061397a60018a866143da565b84613990600f5489613f9f90919063ffffffff16565b81151561399957fe5b049250846139b260105489613f9f90919063ffffffff16565b8115156139bb57fe5b6040805160018152602081018d90523381830152600160a060020a038c166060820152608081018b905290519290910493508484018903925060008051602061485e833981519152919081900360a00190a1613a21613a1b600080611711565b84613fca565b600054613a3790600160a060020a031683613fca565b613a418882613fca565b6115ae3387613fca565b600080600080600080600080600080600160149054906101000a900460ff16151515613a7657600080fd5b613a7f8b610fca565b919b5099509750613a96348a63ffffffff613f7216565b965033600160a060020a038b161415613aae57600080fd5b600f54601154601054600e54606401010101955085613ad86011548b613f9f90919063ffffffff16565b811515613ae157fe5b04945085613afa600f548b613f9f90919063ffffffff16565b811515613b0357fe5b04935085613b1c6010548b613f9f90919063ffffffff16565b811515613b2557fe5b0492506064613b3a8a8863ffffffff613f9f16565b811515613b4357fe5b0491505083830182018803613b5a3360028d613580565b50613b6760028c846143da565b6040805160028152602081018d90523381830152600160a060020a038c166060820152608081018b9052905160008051602061485e8339815191529181900360a00190a1613bb96112ef600080611711565b613bcd613bc760018a611711565b86613fca565b600054613be390600160a060020a031684613fca565b613bed8a82613fca565b613bf73388613fca565b5050505050505050505050565b613c0c614752565b6000828152600660205260408082208151610100810190925282918291829182918291829182919081608081018260048282826020028201915b8154600160a060020a03168152600190910190602001808311613c46575050509183525050600482015460208201526005820154604082015260069091015460ff16151560609182015281015190995015613ca057600080fd5b6020890151613cb690349063ffffffff613f7216565b895151909850600160a060020a0316331415613cd157600080fd5b613cda8a6144c7565b60125402601154600202600f54601054600e5460640101010101965086613d106011548b60200151613f9f90919063ffffffff16565b811515613d1957fe5b04955086613d366012548b60200151613f9f90919063ffffffff16565b811515613d3f57fe5b04945086613d5c600f548b60200151613f9f90919063ffffffff16565b811515613d6557fe5b04935086613d826010548b60200151613f9f90919063ffffffff16565b811515613d8b57fe5b049250838387600202613d9d8d6144c7565b8802010101896020015103915060a060020a600560008b60400151815260200190815260200160002054811515613dd057fe5b04601f16905060008051602061485e83398151915260038b338c600001516000600481101515613dfc57fe5b60200201518d602001516040518086815260200185815260200184600160a060020a0316600160a060020a0316815260200183600160a060020a0316600160a060020a031681526020018281526020019550505050505060405180910390a1613e673360038c613580565b50613e9660038b6064613e878b8e60200151613f9f90919063ffffffff16565b811515613e9057fe5b046143da565b613eaa613ea4600183611711565b87613fca565b613ebc613ea460028b60400151611711565b885151613ec99083613fca565b8851613edd9060015b602002015186613fca565b8851613eea906002613ed2565b8851613ef7906003613ed2565b613f056112ef600080611711565b600054613f1b90600160a060020a031684613fca565b6110b53389613fca565b600160a060020a0381169160a060020a8204601f16917420000000000000000000000000000000000000000090046b07ffffffffffffffffffffff1690565b600160a060020a0316151590565b600082821115613f7e57fe5b50900390565b6000613f98613f938484611711565b613f64565b9392505050565b600080831515613fb25760009150610ac4565b50828202828482811515613fc257fe5b0414613f9857fe5b613fd382613f64565b8015613fde57508015155b15610ee257604051600160a060020a0383169082156108fc029083906000818181858888f19350505050158015614019573d6000803e3d6000fd5b505050565b60008061402b8484611711565b905080600160a060020a031685600160a060020a03161491505b509392505050565b6fffffffffffffffffffffffffffffffff811691700400000000000000000000000000000000909104600116151590565b700800000000000000000000000000000000900460031660011490565b6bffffffffffffffffffffffff1660a060020a02600160a060020a03919091161790565b60006140c9614697565b6000806000806000806000600360008b8152602001908152602001600020606060405190810160405290816000820154815260200160018201548152602001600282015481525050975061412a60036141258a600001516145be565b6145d6565b965061413e60036141258a602001516145be565b9550614150878763ffffffff61468816565b9450600019430193508461416b88600263ffffffff613f9f16565b10614176578661417b565b600285045b92508460001981151561418a57fe5b604080518740602080830182905283518084038201815292840193849052825195909404965094508686029390928291908401908083835b602083106141e15780518252601f1990920191602091820191016141c2565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020600190041161421e576001614221565b60025b60ff169a9950505050505050505050565b60008061423e846145be565b600081815260066020819052604090912001805460ff19169055905082156140455761426c85600383613580565b50509392505050565b60009182526003602081905260409092206002018054700300000000000000000000000000000000197018000000000000000000000000000000001990911670180000000000000000000000000000000017169190921670010000000000000000000000000000000002179055565b742000000000000000000000000000000000000000006b07ffffffffffffffffffffff90921691909102600160a060020a039290921660a060020a601f929092169190910217741fffffffffffffffffffffffffffffffffffffffff161790565b70180000000000000000000000000000000019700400000000000000000000000000000000196003948516700100000000000000000000000000000000026fffffffffffffffffffffffffffffffff9690961695909517949094166001929092167004000000000000000000000000000000000291909117929092169116700800000000000000000000000000000000021790565b82151561440b5760028054600160a060020a03166bffffffffffffffffffffffff831660a060020a02179055614019565b600183141561444a5760008281526004602052604090208054600160a060020a03166bffffffffffffffffffffffff831660a060020a02179055614019565b60028314156144a85760008281526005602052604090208054741fffffffffffffffffffffffffffffffffffffffff166b07ffffffffffffffffffffff83167420000000000000000000000000000000000000000002179055614019565b6003831415614019576000918252600660205260409091206004015550565b60006144d1614752565b6000838152600660205260408082208151610100810190925281608081018260048282826020028201915b8154600160a060020a031681526001909101906020018083116144fc575050509183525050600482015460208201526005820154604082015260069091015460ff161515606090910152805190925061455c9060015b6020020151613f64565b61456757600061456a565b60015b825160ff91909116915061457f906002614552565b61458a57600061458d565b60015b825160ff9190911691909101906145a5906003614552565b6145b05760006145b3565b60015b60ff16019392505050565b60a060020a90046bffffffffffffffffffffffff1690565b60008215156145ff5760025460a060020a905b046bffffffffffffffffffffffff16905061179d565b60018314156146225760008281526004602052604090205460a060020a906145e9565b6002831415614667576000828152600560205260409020547420000000000000000000000000000000000000000090046b07ffffffffffffffffffffff16905061179d565b600383141561179d5750600090815260066020526040902060040154919050565b600082820183811015613f9857fe5b6060604051908101604052806000815260200160008152602001600081525090565b6060604051908101604052806000815260200160608152602001606081525090565b8260048101928215614723579160200282015b828111156147235782518254600160a060020a031916600160a060020a039091161782556020909201916001909101906146ee565b5061472f92915061481c565b5090565b6080604051908101604052806004906020820280388339509192915050565b60e060405190810160405280614766614733565b815260200160008152602001600081526020016000151581525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106147c457805160ff19168380011785556147f1565b828001600101855582156147f1579182015b828111156147f15782518255916020019190600101906147d6565b5061472f929150614843565b60c0604051908101604052806006906020820280388339509192915050565b61484091905b8082111561472f578054600160a060020a0319168155600101614822565b90565b61484091905b8082111561472f57600081556001016148495600fd18032b1f4495899c97de852a729c98c1c58331a207e8127c9078bcccda6e70a165627a7a723058205b1724d0216572f3e229cda395e6e837ebd1244e0a8b0f9d2b7094e318bff6ed0029
Swarm Source
bzzr://5b1724d0216572f3e229cda395e6e837ebd1244e0a8b0f9d2b7094e318bff6ed
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $2,175.42 | 0.01 | $21.75 |
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.