More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 937 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw Balance | 12433488 | 1334 days ago | IN | 0 ETH | 0.00525887 | ||||
Create Sale Auct... | 7356886 | 2127 days ago | IN | 0 ETH | 0.00023823 | ||||
Create Sale Auct... | 6638325 | 2256 days ago | IN | 0 ETH | 0.0004762 | ||||
Transfer | 6557376 | 2270 days ago | IN | 0 ETH | 0.0003373 | ||||
Transfer | 6516590 | 2276 days ago | IN | 0 ETH | 0.00066374 | ||||
Transfer | 6326061 | 2307 days ago | IN | 0 ETH | 0.00018135 | ||||
Transfer | 6326023 | 2307 days ago | IN | 0 ETH | 0.00025061 | ||||
Transfer | 6326010 | 2307 days ago | IN | 0 ETH | 0.00029398 | ||||
Transfer | 6326003 | 2307 days ago | IN | 0 ETH | 0.00029398 | ||||
Transfer | 6325997 | 2307 days ago | IN | 0 ETH | 0.00025062 | ||||
Transfer | 6325981 | 2307 days ago | IN | 0 ETH | 0.00025062 | ||||
Transfer | 6325978 | 2307 days ago | IN | 0 ETH | 0.00025062 | ||||
Transfer | 6325975 | 2307 days ago | IN | 0 ETH | 0.00025062 | ||||
Transfer | 6325960 | 2307 days ago | IN | 0 ETH | 0.00025062 | ||||
Transfer | 6325954 | 2307 days ago | IN | 0 ETH | 0.00062643 | ||||
Transfer | 6325936 | 2307 days ago | IN | 0 ETH | 0.00026989 | ||||
Transfer | 6281625 | 2315 days ago | IN | 0 ETH | 0.00033187 | ||||
Transfer | 6268637 | 2317 days ago | IN | 0 ETH | 0.00049212 | ||||
Transfer | 6268636 | 2317 days ago | IN | 0 ETH | 0.00066374 | ||||
Transfer | 6264218 | 2318 days ago | IN | 0 ETH | 0.00066502 | ||||
Transfer | 6264118 | 2318 days ago | IN | 0 ETH | 0.00012303 | ||||
Transfer | 6263761 | 2318 days ago | IN | 0 ETH | 0.00066374 | ||||
Create Sale Auct... | 6257484 | 2319 days ago | IN | 0 ETH | 0.00027381 | ||||
Create Sale Auct... | 6257453 | 2319 days ago | IN | 0 ETH | 0.00238104 | ||||
Transfer | 6254355 | 2319 days ago | IN | 0 ETH | 0.00066374 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
12433488 | 1334 days ago | 0.16330928 ETH | ||||
12433445 | 1334 days ago | 0.16330928 ETH | ||||
6046195 | 2355 days ago | 1.14058532 ETH | ||||
6046185 | 2355 days ago | 1.14058532 ETH | ||||
6046176 | 2355 days ago | 12.97012069 ETH | ||||
5838789 | 2390 days ago | 0.0408081 ETH | ||||
5838518 | 2390 days ago | 0.04452961 ETH | ||||
5838443 | 2390 days ago | 0.13452435 ETH | ||||
5838358 | 2390 days ago | 0.0323581 ETH | ||||
5838141 | 2390 days ago | 0.02699475 ETH | ||||
5837603 | 2390 days ago | 0.03974638 ETH | ||||
5837549 | 2390 days ago | 0.0884762 ETH | ||||
5837247 | 2390 days ago | 0.06038978 ETH | ||||
5837148 | 2390 days ago | 0.03820305 ETH | ||||
5836659 | 2390 days ago | 0.04338032 ETH | ||||
5836251 | 2390 days ago | 0.0250136 ETH | ||||
5836070 | 2390 days ago | 0.17056821 ETH | ||||
5836020 | 2390 days ago | 0.01995673 ETH | ||||
5835972 | 2390 days ago | 0.10608767 ETH | ||||
5835570 | 2391 days ago | 0.05284826 ETH | ||||
5835524 | 2391 days ago | 0.02190505 ETH | ||||
5835187 | 2391 days ago | 0.03804981 ETH | ||||
5834950 | 2391 days ago | 0.03558705 ETH | ||||
5834647 | 2391 days ago | 0.04508783 ETH | ||||
5834543 | 2391 days ago | 0.02273691 ETH |
Loading...
Loading
Contract Name:
DopeRaiderCore
Compiler Version
v0.4.19+commit.c4cbbb05
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-06-06 */ pragma solidity ^0.4.19; // DopeRaider Narcos Contract // by gasmasters.io // contact: [email protected] contract DistrictsCoreInterface { // callable by other contracts to control economy function isDopeRaiderDistrictsCore() public pure returns (bool); function increaseDistrictWeed(uint256 _district, uint256 _quantity) public; function increaseDistrictCoke(uint256 _district, uint256 _quantity) public; function distributeRevenue(uint256 _district , uint8 _splitW, uint8 _splitC) public payable; function getNarcoLocation(uint256 _narcoId) public view returns (uint8 location); } /// @title sale clock auction interface contract SaleClockAuction { function isSaleClockAuction() public pure returns (bool); function createAuction(uint256 _tokenId, uint256 _startingPrice,uint256 _endingPrice,uint256 _duration,address _seller)public; function withdrawBalance() public; function averageGen0SalePrice() public view returns (uint256); } //// @title A facet of NarcoCore that manages special access privileges. contract NarcoAccessControl { /// @dev Emited when contract is upgraded event ContractUpgrade(address newContract); address public ceoAddress; address public cooAddress; // @dev Keeps track whether the contract is paused. When that is true, most actions are blocked bool public paused = false; modifier onlyCEO() { require(msg.sender == ceoAddress); _; } modifier onlyCLevel() { require( msg.sender == cooAddress || msg.sender == ceoAddress ); _; } function setCEO(address _newCEO) public onlyCEO { require(_newCEO != address(0)); ceoAddress = _newCEO; } function setCOO(address _newCOO) public onlyCEO { require(_newCOO != address(0)); cooAddress = _newCOO; } function withdrawBalance() external onlyCLevel { msg.sender.transfer(address(this).balance); } /*** Pausable functionality adapted from OpenZeppelin ***/ /// @dev Modifier to allow actions only when the contract IS NOT paused modifier whenNotPaused() { require(!paused); _; } /// @dev Modifier to allow actions only when the contract IS paused modifier whenPaused { require(paused); _; } function pause() public onlyCLevel whenNotPaused { paused = true; } function unpause() public onlyCLevel whenPaused { // can't unpause if contract was upgraded paused = false; } /// @dev The address of the calling contract address public districtContractAddress; DistrictsCoreInterface public districtsCore; function setDistrictAddress(address _address) public onlyCLevel { _setDistrictAddresss(_address); } function _setDistrictAddresss(address _address) internal { DistrictsCoreInterface candidateContract = DistrictsCoreInterface(_address); require(candidateContract.isDopeRaiderDistrictsCore()); districtsCore = candidateContract; districtContractAddress = _address; } modifier onlyDopeRaiderContract() { require(msg.sender == districtContractAddress); _; } } /// @title Base contract for DopeRaider. Holds all common structs, events and base variables. contract NarcoBase is NarcoAccessControl { /*** EVENTS ***/ event NarcoCreated(address indexed owner, uint256 narcoId, string genes); /// @dev Transfer event as defined in current draft of ERC721. Emitted every time a narcos /// ownership is assigned, including newly created narcos. event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /*** DATA TYPES ***/ // consumable indexes /* uint constant gasIndex = 0; uint constant seedsIndex = 1; uint constant chemicalsIndex = 2; uint constant ammoIndex = 3; // skills indexes - each skill can range from 1 - 10 in level uint constant speedIndex = 0; // speed of travel uint constant growIndex = 1; // speed/yield of grow uint constant refineIndex = 2; // refine coke uint constant attackIndex = 3; // attack uint constant defenseIndex = 4; // defense uint constant capacityIndex = 5; // how many items can be carried. // stat indexes uint constant dealsCompleted = 0; // dealsCompleted uint constant weedGrowCompleted = 1; // weedGrowCompleted uint constant cokeRefineCompleted = 2; // refineCompleted uint constant attacksSucceeded = 3; // attacksSucceeded uint constant defendedSuccessfully = 4; defendedSuccessfully uint constant raidsCompleted = 5; // raidsCompleted uint constant escapeHijack = 6; // escapeHijack uint constant travelling = 7; // traveller uint constant recruited = 8; // recruitment */ /// @dev The main Narco struct. Every narco in DopeRaider is represented by a copy /// of this structure. struct Narco { // The Narco's genetic code is packed into these 256-bits. string genes; // represents his avatar string narcoName; // items making level uint16 [9] stats; // inventory totals uint16 weedTotal; uint16 cokeTotal; uint8 [4] consumables; // gas, seeds, chemicals, ammo uint16 [6] skills; // travel time, grow, refine, attack, defend carry uint256 [6] cooldowns; // skill cooldown periods speed, grow, refine, attack, others if needed uint8 homeLocation; } /*** STORAGE ***/ /// @dev An array containing the Narco struct for all Narcos in existence. The ID /// of each narco is actually an index into this array. Narco[] narcos; /// @dev A mapping from narco IDs to the address that owns them. All narcos have /// some valid owner address, even gen0 narcos are created with a non-zero owner. mapping (uint256 => address) public narcoIndexToOwner; // @dev A mapping from owner address to count of tokens that address owns. // Used internally inside balanceOf() to resolve ownership count. mapping (address => uint256) ownershipTokenCount; /// @dev A mapping from NarcoIDs to an address that has been approved to call /// transferFrom(). A zero value means no approval is outstanding. mapping (uint256 => address) public narcoIndexToApproved; function _transfer(address _from, address _to, uint256 _tokenId) internal { // since the number of narcos is capped to 2^32 // there is no way to overflow this ownershipTokenCount[_to]++; narcoIndexToOwner[_tokenId] = _to; if (_from != address(0)) { ownershipTokenCount[_from]--; delete narcoIndexToApproved[_tokenId]; } Transfer(_from, _to, _tokenId); } // Will generate a new Narco and generate the event function _createNarco( string _genes, string _name, address _owner ) internal returns (uint) { uint16[6] memory randomskills= [ uint16(random(9)+1), uint16(random(9)+1), uint16(random(9)+1), uint16(random(9)+1), uint16(random(9)+1), uint16(random(9)+31) ]; uint256[6] memory cools; uint16[9] memory nostats; Narco memory _narco = Narco({ genes: _genes, narcoName: _name, cooldowns: cools, stats: nostats, weedTotal: 0, cokeTotal: 0, consumables: [4,6,2,1], skills: randomskills, homeLocation: uint8(random(6)+1) }); uint256 newNarcoId = narcos.push(_narco) - 1; require(newNarcoId <= 4294967295); // raid character (token 0) live in 7 and have random special skills if (newNarcoId==0){ narcos[0].homeLocation=7; // in vice island narcos[0].skills[4]=800; // defense narcos[0].skills[5]=65535; // carry } NarcoCreated(_owner, newNarcoId, _narco.genes); _transfer(0, _owner, newNarcoId); return newNarcoId; } function subToZero(uint256 a, uint256 b) internal pure returns (uint256) { if (b <= a){ return a - b; }else{ return 0; } } function getRemainingCapacity(uint256 _narcoId) public view returns (uint16 capacity){ uint256 usedCapacity = narcos[_narcoId].weedTotal + narcos[_narcoId].cokeTotal + narcos[_narcoId].consumables[0]+narcos[_narcoId].consumables[1]+narcos[_narcoId].consumables[2]+narcos[_narcoId].consumables[3]; capacity = uint16(subToZero(uint256(narcos[_narcoId].skills[5]), usedCapacity)); } // respect it's called now function getLevel(uint256 _narcoId) public view returns (uint16 rank){ /* dealsCompleted = 0; // dealsCompleted weedGrowCompleted = 1; // weedGrowCompleted cokeRefineCompleted = 2; // refineCompleted attacksSucceeded = 3; // attacksSucceeded defendedSuccessfully = 4; defendedSuccessfully raidsCompleted = 5; // raidsCompleted escapeHijack = 6; // escapeHijack travel = 7; // travelling */ rank = (narcos[_narcoId].stats[0]/12)+ (narcos[_narcoId].stats[1]/4)+ (narcos[_narcoId].stats[2]/4)+ (narcos[_narcoId].stats[3]/6)+ (narcos[_narcoId].stats[4]/6)+ (narcos[_narcoId].stats[5]/1)+ (narcos[_narcoId].stats[7]/12) ; } // pseudo random - but does that matter? uint64 _seed = 0; function random(uint64 upper) private returns (uint64 randomNumber) { _seed = uint64(keccak256(keccak256(block.blockhash(block.number-1), _seed), now)); return _seed % upper; } // never call this from a contract /// @param _owner The owner whose tokens we are interested in. function narcosByOwner(address _owner) public view returns(uint256[] ownedNarcos) { uint256 tokenCount = ownershipTokenCount[_owner]; uint256 totalNarcos = narcos.length - 1; uint256[] memory result = new uint256[](tokenCount); uint256 narcoId; uint256 resultIndex=0; for (narcoId = 0; narcoId <= totalNarcos; narcoId++) { if (narcoIndexToOwner[narcoId] == _owner) { result[resultIndex] = narcoId; resultIndex++; } } return result; } } /// @title Interface for contracts conforming to ERC-721: Non-Fungible Tokens contract ERC721 { function implementsERC721() public pure returns (bool); function totalSupply() public view returns (uint256 total); function balanceOf(address _owner) public view returns (uint256 balance); function ownerOf(uint256 _tokenId) public view returns (address owner); function approve(address _to, uint256 _tokenId) public; function transferFrom(address _from, address _to, uint256 _tokenId) public; function transfer(address _to, uint256 _tokenId) public; event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); // Optional // function name() public view returns (string name); // function symbol() public view returns (string symbol); // function tokenOfOwnerByIndex(address _owner, uint256 _index) external view returns (uint256 tokenId); // function tokenMetadata(uint256 _tokenId) public view returns (string infoUrl); } /// @title The facet of the DopeRaider core contract that manages ownership, ERC-721 (draft) compliant. contract NarcoOwnership is NarcoBase, ERC721 { string public name = "DopeRaider"; string public symbol = "DOPR"; function implementsERC721() public pure returns (bool) { return true; } /// @dev Checks if a given address is the current owner of a particular narco. /// @param _claimant the address we are validating against. /// @param _tokenId narco id, only valid when > 0 function _owns(address _claimant, uint256 _tokenId) internal view returns (bool) { return narcoIndexToOwner[_tokenId] == _claimant; } /// @dev Checks if a given address currently has transferApproval for a particular narco. /// @param _claimant the address we are confirming narco is approved for. /// @param _tokenId narco id, only valid when > 0 function _approvedFor(address _claimant, uint256 _tokenId) internal view returns (bool) { return narcoIndexToApproved[_tokenId] == _claimant; } /// @dev Marks an address as being approved for transferFrom(), overwriting any previous /// approval. Setting _approved to address(0) clears all transfer approval. /// NOTE: _approve() does NOT send the Approval event. function _approve(uint256 _tokenId, address _approved) internal { narcoIndexToApproved[_tokenId] = _approved; } /// @notice Returns the number of narcos owned by a specific address. /// @param _owner The owner address to check. function balanceOf(address _owner) public view returns (uint256 count) { return ownershipTokenCount[_owner]; } /// @notice Transfers a narco to another address. If transferring to a smart /// contract be VERY CAREFUL to ensure that it is aware of ERC-721 (or /// DopeRaider specifically) or your narco may be lost forever. Seriously. /// @param _to The address of the recipient, can be a user or contract. /// @param _tokenId The ID of the narco to transfer. function transfer( address _to, uint256 _tokenId ) public { require(_to != address(0)); require(_owns(msg.sender, _tokenId)); _transfer(msg.sender, _to, _tokenId); } /// @notice Grant another address the right to transfer a specific narco via /// transferFrom(). This is the preferred flow for transfering NFTs to contracts. /// @param _to The address to be granted transfer approval. Pass address(0) to /// clear all approvals. /// @param _tokenId The ID of the narco that can be transferred if this call succeeds. function approve( address _to, uint256 _tokenId ) public { require(_owns(msg.sender, _tokenId)); _approve(_tokenId, _to); Approval(msg.sender, _to, _tokenId); } /// @notice Transfer a narco owned by another address, for which the calling address /// has previously been granted transfer approval by the owner. /// @param _from The address that owns the narco to be transfered. /// @param _to The address that should take ownership of the narco. Can be any address, /// including the caller. /// @param _tokenId The ID of the narco to be transferred. function transferFrom( address _from, address _to, uint256 _tokenId ) public { require(_approvedFor(msg.sender, _tokenId)); require(_owns(_from, _tokenId)); require(_to != address(0)); _transfer(_from, _to, _tokenId); } function totalSupply() public view returns (uint) { return narcos.length - 1; } function ownerOf(uint256 _tokenId) public view returns (address owner) { owner = narcoIndexToOwner[_tokenId]; require(owner != address(0)); } } // this helps with district functionality // it gives the ability to an external contract to do the following: // * update narcos stats contract NarcoUpdates is NarcoOwnership { function updateWeedTotal(uint256 _narcoId, bool _add, uint16 _total) public onlyDopeRaiderContract { if(_add==true){ narcos[_narcoId].weedTotal+= _total; }else{ narcos[_narcoId].weedTotal-= _total; } } function updateCokeTotal(uint256 _narcoId, bool _add, uint16 _total) public onlyDopeRaiderContract { if(_add==true){ narcos[_narcoId].cokeTotal+= _total; }else{ narcos[_narcoId].cokeTotal-= _total; } } function updateConsumable(uint256 _narcoId, uint256 _index, uint8 _new) public onlyDopeRaiderContract { narcos[_narcoId].consumables[_index] = _new; } function updateSkill(uint256 _narcoId, uint256 _index, uint16 _new) public onlyDopeRaiderContract { narcos[_narcoId].skills[_index] = _new; } function incrementStat(uint256 _narcoId , uint256 _index) public onlyDopeRaiderContract { narcos[_narcoId].stats[_index]++; } function setCooldown(uint256 _narcoId , uint256 _index , uint256 _new) public onlyDopeRaiderContract { narcos[_narcoId].cooldowns[_index]=_new; } } /// @title Handles creating auctions for sale of narcos. /// This wrapper of ReverseAuction exists only so that users can create /// auctions with only one transaction. contract NarcoAuction is NarcoUpdates { SaleClockAuction public saleAuction; function setSaleAuctionAddress(address _address) public onlyCLevel { SaleClockAuction candidateContract = SaleClockAuction(_address); require(candidateContract.isSaleClockAuction()); saleAuction = candidateContract; } function createSaleAuction( uint256 _narcoId, uint256 _startingPrice, uint256 _endingPrice, uint256 _duration ) public whenNotPaused { // Auction contract checks input sizes // If narco is already on any auction, this will throw // because it will be owned by the auction contract require(_owns(msg.sender, _narcoId)); _approve(_narcoId, saleAuction); // Sale auction throws if inputs are invalid and clears // transfer approval after escrowing the narco. saleAuction.createAuction( _narcoId, _startingPrice, _endingPrice, _duration, msg.sender ); } /// @dev Transfers the balance of the sale auction contract /// to the DopeRaiderCore contract. We use two-step withdrawal to /// prevent two transfer calls in the auction bid function. function withdrawAuctionBalances() external onlyCLevel { saleAuction.withdrawBalance(); } } /// @title all functions related to creating narcos contract NarcoMinting is NarcoAuction { // Limits the number of narcos the contract owner can ever create. uint256 public promoCreationLimit = 200; uint256 public gen0CreationLimit = 5000; // Constants for gen0 auctions. uint256 public gen0StartingPrice = 1 ether; uint256 public gen0EndingPrice = 20 finney; uint256 public gen0AuctionDuration = 1 days; // Counts the number of narcos the contract owner has created. uint256 public promoCreatedCount; uint256 public gen0CreatedCount; /// @dev we can create promo narco, up to a limit function createPromoNarco( string _genes, string _name, address _owner ) public onlyCLevel { if (_owner == address(0)) { _owner = cooAddress; } require(promoCreatedCount < promoCreationLimit); require(gen0CreatedCount < gen0CreationLimit); promoCreatedCount++; gen0CreatedCount++; _createNarco(_genes, _name, _owner); } /// @dev Creates a new gen0 narco with the given genes and /// creates an auction for it. function createGen0Auction( string _genes, string _name ) public onlyCLevel { require(gen0CreatedCount < gen0CreationLimit); uint256 narcoId = _createNarco(_genes,_name,address(this)); _approve(narcoId, saleAuction); saleAuction.createAuction( narcoId, _computeNextGen0Price(), gen0EndingPrice, gen0AuctionDuration, address(this) ); gen0CreatedCount++; } /// @dev Computes the next gen0 auction starting price, given /// the average of the past 4 prices + 50%. function _computeNextGen0Price() internal view returns (uint256) { uint256 avePrice = saleAuction.averageGen0SalePrice(); // sanity check to ensure we don't overflow arithmetic (this big number is 2^128-1). require(avePrice < 340282366920938463463374607431768211455); uint256 nextPrice = avePrice + (avePrice / 2); // We never auction for less than starting price if (nextPrice < gen0StartingPrice) { nextPrice = gen0StartingPrice; } return nextPrice; } } /// @title DopeRaider: Collectible, narcos on the Ethereum blockchain. /// @dev The main DopeRaider contract contract DopeRaiderCore is NarcoMinting { // This is the main DopeRaider contract. We have several seperately-instantiated contracts // that handle auctions, districts and the creation of new narcos. By keeping // them in their own contracts, we can upgrade them without disrupting the main contract that tracks // narco ownership. // // - NarcoBase: This is where we define the most fundamental code shared throughout the core // functionality. This includes our main data storage, constants and data types, plus // internal functions for managing these items. // // - NarcoAccessControl: This contract manages the various addresses and constraints for operations // that can be executed only by specific roles. Namely CEO, CFO and COO. // // - NarcoOwnership: This provides the methods required for basic non-fungible token // transactions, following the draft ERC-721 spec (https://github.com/ethereum/EIPs/issues/721). // // - NarcoUpdates: This file contains the methods necessary to allow a separate contract to update narco stats // // - NarcoAuction: Here we have the public methods for auctioning or bidding on narcos. // The actual auction functionality is handled in a sibling sales contract, // while auction creation and bidding is mostly mediated through this facet of the core contract. // // - NarcoMinting: This final facet contains the functionality we use for creating new gen0 narcos. // We can make up to 4096 "promo" narcos // Set in case the core contract is broken and an upgrade is required address public newContractAddress; bool public gamePaused = true; modifier whenGameNotPaused() { require(!gamePaused); _; } /// @dev Modifier to allow actions only when the contract IS paused modifier whenGamePaused { require(gamePaused); _; } function pause() public onlyCLevel whenGameNotPaused { gamePaused = true; } function unpause() public onlyCLevel whenGamePaused { // can't unpause if contract was upgraded gamePaused = false; } // EVENTS event GrowWeedCompleted(uint256 indexed narcoId, uint yield); event RefineCokeCompleted(uint256 indexed narcoId, uint yield); function DopeRaiderCore() public { ceoAddress = msg.sender; cooAddress = msg.sender; } /// @dev Used to mark the smart contract as upgraded, in case there is a serious /// breaking bug. This method does nothing but keep track of the new contract and /// emit a message indicating that the new address is set. It's up to clients of this /// contract to update to the new contract address in that case. (This contract will /// be paused indefinitely if such an upgrade takes place.) /// @param _v2Address new address function setNewAddress(address _v2Address) public onlyCLevel whenPaused { newContractAddress = _v2Address; ContractUpgrade(_v2Address); } /// @notice No tipping! /// @dev Reject all Ether from being sent here, unless it's from one of the /// two auction contracts. (Hopefully, we can prevent user accidents.) function() external payable { require(msg.sender == address(saleAuction)); } /// @param _id The ID of the narco of interest. function getNarco(uint256 _id) public view returns ( string narcoName, uint256 weedTotal, uint256 cokeTotal, uint16[6] skills, uint8[4] consumables, string genes, uint8 homeLocation, uint16 level, uint256[6] cooldowns, uint256 id, uint16 [9] stats ) { Narco storage narco = narcos[_id]; narcoName = narco.narcoName; weedTotal = narco.weedTotal; cokeTotal = narco.cokeTotal; skills = narco.skills; consumables = narco.consumables; genes = narco.genes; homeLocation = narco.homeLocation; level = getLevel(_id); cooldowns = narco.cooldowns; id = _id; stats = narco.stats; } uint256 public changeIdentityNarcoRespect = 30; function setChangeIdentityNarcoRespect(uint256 _respect) public onlyCLevel { changeIdentityNarcoRespect=_respect; } uint256 public personalisationCost = 0.01 ether; // pimp my narco function setPersonalisationCost(uint256 _cost) public onlyCLevel { personalisationCost=_cost; } function updateNarco(uint256 _narcoId, string _genes, string _name) public payable whenGameNotPaused { require(getLevel(_narcoId)>=changeIdentityNarcoRespect); // minimum level to recruit a narco require(msg.sender==narcoIndexToOwner[_narcoId]); // can't be moving other peoples narcos about require(msg.value>=personalisationCost); narcos[_narcoId].genes = _genes; narcos[_narcoId].narcoName = _name; } uint256 public respectRequiredToRecruit = 150; function setRespectRequiredToRecruit(uint256 _respect) public onlyCLevel { respectRequiredToRecruit=_respect; } function recruitNarco(uint256 _narcoId, string _genes, string _name) public whenGameNotPaused { require(msg.sender==narcoIndexToOwner[_narcoId]); // can't be moving other peoples narcos about require(getLevel(_narcoId)>=respectRequiredToRecruit); // minimum level to recruit a narco require(narcos[_narcoId].stats[8]<getLevel(_narcoId)/respectRequiredToRecruit); // must have recruited < respect / required reqpect (times) _createNarco(_genes,_name, msg.sender); narcos[_narcoId].stats[8]+=1; // increase number recruited } // crafting section uint256 public growCost = 0.003 ether; function setGrowCost(uint256 _cost) public onlyCLevel{ growCost=_cost; } function growWeed(uint256 _narcoId) public payable whenGameNotPaused{ require(msg.sender==narcoIndexToOwner[_narcoId]); // can't be moving other peoples narcos about require(msg.value>=growCost); require(now>narcos[_narcoId].cooldowns[1]); //cooldown must have expired uint16 growSkillLevel = narcos[_narcoId].skills[1]; // grow uint16 maxYield = 9 + growSkillLevel; // max amount can be grown based on skill uint yield = min(narcos[_narcoId].consumables[1],maxYield); require(yield>0); // gotta produce something // must be home location uint8 district = districtsCore.getNarcoLocation(_narcoId); require(district==narcos[_narcoId].homeLocation); // do the crafting uint256 cooldown = now + ((910-(10*growSkillLevel))* 1 seconds); //calculate cooldown switch to minutes later narcos[_narcoId].cooldowns[1]=cooldown; // use all available - for now , maybe later make optional narcos[_narcoId].consumables[1]=uint8(subToZero(uint256(narcos[_narcoId].consumables[1]),yield)); narcos[_narcoId].weedTotal+=uint8(yield); narcos[_narcoId].stats[1]+=1; // update the statistic for grow districtsCore.increaseDistrictWeed(district , yield); districtsCore.distributeRevenue.value(growCost)(uint256(district),50,50); // distribute the revenue to districts pots GrowWeedCompleted(_narcoId, yield); // notification event } uint256 public refineCost = 0.003 ether; function setRefineCost(uint256 _cost) public onlyCLevel{ refineCost=_cost; } function refineCoke(uint256 _narcoId) public payable whenGameNotPaused{ require(msg.sender==narcoIndexToOwner[_narcoId]); // can't be moving other peoples narcos about require(msg.value>=refineCost); require(now>narcos[_narcoId].cooldowns[2]); //cooldown must have expired uint16 refineSkillLevel = narcos[_narcoId].skills[2]; // refine uint16 maxYield = 3+(refineSkillLevel/3); // max amount can be grown based on skill uint yield = min(narcos[_narcoId].consumables[2],maxYield); require(yield>0); // gotta produce something // must be home location uint8 district = districtsCore.getNarcoLocation(_narcoId); require(district==narcos[_narcoId].homeLocation); // do the crafting // uint256 cooldown = now + min(3 minutes,((168-(2*refineSkillLevel))* 1 seconds)); // calculate cooldown uint256 cooldown = now + ((910-(10*refineSkillLevel))* 1 seconds); // calculate cooldown narcos[_narcoId].cooldowns[2]=cooldown; // use all available - for now , maybe later make optional narcos[_narcoId].consumables[2]=uint8(subToZero(uint256(narcos[_narcoId].consumables[2]),yield)); narcos[_narcoId].cokeTotal+=uint8(yield); narcos[_narcoId].stats[2]+=1; districtsCore.increaseDistrictCoke(district, yield); districtsCore.distributeRevenue.value(refineCost)(uint256(district),50,50); // distribute the revenue to districts pots RefineCokeCompleted(_narcoId, yield); // notification event } function min(uint a, uint b) private pure returns (uint) { return a < b ? a : b; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"promoCreatedCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ceoAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_cost","type":"uint256"}],"name":"setPersonalisationCost","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"implementsERC721","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_narcoId","type":"uint256"}],"name":"getRemainingCapacity","outputs":[{"name":"capacity","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"districtContractAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newCEO","type":"address"}],"name":"setCEO","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"personalisationCost","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newCOO","type":"address"}],"name":"setCOO","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_id","type":"uint256"}],"name":"getNarco","outputs":[{"name":"narcoName","type":"string"},{"name":"weedTotal","type":"uint256"},{"name":"cokeTotal","type":"uint256"},{"name":"skills","type":"uint16[6]"},{"name":"consumables","type":"uint8[4]"},{"name":"genes","type":"string"},{"name":"homeLocation","type":"uint8"},{"name":"level","type":"uint16"},{"name":"cooldowns","type":"uint256[6]"},{"name":"id","type":"uint256"},{"name":"stats","type":"uint16[9]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_narcoId","type":"uint256"}],"name":"growWeed","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_narcoId","type":"uint256"},{"name":"_startingPrice","type":"uint256"},{"name":"_endingPrice","type":"uint256"},{"name":"_duration","type":"uint256"}],"name":"createSaleAuction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"gen0CreationLimit","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"setDistrictAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_narcoId","type":"uint256"},{"name":"_genes","type":"string"},{"name":"_name","type":"string"}],"name":"updateNarco","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdrawBalance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"name":"owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_narcoId","type":"uint256"},{"name":"_genes","type":"string"},{"name":"_name","type":"string"}],"name":"recruitNarco","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"newContractAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"setSaleAuctionAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"count","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_v2Address","type":"address"}],"name":"setNewAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_genes","type":"string"},{"name":"_name","type":"string"}],"name":"createGen0Auction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"districtsCore","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"respectRequiredToRecruit","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"changeIdentityNarcoRespect","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_respect","type":"uint256"}],"name":"setChangeIdentityNarcoRespect","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_genes","type":"string"},{"name":"_name","type":"string"},{"name":"_owner","type":"address"}],"name":"createPromoNarco","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_narcoId","type":"uint256"}],"name":"getLevel","outputs":[{"name":"rank","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_narcoId","type":"uint256"},{"name":"_index","type":"uint256"},{"name":"_new","type":"uint256"}],"name":"setCooldown","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_narcoId","type":"uint256"}],"name":"refineCoke","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_narcoId","type":"uint256"},{"name":"_add","type":"bool"},{"name":"_total","type":"uint16"}],"name":"updateCokeTotal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdrawAuctionBalances","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_cost","type":"uint256"}],"name":"setGrowCost","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"refineCost","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"gen0EndingPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"gen0StartingPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cooAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"promoCreationLimit","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"gamePaused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"narcoIndexToApproved","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_respect","type":"uint256"}],"name":"setRespectRequiredToRecruit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_narcoId","type":"uint256"},{"name":"_index","type":"uint256"},{"name":"_new","type":"uint8"}],"name":"updateConsumable","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_narcoId","type":"uint256"},{"name":"_index","type":"uint256"},{"name":"_new","type":"uint16"}],"name":"updateSkill","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"growCost","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"saleAuction","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_narcoId","type":"uint256"},{"name":"_add","type":"bool"},{"name":"_total","type":"uint16"}],"name":"updateWeedTotal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"gen0AuctionDuration","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"gen0CreatedCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_cost","type":"uint256"}],"name":"setRefineCost","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"narcosByOwner","outputs":[{"name":"ownedNarcos","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_narcoId","type":"uint256"},{"name":"_index","type":"uint256"}],"name":"incrementStat","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"narcoIndexToOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"narcoId","type":"uint256"},{"indexed":false,"name":"yield","type":"uint256"}],"name":"GrowWeedCompleted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"narcoId","type":"uint256"},{"indexed":false,"name":"yield","type":"uint256"}],"name":"RefineCokeCompleted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":true,"name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"approved","type":"address"},{"indexed":true,"name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":false,"name":"narcoId","type":"uint256"},{"indexed":false,"name":"genes","type":"string"}],"name":"NarcoCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newContract","type":"address"}],"name":"ContractUpgrade","type":"event"}]
Contract Creation Code
606060409081526001805460a060020a60ff02191690556008805467ffffffffffffffff191690558051908101604052600a81527f446f706552616964657200000000000000000000000000000000000000000000602082015260099080516200006e9291602001906200016b565b5060408051908101604052600481527f444f5052000000000000000000000000000000000000000000000000000000006020820152600a908051620000b89291602001906200016b565b5060c8600c55611388600d55670de0b6b3a7640000600e5566470de4df820000600f55620151806010556013805460a060020a60ff02191674010000000000000000000000000000000000000000179055601e601455662386f26fc100006015556096601655660aa87bee538000601781905560185534156200013a57600080fd5b60008054600160a060020a033316600160a060020a0319918216811790925560018054909116909117905562000210565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001ae57805160ff1916838001178555620001de565b82800160010185558215620001de579182015b82811115620001de578251825591602001919060010190620001c1565b50620001ec929150620001f0565b5090565b6200020d91905b80821115620001ec5760008155600101620001f7565b90565b61380080620002206000396000f3006060604052600436106102c65763ffffffff60e060020a60003504166305e4554681146102e357806306fdde0314610308578063095ea7b3146103925780630a0f8168146103b45780630a59bf2d146103e35780631051db34146103f957806318160ddd146104205780631b8ef0bb1461043357806320f317fb1461046057806323b872dd1461047357806327d7874c1461049b57806329337bda146104ba5780632ba73c15146104cd57806333f30a43146104ec57806334e415db146106c45780633d7d3f5a146106cf5780633f4ba83a146106ee578063404d0e3e146107015780634eb7be5b14610714578063554571db146107335780635c975abb146107c05780635fd8c710146107d35780636352211e146107e657806367907404146107fc5780636af04a57146108945780636fbde40d146108a757806370a08231146108c657806371587988146108e557806371ae973e14610904578063757501c5146109975780637c116ec9146109aa5780637e7e5a75146109bd578063817b106e146109d057806382402743146109e65780638456cb5914610a8457806386481d4014610a975780638b97502814610aad5780638e372dcd14610ac95780638ed5047c14610ad457806391876e5714610af657806395d89b4114610b095780639b4d9ecc14610b1c578063a8a5c22c14610b32578063a9059cbb14610b45578063ab94837414610b67578063ae4d0ff714610b7a578063b047fb5014610b8d578063b531933514610ba0578063c3de1ab914610bb3578063c5c5888114610bc6578063c805914a14610bdc578063cf5f87d014610bf2578063d62f146b14610c11578063e2865b4d14610c31578063e6cbe35114610c44578063e7696a2914610c57578063eb845c1714610c79578063f1ca941014610c8c578063f29c787014610c9f578063f4edb15b14610cb5578063f63c553214610d27578063f6a99bdc14610d40575b600b5433600160a060020a039081169116146102e157600080fd5b005b34156102ee57600080fd5b6102f6610d56565b60405190815260200160405180910390f35b341561031357600080fd5b61031b610d5c565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561035757808201518382015260200161033f565b50505050905090810190601f1680156103845780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561039d57600080fd5b6102e1600160a060020a0360043516602435610dfa565b34156103bf57600080fd5b6103c7610e5e565b604051600160a060020a03909116815260200160405180910390f35b34156103ee57600080fd5b6102e1600435610e6d565b341561040457600080fd5b61040c610ea8565b604051901515815260200160405180910390f35b341561042b57600080fd5b6102f6610eae565b341561043e57600080fd5b610449600435610eb8565b60405161ffff909116815260200160405180910390f35b341561046b57600080fd5b6103c7611018565b341561047e57600080fd5b6102e1600160a060020a0360043581169060243516604435611027565b34156104a657600080fd5b6102e1600160a060020a0360043516611076565b34156104c557600080fd5b6102f66110c8565b34156104d857600080fd5b6102e1600160a060020a03600435166110ce565b34156104f757600080fd5b610502600435611120565b60405180806020018c81526020018b81526020018a600660200280838360005b8381101561053a578082015183820152602001610522565b5050505090500189600460200280838360005b8381101561056557808201518382015260200161054d565b50505050905001806020018860ff1660ff1681526020018761ffff1661ffff16815260200186600660200280838360005b838110156105ae578082015183820152602001610596565b5050505090500185815260200184600960200280838360005b838110156105df5780820151838201526020016105c7565b5050505090500183810383528e818151815260200191508051906020019080838360005b8381101561061b578082015183820152602001610603565b50505050905090810190601f1680156106485780820380516001836020036101000a031916815260200191505b50838103825289818151815260200191508051906020019080838360005b8381101561067e578082015183820152602001610666565b50505050905090810190601f1680156106ab5780820380516001836020036101000a031916815260200191505b509d505050505050505050505050505060405180910390f35b6102e1600435611438565b34156106da57600080fd5b6102e160043560243560443560643561183a565b34156106f957600080fd5b6102e1611906565b341561070c57600080fd5b6102f6611974565b341561071f57600080fd5b6102e1600160a060020a036004351661197a565b6102e1600480359060446024803590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405281815292919060208401838380828437509496506119bc95505050505050565b34156107cb57600080fd5b61040c611a8f565b34156107de57600080fd5b6102e1611a9f565b34156107f157600080fd5b6103c7600435611b14565b341561080757600080fd5b6102e1600480359060446024803590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528181529291906020840183838082843750949650611b3d95505050505050565b341561089f57600080fd5b6103c7611c6a565b34156108b257600080fd5b6102e1600160a060020a0360043516611c79565b34156108d157600080fd5b6102f6600160a060020a0360043516611d43565b34156108f057600080fd5b6102e1600160a060020a0360043516611d5e565b341561090f57600080fd5b6102e160046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528181529291906020840183838082843750949650611e0795505050505050565b34156109a257600080fd5b6103c7611f11565b34156109b557600080fd5b6102f6611f20565b34156109c857600080fd5b6102f6611f26565b34156109db57600080fd5b6102e1600435611f2c565b34156109f157600080fd5b6102e160046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052818152929190602084018383808284375094965050509235600160a060020a03169250611f67915050565b3415610a8f57600080fd5b6102e1611ffb565b3415610aa257600080fd5b61044960043561206e565b3415610ab857600080fd5b6102e1600435602435604435612223565b6102e1600435612273565b3415610adf57600080fd5b6102e1600435602435151561ffff60443516612656565b3415610b0157600080fd5b6102e1612715565b3415610b1457600080fd5b61031b61279b565b3415610b2757600080fd5b6102e1600435612806565b3415610b3d57600080fd5b6102f6612841565b3415610b5057600080fd5b6102e1600160a060020a0360043516602435612847565b3415610b7257600080fd5b6102f6612880565b3415610b8557600080fd5b6102f6612886565b3415610b9857600080fd5b6103c761288c565b3415610bab57600080fd5b6102f661289b565b3415610bbe57600080fd5b61040c6128a1565b3415610bd157600080fd5b6103c76004356128b1565b3415610be757600080fd5b6102e16004356128cc565b3415610bfd57600080fd5b6102e160043560243560ff60443516612907565b3415610c1c57600080fd5b6102e160043560243561ffff60443516612975565b3415610c3c57600080fd5b6102f66129e8565b3415610c4f57600080fd5b6103c76129ee565b3415610c6257600080fd5b6102e1600435602435151561ffff604435166129fd565b3415610c8457600080fd5b6102f6612aa5565b3415610c9757600080fd5b6102f6612aab565b3415610caa57600080fd5b6102e1600435612ab1565b3415610cc057600080fd5b610cd4600160a060020a0360043516612aec565b60405160208082528190810183818151815260200191508051906020019060200280838360005b83811015610d13578082015183820152602001610cfb565b505050509050019250505060405180910390f35b3415610d3257600080fd5b6102e1600435602435612baa565b3415610d4b57600080fd5b6103c7600435612c25565b60115481565b60098054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610df25780601f10610dc757610100808354040283529160200191610df2565b820191906000526020600020905b815481529060010190602001808311610dd557829003601f168201915b505050505081565b610e043382612c40565b1515610e0f57600080fd5b610e198183612c64565b8082600160a060020a031633600160a060020a03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600054600160a060020a031681565b60015433600160a060020a0390811691161480610e98575060005433600160a060020a039081169116145b1515610ea357600080fd5b601555565b60015b90565b6004546000190190565b600080600483815481101515610eca57fe5b600091825260209091206004600d909202018101548154630100000090910460ff16919085908110610ef857fe5b600091825260209091206004600d9092020181015481546201000090910460ff16919086908110610f2557fe5b600091825260209091206004600d90920201810154815461010090910460ff16919087908110610f5157fe5b600091825260209091206004600d90920201810154815460ff909116919088908110610f7957fe5b90600052602060002090600d020160030160029054906101000a900461ffff16600488815481101515610fa857fe5b90600052602060002090600d020160030160009054906101000a900461ffff16010101010161ffff169050611011600484815481101515610fe557fe5b600091825260209091206005600d9092020101546a0100000000000000000000900461ffff1682612c92565b9392505050565b600254600160a060020a031681565b6110313382612cac565b151561103c57600080fd5b6110468382612c40565b151561105157600080fd5b600160a060020a038216151561106657600080fd5b611071838383612ccc565b505050565b60005433600160a060020a0390811691161461109157600080fd5b600160a060020a03811615156110a657600080fd5b60008054600160a060020a031916600160a060020a0392909216919091179055565b60155481565b60005433600160a060020a039081169116146110e957600080fd5b600160a060020a03811615156110fe57600080fd5b60018054600160a060020a031916600160a060020a0392909216919091179055565b6111286133a0565b6000806111336133b2565b61113b6133da565b6111436133a0565b60008061114e6133f4565b600061115861341b565b600060048d81548110151561116957fe5b90600052602060002090600d02019050806001018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112115780601f106111e657610100808354040283529160200191611211565b820191906000526020600020905b8154815290600101906020018083116111f457829003601f168201915b505050506003830154919d505061ffff8082169c506201000090910416995060058101600660c0604051908101604052919060c08301826000855b82829054906101000a900461ffff1661ffff168152602001906002019060208260010104928301926001038202915080841161124c5790505050505050985080600401600480602002604051908101604052919060808301826000855b825461010083900a900460ff168152602060019283018181049485019490930390920291018084116112a957905050505050509750806000018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113765780601f1061134b57610100808354040283529160200191611376565b820191906000526020600020905b81548152906001019060200180831161135957829003601f168201915b50505050600c8301549198505060ff1695506113918d61206e565b945060068082019060c0604051908101604052919060c0830182845b8154815260200190600101908083116113ad57505050505093508c92508060020160098060200260405190810160405291906101208301826000855b82829054906101000a900461ffff1661ffff16815260200190600201906020826001010492830192600103820291508084116113e9579050505050505091505091939597999b90929496989a50565b6000806000806000601360149054906101000a900460ff1615151561145c57600080fd5b60008681526005602052604090205433600160a060020a0390811691161461148357600080fd5b60175434101561149257600080fd5b60048054879081106114a057fe5b600091825260209091206007600d90920201015442116114bf57600080fd5b60048054879081106114cd57fe5b600091825260209091206005600d909202010154600480546201000090920461ffff16965060098701955061153c918890811061150657fe5b600091825260209091206004600d909202010160015b60208082049092015460ff929091066101000a90041661ffff8616612d93565b92506000831161154b57600080fd5b600354600160a060020a0316635b42109d8760006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561159c57600080fd5b6102c65a03f115156115ad57600080fd5b5050506040518051905091506004868154811015156115c857fe5b60009182526020909120600c600d90920201015460ff8381169116146115ed57600080fd5b50600480544261ffff600a880261038e0316019182918890811061160d57fe5b600091825260209091206007600d9092020101556004805461166691908890811061163457fe5b600091825260209091206004600d909202010160015b60208082049092015460ff929091066101000a90041684612c92565b600480548890811061167457fe5b600091825260209091206004600d909202018101805461ff00191661010060ff94851602179055805491851691889081106116ab57fe5b60009182526020909120600d90910201600301805461ffff19811661ffff91821693909301169190911790556004805460019190889081106116e957fe5b600091825260209091206002600d9092020101805461ffff620100008083048216949094011690920263ffff000019909216919091179055600354600160a060020a031663c3645759838560405160e060020a63ffffffff851602815260ff90921660048301526024820152604401600060405180830381600087803b151561177157600080fd5b6102c65a03f1151561178257600080fd5b5050600354601754600160a060020a039091169150639b8430eb9060ff851660328060405160e060020a63ffffffff8716028152600481019390935260ff91821660248401521660448201526064016000604051808303818588803b15156117e957600080fd5b6125ee5a03f115156117fa57600080fd5b50505050857f75b0161e4165930093440d1034d01dc9ec811a5c5c4dab3f0d010a63853bf7348460405190815260200160405180910390a2505050505050565b60015460a060020a900460ff161561185157600080fd5b61185b3385612c40565b151561186657600080fd5b600b5461187d908590600160a060020a0316612c64565b600b54600160a060020a03166327ebe40a858585853360405160e060020a63ffffffff88160281526004810195909552602485019390935260448401919091526064830152600160a060020a0316608482015260a401600060405180830381600087803b15156118ec57600080fd5b6102c65a03f115156118fd57600080fd5b50505050505050565b60015433600160a060020a0390811691161480611931575060005433600160a060020a039081169116145b151561193c57600080fd5b60135460a060020a900460ff16151561195457600080fd5b6013805474ff000000000000000000000000000000000000000019169055565b600d5481565b60015433600160a060020a03908116911614806119a5575060005433600160a060020a039081169116145b15156119b057600080fd5b6119b981612da9565b50565b60135460a060020a900460ff16156119d357600080fd5b6014546119df8461206e565b61ffff1610156119ee57600080fd5b60008381526005602052604090205433600160a060020a03908116911614611a1557600080fd5b601554341015611a2457600080fd5b81600484815481101515611a3457fe5b90600052602060002090600d0201600001908051611a56929160200190613436565b5080600484815481101515611a6757fe5b90600052602060002090600d0201600101908051611a89929160200190613436565b50505050565b60015460a060020a900460ff1681565b60015433600160a060020a0390811691161480611aca575060005433600160a060020a039081169116145b1515611ad557600080fd5b33600160a060020a03166108fc30600160a060020a0316319081150290604051600060405180830381858888f193505050501515611b1257600080fd5b565b600081815260056020526040902054600160a060020a0316801515611b3857600080fd5b919050565b60135460a060020a900460ff1615611b5457600080fd5b60008381526005602052604090205433600160a060020a03908116911614611b7b57600080fd5b601654611b878461206e565b61ffff161015611b9657600080fd5b601654611ba28461206e565b61ffff16811515611baf57fe5b04600484815481101515611bbf57fe5b600091825260209091206002600d909202010154700100000000000000000000000000000000900461ffff1610611bf557600080fd5b611c00828233612e47565b506001600484815481101515611c1257fe5b60009182526020909120600d90910201600201805461ffff70010000000000000000000000000000000080830482169094011690920271ffff0000000000000000000000000000000019909216919091179055505050565b601354600160a060020a031681565b60015460009033600160a060020a0390811691161480611ca7575060005433600160a060020a039081169116145b1515611cb257600080fd5b5080600160a060020a0381166385b861886000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611cfa57600080fd5b6102c65a03f11515611d0b57600080fd5b505050604051805190501515611d2057600080fd5b600b8054600160a060020a031916600160a060020a039290921691909117905550565b600160a060020a031660009081526006602052604090205490565b60015433600160a060020a0390811691161480611d89575060005433600160a060020a039081169116145b1515611d9457600080fd5b60015460a060020a900460ff161515611dac57600080fd5b60138054600160a060020a031916600160a060020a0383161790557f450db8da6efbe9c22f2347f7c2021231df1fc58d3ae9a2fa75d39fa44619930581604051600160a060020a03909116815260200160405180910390a150565b60015460009033600160a060020a0390811691161480611e35575060005433600160a060020a039081169116145b1515611e4057600080fd5b600d5460125410611e5057600080fd5b611e5b838330612e47565b600b54909150611e75908290600160a060020a0316612c64565b600b54600160a060020a03166327ebe40a82611e8f61325e565b600f546010543060405160e060020a63ffffffff88160281526004810195909552602485019390935260448401919091526064830152600160a060020a0316608482015260a401600060405180830381600087803b1515611eef57600080fd5b6102c65a03f11515611f0057600080fd5b505060128054600101905550505050565b600354600160a060020a031681565b60165481565b60145481565b60015433600160a060020a0390811691161480611f57575060005433600160a060020a039081169116145b1515611f6257600080fd5b601455565b60015433600160a060020a0390811691161480611f92575060005433600160a060020a039081169116145b1515611f9d57600080fd5b600160a060020a0381161515611fbb5750600154600160a060020a03165b600c5460115410611fcb57600080fd5b600d5460125410611fdb57600080fd5b601180546001908101909155601280549091019055611a89838383612e47565b60015433600160a060020a0390811691161480612026575060005433600160a060020a039081169116145b151561203157600080fd5b60135460a060020a900460ff161561204857600080fd5b6013805474ff0000000000000000000000000000000000000000191660a060020a179055565b6000600c60048381548110151561208157fe5b600091825260209091206002600d9092020101546e010000000000000000000000000000900461ffff168115156120b457fe5b0460016004848154811015156120c657fe5b600091825260209091206002600d9092020101546a0100000000000000000000900461ffff168115156120f557fe5b04600660048581548110151561210757fe5b600091825260209091206002600d90920201015468010000000000000000900461ffff1681151561213457fe5b04600660048681548110151561214657fe5b600091825260209091206002600d9092020101546601000000000000900461ffff1681151561217157fe5b046004808781548110151561218257fe5b600091825260209091206002600d909202010154640100000000900461ffff168115156121ab57fe5b04600480888154811015156121bc57fe5b600091825260209091206002600d90920201015462010000900461ffff168115156121e357fe5b04600c6004898154811015156121f557fe5b600091825260209091206002600d90920201015461ffff1681151561221657fe5b0401010101010192915050565b60025433600160a060020a0390811691161461223e57600080fd5b8060048481548110151561224e57fe5b90600052602060002090600d02016006018360068110151561226c57fe5b0155505050565b6000806000806000601360149054906101000a900460ff1615151561229757600080fd5b60008681526005602052604090205433600160a060020a039081169116146122be57600080fd5b6018543410156122cd57600080fd5b60048054879081106122db57fe5b600091825260209091206008600d90920201015442116122fa57600080fd5b600480548790811061230857fe5b600091825260209091206005600d9092020101546004805464010000000090920461ffff169650600380880401955061235f918890811061234557fe5b600091825260209091206004600d9092020101600261151c565b92506000831161236e57600080fd5b600354600160a060020a0316635b42109d8760006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156123bf57600080fd5b6102c65a03f115156123d057600080fd5b5050506040518051905091506004868154811015156123eb57fe5b60009182526020909120600c600d90920201015460ff83811691161461241057600080fd5b50600480544261ffff600a880261038e0316019182918890811061243057fe5b600091825260209091206008600d9092020101556004805461247191908890811061245757fe5b600091825260209091206004600d9092020101600261164a565b600480548890811061247f57fe5b600091825260209091206004600d909202018101805462ff000019166201000060ff94851602179055805491851691889081106124b857fe5b600091825260209091206003600d9092020101805461ffff6201000080830482169094011690920263ffff00001990921691909117905560048054600191908890811061250157fe5b600091825260209091206002600d9092020101805461ffff6401000000008083048216949094011690920265ffff0000000019909216919091179055600354600160a060020a031663db29fd6e838560405160e060020a63ffffffff851602815260ff90921660048301526024820152604401600060405180830381600087803b151561258d57600080fd5b6102c65a03f1151561259e57600080fd5b5050600354601854600160a060020a039091169150639b8430eb9060ff851660328060405160e060020a63ffffffff8716028152600481019390935260ff91821660248401521660448201526064016000604051808303818588803b151561260557600080fd5b6125ee5a03f1151561261657600080fd5b50505050857f770cca5addca826af2b5d12089bab2cda9bd6b50a2c584df148ece0f4cc5e06e8460405190815260200160405180910390a2505050505050565b60025433600160a060020a0390811691161461267157600080fd5b600182151514156126c8578060048481548110151561268c57fe5b600091825260209091206003600d9092020101805461ffff6201000080830482169094011690920263ffff000019909216919091179055611071565b806004848154811015156126d857fe5b600091825260209091206003600d9092020101805461ffff620100008083048216949094031690920263ffff000019909216919091179055505050565b60015433600160a060020a0390811691161480612740575060005433600160a060020a039081169116145b151561274b57600080fd5b600b54600160a060020a0316635fd8c7106040518163ffffffff1660e060020a028152600401600060405180830381600087803b151561278a57600080fd5b6102c65a03f1151561107157600080fd5b600a8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610df25780601f10610dc757610100808354040283529160200191610df2565b60015433600160a060020a0390811691161480612831575060005433600160a060020a039081169116145b151561283c57600080fd5b601755565b60185481565b600160a060020a038216151561285c57600080fd5b6128663382612c40565b151561287157600080fd5b61287c338383612ccc565b5050565b600f5481565b600e5481565b600154600160a060020a031681565b600c5481565b60135460a060020a900460ff1681565b600760205260009081526040902054600160a060020a031681565b60015433600160a060020a03908116911614806128f7575060005433600160a060020a039081169116145b151561290257600080fd5b601655565b60025433600160a060020a0390811691161461292257600080fd5b8060048481548110151561293257fe5b90600052602060002090600d02016004018360048110151561295057fe5b602091828204019190066101000a81548160ff021916908360ff160217905550505050565b60025433600160a060020a0390811691161461299057600080fd5b806004848154811015156129a057fe5b90600052602060002090600d0201600501836006811015156129be57fe5b601091828204019190066002026101000a81548161ffff021916908361ffff160217905550505050565b60175481565b600b54600160a060020a031681565b60025433600160a060020a03908116911614612a1857600080fd5b60018215151415612a645780600484815481101515612a3357fe5b60009182526020909120600d90910201600301805461ffff19811661ffff9182169390930116919091179055611071565b80600484815481101515612a7457fe5b60009182526020909120600d90910201600301805461ffff19811661ffff9182169390930316919091179055505050565b60105481565b60125481565b60015433600160a060020a0390811691161480612adc575060005433600160a060020a039081169116145b1515612ae757600080fd5b601855565b612af46133a0565b600080612aff6133a0565b600160a060020a038516600090815260066020526040808220546004549095506000190193508190859051805910612b345750595b9080825280602002602001820160405250925060009050600091505b838211612b9f57600082815260056020526040902054600160a060020a0388811691161415612b945781838281518110612b8657fe5b602090810290910101526001015b600190910190612b50565b509095945050505050565b60025433600160a060020a03908116911614612bc557600080fd5b6004805483908110612bd357fe5b90600052602060002090600d020160020181600981101515612bf157fe5b6010808204929092018054929091066002026101000a61ffff81810219841693829004811660010116029190911790555050565b600560205260009081526040902054600160a060020a031681565b600081815260056020526040902054600160a060020a038381169116145b92915050565b6000918252600760205260409091208054600160a060020a031916600160a060020a03909216919091179055565b6000828211612ca45750808203612c5e565b506000612c5e565b600090815260076020526040902054600160a060020a0391821691161490565b600160a060020a03808316600081815260066020908152604080832080546001019055858352600590915290208054600160a060020a0319169091179055831615612d4d57600160a060020a03831660009081526006602090815260408083208054600019019055838352600790915290208054600160a060020a03191690555b8082600160a060020a031684600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000818310612da25781611011565b5090919050565b80600160a060020a038116636237564c6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515612df057600080fd5b6102c65a03f11515612e0157600080fd5b505050604051805190501515612e1657600080fd5b60038054600160a060020a03928316600160a060020a03199182161790915560028054939092169216919091179055565b6000612e516133b2565b612e596133f4565b612e6161341b565b612e696134b4565b600060c060405190810160405280612e816009613300565b60010161ffff1661ffff168152602001612e9b6009613300565b60010161ffff1661ffff168152602001612eb56009613300565b60010161ffff1661ffff168152602001612ecf6009613300565b60010161ffff1661ffff168152602001612ee96009613300565b60010161ffff1661ffff168152602001612f036009613300565b601f0161ffff1661ffff168152509450610120604051908101604052808a8152602001898152602001848152602001600061ffff168152602001600061ffff168152602001608060405190810160405280600460ff168152602001600660ff168152602001600260ff168152602001600160ff168152508152602001868152602001858152602001612f956006613300565b60010160ff168152509150600160048054806001018281612fb69190613525565b600092835260209092208591600d0201815181908051612fda929160200190613436565b50602082015181600101908051612ff5929160200190613436565b50604082015161300b9060028301906009613551565b50606082015160038201805461ffff191661ffff9290921691909117905560808201518160030160026101000a81548161ffff021916908361ffff16021790555060a082015161306190600480840191906135e3565b5060c08201516130779060058301906006613551565b5060e082015161308d9060068084019190613672565b50610100820151600c91909101805460ff191660ff9092169190911790555003905063ffffffff8111156130c057600080fd5b80151561319b576007600460008154811015156130d957fe5b90600052602060002090600d0201600c0160006101000a81548160ff021916908360ff1602179055506103206004600081548110151561311557fe5b6000918252602082206005600d929092020101805469ffff000000000000000019166801000000000000000061ffff9485160217905560048054909190811061315a57fe5b60009182526020909120600d90910201600501805461ffff929092166a0100000000000000000000026bffff00000000000000000000199092169190911790555b600160a060020a0387167f67dea66acb1ab87fd4200e1feb88d278784367a70c65c4cc733c52ebef27e22e82845160405182815260406020820181815290820183818151815260200191508051906020019080838360005b8381101561320b5780820151838201526020016131f3565b50505050905090810190601f1680156132385780820380516001836020036101000a031916815260200191505b50935050505060405180910390a261325260008883612ccc565b98975050505050505050565b600b5460009081908190600160a060020a031663eac9d94c82604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156132ac57600080fd5b6102c65a03f115156132bd57600080fd5b50505060405180519250506fffffffffffffffffffffffffffffffff82106132e457600080fd5b6002820482019050600e54811015612c5e5750600e5492915050565b6008546000906000194301409067ffffffffffffffff1660405191825267ffffffffffffffff1678010000000000000000000000000000000000000000000000000260208201526028016040518091039020426040519182526020820152604090810190519081900390206008805467ffffffffffffffff191667ffffffffffffffff9283161790819055838216911681151561339957fe5b0692915050565b60206040519081016040526000815290565b60c06040519081016040526006815b6000815260001990910190602001816133c15790505090565b6080604051908101604052600081526003602082016133c1565b60c06040519081016040526006815b60008152602001906001900390816134035790505090565b610120604051908101604052600081526008602082016133c1565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061347757805160ff19168380011785556134a4565b828001600101855582156134a4579182015b828111156134a4578251825591602001919060010190613489565b506134b092915061369f565b5090565b6103c0604051908101604052806134c96133a0565b81526020016134d66133a0565b81526020016134e361341b565b815260006020820181905260408201526060016134fe6133da565b815260200161350b6133b2565b81526020016135186133f4565b8152600060209091015290565b81548183558181151161107157600d0281600d02836000526020600020918201910161107191906136b9565b6001830191839082156135d75791602002820160005b838211156135a757835183826101000a81548161ffff021916908361ffff1602179055509260200192600201602081600101049283019260010302613567565b80156135d55782816101000a81549061ffff02191690556002016020816001010492830192600103026135a7565b505b506134b092915061373d565b6001830191839082156136665791602002820160005b8382111561363757835183826101000a81548160ff021916908360ff16021790555092602001926001016020816000010492830192600103026135f9565b80156136645782816101000a81549060ff0219169055600101602081600001049283019260010302613637565b505b506134b092915061375c565b82600681019282156134a457916020028201828111156134a4578251825591602001919060010190613489565b610eab91905b808211156134b057600081556001016136a5565b610eab91905b808211156134b05760006136d3828261377a565b6136e160018301600061377a565b6136ef6002830160006137be565b60038201805463ffffffff1916905561370c6004830160006137be565b61371a6005830160006137be565b6137286006830160006137c5565b50600c8101805460ff19169055600d016136bf565b610eab91905b808211156134b057805461ffff19168155600101613743565b610eab91905b808211156134b057805460ff19168155600101613762565b50805460018160011615610100020316600290046000825580601f106137a057506119b9565b601f0160209004906000526020600020908101906119b9919061369f565b5060009055565b506119b990600681019061369f5600a165627a7a723058200f28b8959c158eb5414277529fd27a82caedc0f7ffd1730f3ff2ead374e55ac70029
Deployed Bytecode
0x6060604052600436106102c65763ffffffff60e060020a60003504166305e4554681146102e357806306fdde0314610308578063095ea7b3146103925780630a0f8168146103b45780630a59bf2d146103e35780631051db34146103f957806318160ddd146104205780631b8ef0bb1461043357806320f317fb1461046057806323b872dd1461047357806327d7874c1461049b57806329337bda146104ba5780632ba73c15146104cd57806333f30a43146104ec57806334e415db146106c45780633d7d3f5a146106cf5780633f4ba83a146106ee578063404d0e3e146107015780634eb7be5b14610714578063554571db146107335780635c975abb146107c05780635fd8c710146107d35780636352211e146107e657806367907404146107fc5780636af04a57146108945780636fbde40d146108a757806370a08231146108c657806371587988146108e557806371ae973e14610904578063757501c5146109975780637c116ec9146109aa5780637e7e5a75146109bd578063817b106e146109d057806382402743146109e65780638456cb5914610a8457806386481d4014610a975780638b97502814610aad5780638e372dcd14610ac95780638ed5047c14610ad457806391876e5714610af657806395d89b4114610b095780639b4d9ecc14610b1c578063a8a5c22c14610b32578063a9059cbb14610b45578063ab94837414610b67578063ae4d0ff714610b7a578063b047fb5014610b8d578063b531933514610ba0578063c3de1ab914610bb3578063c5c5888114610bc6578063c805914a14610bdc578063cf5f87d014610bf2578063d62f146b14610c11578063e2865b4d14610c31578063e6cbe35114610c44578063e7696a2914610c57578063eb845c1714610c79578063f1ca941014610c8c578063f29c787014610c9f578063f4edb15b14610cb5578063f63c553214610d27578063f6a99bdc14610d40575b600b5433600160a060020a039081169116146102e157600080fd5b005b34156102ee57600080fd5b6102f6610d56565b60405190815260200160405180910390f35b341561031357600080fd5b61031b610d5c565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561035757808201518382015260200161033f565b50505050905090810190601f1680156103845780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561039d57600080fd5b6102e1600160a060020a0360043516602435610dfa565b34156103bf57600080fd5b6103c7610e5e565b604051600160a060020a03909116815260200160405180910390f35b34156103ee57600080fd5b6102e1600435610e6d565b341561040457600080fd5b61040c610ea8565b604051901515815260200160405180910390f35b341561042b57600080fd5b6102f6610eae565b341561043e57600080fd5b610449600435610eb8565b60405161ffff909116815260200160405180910390f35b341561046b57600080fd5b6103c7611018565b341561047e57600080fd5b6102e1600160a060020a0360043581169060243516604435611027565b34156104a657600080fd5b6102e1600160a060020a0360043516611076565b34156104c557600080fd5b6102f66110c8565b34156104d857600080fd5b6102e1600160a060020a03600435166110ce565b34156104f757600080fd5b610502600435611120565b60405180806020018c81526020018b81526020018a600660200280838360005b8381101561053a578082015183820152602001610522565b5050505090500189600460200280838360005b8381101561056557808201518382015260200161054d565b50505050905001806020018860ff1660ff1681526020018761ffff1661ffff16815260200186600660200280838360005b838110156105ae578082015183820152602001610596565b5050505090500185815260200184600960200280838360005b838110156105df5780820151838201526020016105c7565b5050505090500183810383528e818151815260200191508051906020019080838360005b8381101561061b578082015183820152602001610603565b50505050905090810190601f1680156106485780820380516001836020036101000a031916815260200191505b50838103825289818151815260200191508051906020019080838360005b8381101561067e578082015183820152602001610666565b50505050905090810190601f1680156106ab5780820380516001836020036101000a031916815260200191505b509d505050505050505050505050505060405180910390f35b6102e1600435611438565b34156106da57600080fd5b6102e160043560243560443560643561183a565b34156106f957600080fd5b6102e1611906565b341561070c57600080fd5b6102f6611974565b341561071f57600080fd5b6102e1600160a060020a036004351661197a565b6102e1600480359060446024803590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405281815292919060208401838380828437509496506119bc95505050505050565b34156107cb57600080fd5b61040c611a8f565b34156107de57600080fd5b6102e1611a9f565b34156107f157600080fd5b6103c7600435611b14565b341561080757600080fd5b6102e1600480359060446024803590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528181529291906020840183838082843750949650611b3d95505050505050565b341561089f57600080fd5b6103c7611c6a565b34156108b257600080fd5b6102e1600160a060020a0360043516611c79565b34156108d157600080fd5b6102f6600160a060020a0360043516611d43565b34156108f057600080fd5b6102e1600160a060020a0360043516611d5e565b341561090f57600080fd5b6102e160046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528181529291906020840183838082843750949650611e0795505050505050565b34156109a257600080fd5b6103c7611f11565b34156109b557600080fd5b6102f6611f20565b34156109c857600080fd5b6102f6611f26565b34156109db57600080fd5b6102e1600435611f2c565b34156109f157600080fd5b6102e160046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052818152929190602084018383808284375094965050509235600160a060020a03169250611f67915050565b3415610a8f57600080fd5b6102e1611ffb565b3415610aa257600080fd5b61044960043561206e565b3415610ab857600080fd5b6102e1600435602435604435612223565b6102e1600435612273565b3415610adf57600080fd5b6102e1600435602435151561ffff60443516612656565b3415610b0157600080fd5b6102e1612715565b3415610b1457600080fd5b61031b61279b565b3415610b2757600080fd5b6102e1600435612806565b3415610b3d57600080fd5b6102f6612841565b3415610b5057600080fd5b6102e1600160a060020a0360043516602435612847565b3415610b7257600080fd5b6102f6612880565b3415610b8557600080fd5b6102f6612886565b3415610b9857600080fd5b6103c761288c565b3415610bab57600080fd5b6102f661289b565b3415610bbe57600080fd5b61040c6128a1565b3415610bd157600080fd5b6103c76004356128b1565b3415610be757600080fd5b6102e16004356128cc565b3415610bfd57600080fd5b6102e160043560243560ff60443516612907565b3415610c1c57600080fd5b6102e160043560243561ffff60443516612975565b3415610c3c57600080fd5b6102f66129e8565b3415610c4f57600080fd5b6103c76129ee565b3415610c6257600080fd5b6102e1600435602435151561ffff604435166129fd565b3415610c8457600080fd5b6102f6612aa5565b3415610c9757600080fd5b6102f6612aab565b3415610caa57600080fd5b6102e1600435612ab1565b3415610cc057600080fd5b610cd4600160a060020a0360043516612aec565b60405160208082528190810183818151815260200191508051906020019060200280838360005b83811015610d13578082015183820152602001610cfb565b505050509050019250505060405180910390f35b3415610d3257600080fd5b6102e1600435602435612baa565b3415610d4b57600080fd5b6103c7600435612c25565b60115481565b60098054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610df25780601f10610dc757610100808354040283529160200191610df2565b820191906000526020600020905b815481529060010190602001808311610dd557829003601f168201915b505050505081565b610e043382612c40565b1515610e0f57600080fd5b610e198183612c64565b8082600160a060020a031633600160a060020a03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600054600160a060020a031681565b60015433600160a060020a0390811691161480610e98575060005433600160a060020a039081169116145b1515610ea357600080fd5b601555565b60015b90565b6004546000190190565b600080600483815481101515610eca57fe5b600091825260209091206004600d909202018101548154630100000090910460ff16919085908110610ef857fe5b600091825260209091206004600d9092020181015481546201000090910460ff16919086908110610f2557fe5b600091825260209091206004600d90920201810154815461010090910460ff16919087908110610f5157fe5b600091825260209091206004600d90920201810154815460ff909116919088908110610f7957fe5b90600052602060002090600d020160030160029054906101000a900461ffff16600488815481101515610fa857fe5b90600052602060002090600d020160030160009054906101000a900461ffff16010101010161ffff169050611011600484815481101515610fe557fe5b600091825260209091206005600d9092020101546a0100000000000000000000900461ffff1682612c92565b9392505050565b600254600160a060020a031681565b6110313382612cac565b151561103c57600080fd5b6110468382612c40565b151561105157600080fd5b600160a060020a038216151561106657600080fd5b611071838383612ccc565b505050565b60005433600160a060020a0390811691161461109157600080fd5b600160a060020a03811615156110a657600080fd5b60008054600160a060020a031916600160a060020a0392909216919091179055565b60155481565b60005433600160a060020a039081169116146110e957600080fd5b600160a060020a03811615156110fe57600080fd5b60018054600160a060020a031916600160a060020a0392909216919091179055565b6111286133a0565b6000806111336133b2565b61113b6133da565b6111436133a0565b60008061114e6133f4565b600061115861341b565b600060048d81548110151561116957fe5b90600052602060002090600d02019050806001018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112115780601f106111e657610100808354040283529160200191611211565b820191906000526020600020905b8154815290600101906020018083116111f457829003601f168201915b505050506003830154919d505061ffff8082169c506201000090910416995060058101600660c0604051908101604052919060c08301826000855b82829054906101000a900461ffff1661ffff168152602001906002019060208260010104928301926001038202915080841161124c5790505050505050985080600401600480602002604051908101604052919060808301826000855b825461010083900a900460ff168152602060019283018181049485019490930390920291018084116112a957905050505050509750806000018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113765780601f1061134b57610100808354040283529160200191611376565b820191906000526020600020905b81548152906001019060200180831161135957829003601f168201915b50505050600c8301549198505060ff1695506113918d61206e565b945060068082019060c0604051908101604052919060c0830182845b8154815260200190600101908083116113ad57505050505093508c92508060020160098060200260405190810160405291906101208301826000855b82829054906101000a900461ffff1661ffff16815260200190600201906020826001010492830192600103820291508084116113e9579050505050505091505091939597999b90929496989a50565b6000806000806000601360149054906101000a900460ff1615151561145c57600080fd5b60008681526005602052604090205433600160a060020a0390811691161461148357600080fd5b60175434101561149257600080fd5b60048054879081106114a057fe5b600091825260209091206007600d90920201015442116114bf57600080fd5b60048054879081106114cd57fe5b600091825260209091206005600d909202010154600480546201000090920461ffff16965060098701955061153c918890811061150657fe5b600091825260209091206004600d909202010160015b60208082049092015460ff929091066101000a90041661ffff8616612d93565b92506000831161154b57600080fd5b600354600160a060020a0316635b42109d8760006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561159c57600080fd5b6102c65a03f115156115ad57600080fd5b5050506040518051905091506004868154811015156115c857fe5b60009182526020909120600c600d90920201015460ff8381169116146115ed57600080fd5b50600480544261ffff600a880261038e0316019182918890811061160d57fe5b600091825260209091206007600d9092020101556004805461166691908890811061163457fe5b600091825260209091206004600d909202010160015b60208082049092015460ff929091066101000a90041684612c92565b600480548890811061167457fe5b600091825260209091206004600d909202018101805461ff00191661010060ff94851602179055805491851691889081106116ab57fe5b60009182526020909120600d90910201600301805461ffff19811661ffff91821693909301169190911790556004805460019190889081106116e957fe5b600091825260209091206002600d9092020101805461ffff620100008083048216949094011690920263ffff000019909216919091179055600354600160a060020a031663c3645759838560405160e060020a63ffffffff851602815260ff90921660048301526024820152604401600060405180830381600087803b151561177157600080fd5b6102c65a03f1151561178257600080fd5b5050600354601754600160a060020a039091169150639b8430eb9060ff851660328060405160e060020a63ffffffff8716028152600481019390935260ff91821660248401521660448201526064016000604051808303818588803b15156117e957600080fd5b6125ee5a03f115156117fa57600080fd5b50505050857f75b0161e4165930093440d1034d01dc9ec811a5c5c4dab3f0d010a63853bf7348460405190815260200160405180910390a2505050505050565b60015460a060020a900460ff161561185157600080fd5b61185b3385612c40565b151561186657600080fd5b600b5461187d908590600160a060020a0316612c64565b600b54600160a060020a03166327ebe40a858585853360405160e060020a63ffffffff88160281526004810195909552602485019390935260448401919091526064830152600160a060020a0316608482015260a401600060405180830381600087803b15156118ec57600080fd5b6102c65a03f115156118fd57600080fd5b50505050505050565b60015433600160a060020a0390811691161480611931575060005433600160a060020a039081169116145b151561193c57600080fd5b60135460a060020a900460ff16151561195457600080fd5b6013805474ff000000000000000000000000000000000000000019169055565b600d5481565b60015433600160a060020a03908116911614806119a5575060005433600160a060020a039081169116145b15156119b057600080fd5b6119b981612da9565b50565b60135460a060020a900460ff16156119d357600080fd5b6014546119df8461206e565b61ffff1610156119ee57600080fd5b60008381526005602052604090205433600160a060020a03908116911614611a1557600080fd5b601554341015611a2457600080fd5b81600484815481101515611a3457fe5b90600052602060002090600d0201600001908051611a56929160200190613436565b5080600484815481101515611a6757fe5b90600052602060002090600d0201600101908051611a89929160200190613436565b50505050565b60015460a060020a900460ff1681565b60015433600160a060020a0390811691161480611aca575060005433600160a060020a039081169116145b1515611ad557600080fd5b33600160a060020a03166108fc30600160a060020a0316319081150290604051600060405180830381858888f193505050501515611b1257600080fd5b565b600081815260056020526040902054600160a060020a0316801515611b3857600080fd5b919050565b60135460a060020a900460ff1615611b5457600080fd5b60008381526005602052604090205433600160a060020a03908116911614611b7b57600080fd5b601654611b878461206e565b61ffff161015611b9657600080fd5b601654611ba28461206e565b61ffff16811515611baf57fe5b04600484815481101515611bbf57fe5b600091825260209091206002600d909202010154700100000000000000000000000000000000900461ffff1610611bf557600080fd5b611c00828233612e47565b506001600484815481101515611c1257fe5b60009182526020909120600d90910201600201805461ffff70010000000000000000000000000000000080830482169094011690920271ffff0000000000000000000000000000000019909216919091179055505050565b601354600160a060020a031681565b60015460009033600160a060020a0390811691161480611ca7575060005433600160a060020a039081169116145b1515611cb257600080fd5b5080600160a060020a0381166385b861886000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611cfa57600080fd5b6102c65a03f11515611d0b57600080fd5b505050604051805190501515611d2057600080fd5b600b8054600160a060020a031916600160a060020a039290921691909117905550565b600160a060020a031660009081526006602052604090205490565b60015433600160a060020a0390811691161480611d89575060005433600160a060020a039081169116145b1515611d9457600080fd5b60015460a060020a900460ff161515611dac57600080fd5b60138054600160a060020a031916600160a060020a0383161790557f450db8da6efbe9c22f2347f7c2021231df1fc58d3ae9a2fa75d39fa44619930581604051600160a060020a03909116815260200160405180910390a150565b60015460009033600160a060020a0390811691161480611e35575060005433600160a060020a039081169116145b1515611e4057600080fd5b600d5460125410611e5057600080fd5b611e5b838330612e47565b600b54909150611e75908290600160a060020a0316612c64565b600b54600160a060020a03166327ebe40a82611e8f61325e565b600f546010543060405160e060020a63ffffffff88160281526004810195909552602485019390935260448401919091526064830152600160a060020a0316608482015260a401600060405180830381600087803b1515611eef57600080fd5b6102c65a03f11515611f0057600080fd5b505060128054600101905550505050565b600354600160a060020a031681565b60165481565b60145481565b60015433600160a060020a0390811691161480611f57575060005433600160a060020a039081169116145b1515611f6257600080fd5b601455565b60015433600160a060020a0390811691161480611f92575060005433600160a060020a039081169116145b1515611f9d57600080fd5b600160a060020a0381161515611fbb5750600154600160a060020a03165b600c5460115410611fcb57600080fd5b600d5460125410611fdb57600080fd5b601180546001908101909155601280549091019055611a89838383612e47565b60015433600160a060020a0390811691161480612026575060005433600160a060020a039081169116145b151561203157600080fd5b60135460a060020a900460ff161561204857600080fd5b6013805474ff0000000000000000000000000000000000000000191660a060020a179055565b6000600c60048381548110151561208157fe5b600091825260209091206002600d9092020101546e010000000000000000000000000000900461ffff168115156120b457fe5b0460016004848154811015156120c657fe5b600091825260209091206002600d9092020101546a0100000000000000000000900461ffff168115156120f557fe5b04600660048581548110151561210757fe5b600091825260209091206002600d90920201015468010000000000000000900461ffff1681151561213457fe5b04600660048681548110151561214657fe5b600091825260209091206002600d9092020101546601000000000000900461ffff1681151561217157fe5b046004808781548110151561218257fe5b600091825260209091206002600d909202010154640100000000900461ffff168115156121ab57fe5b04600480888154811015156121bc57fe5b600091825260209091206002600d90920201015462010000900461ffff168115156121e357fe5b04600c6004898154811015156121f557fe5b600091825260209091206002600d90920201015461ffff1681151561221657fe5b0401010101010192915050565b60025433600160a060020a0390811691161461223e57600080fd5b8060048481548110151561224e57fe5b90600052602060002090600d02016006018360068110151561226c57fe5b0155505050565b6000806000806000601360149054906101000a900460ff1615151561229757600080fd5b60008681526005602052604090205433600160a060020a039081169116146122be57600080fd5b6018543410156122cd57600080fd5b60048054879081106122db57fe5b600091825260209091206008600d90920201015442116122fa57600080fd5b600480548790811061230857fe5b600091825260209091206005600d9092020101546004805464010000000090920461ffff169650600380880401955061235f918890811061234557fe5b600091825260209091206004600d9092020101600261151c565b92506000831161236e57600080fd5b600354600160a060020a0316635b42109d8760006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156123bf57600080fd5b6102c65a03f115156123d057600080fd5b5050506040518051905091506004868154811015156123eb57fe5b60009182526020909120600c600d90920201015460ff83811691161461241057600080fd5b50600480544261ffff600a880261038e0316019182918890811061243057fe5b600091825260209091206008600d9092020101556004805461247191908890811061245757fe5b600091825260209091206004600d9092020101600261164a565b600480548890811061247f57fe5b600091825260209091206004600d909202018101805462ff000019166201000060ff94851602179055805491851691889081106124b857fe5b600091825260209091206003600d9092020101805461ffff6201000080830482169094011690920263ffff00001990921691909117905560048054600191908890811061250157fe5b600091825260209091206002600d9092020101805461ffff6401000000008083048216949094011690920265ffff0000000019909216919091179055600354600160a060020a031663db29fd6e838560405160e060020a63ffffffff851602815260ff90921660048301526024820152604401600060405180830381600087803b151561258d57600080fd5b6102c65a03f1151561259e57600080fd5b5050600354601854600160a060020a039091169150639b8430eb9060ff851660328060405160e060020a63ffffffff8716028152600481019390935260ff91821660248401521660448201526064016000604051808303818588803b151561260557600080fd5b6125ee5a03f1151561261657600080fd5b50505050857f770cca5addca826af2b5d12089bab2cda9bd6b50a2c584df148ece0f4cc5e06e8460405190815260200160405180910390a2505050505050565b60025433600160a060020a0390811691161461267157600080fd5b600182151514156126c8578060048481548110151561268c57fe5b600091825260209091206003600d9092020101805461ffff6201000080830482169094011690920263ffff000019909216919091179055611071565b806004848154811015156126d857fe5b600091825260209091206003600d9092020101805461ffff620100008083048216949094031690920263ffff000019909216919091179055505050565b60015433600160a060020a0390811691161480612740575060005433600160a060020a039081169116145b151561274b57600080fd5b600b54600160a060020a0316635fd8c7106040518163ffffffff1660e060020a028152600401600060405180830381600087803b151561278a57600080fd5b6102c65a03f1151561107157600080fd5b600a8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610df25780601f10610dc757610100808354040283529160200191610df2565b60015433600160a060020a0390811691161480612831575060005433600160a060020a039081169116145b151561283c57600080fd5b601755565b60185481565b600160a060020a038216151561285c57600080fd5b6128663382612c40565b151561287157600080fd5b61287c338383612ccc565b5050565b600f5481565b600e5481565b600154600160a060020a031681565b600c5481565b60135460a060020a900460ff1681565b600760205260009081526040902054600160a060020a031681565b60015433600160a060020a03908116911614806128f7575060005433600160a060020a039081169116145b151561290257600080fd5b601655565b60025433600160a060020a0390811691161461292257600080fd5b8060048481548110151561293257fe5b90600052602060002090600d02016004018360048110151561295057fe5b602091828204019190066101000a81548160ff021916908360ff160217905550505050565b60025433600160a060020a0390811691161461299057600080fd5b806004848154811015156129a057fe5b90600052602060002090600d0201600501836006811015156129be57fe5b601091828204019190066002026101000a81548161ffff021916908361ffff160217905550505050565b60175481565b600b54600160a060020a031681565b60025433600160a060020a03908116911614612a1857600080fd5b60018215151415612a645780600484815481101515612a3357fe5b60009182526020909120600d90910201600301805461ffff19811661ffff9182169390930116919091179055611071565b80600484815481101515612a7457fe5b60009182526020909120600d90910201600301805461ffff19811661ffff9182169390930316919091179055505050565b60105481565b60125481565b60015433600160a060020a0390811691161480612adc575060005433600160a060020a039081169116145b1515612ae757600080fd5b601855565b612af46133a0565b600080612aff6133a0565b600160a060020a038516600090815260066020526040808220546004549095506000190193508190859051805910612b345750595b9080825280602002602001820160405250925060009050600091505b838211612b9f57600082815260056020526040902054600160a060020a0388811691161415612b945781838281518110612b8657fe5b602090810290910101526001015b600190910190612b50565b509095945050505050565b60025433600160a060020a03908116911614612bc557600080fd5b6004805483908110612bd357fe5b90600052602060002090600d020160020181600981101515612bf157fe5b6010808204929092018054929091066002026101000a61ffff81810219841693829004811660010116029190911790555050565b600560205260009081526040902054600160a060020a031681565b600081815260056020526040902054600160a060020a038381169116145b92915050565b6000918252600760205260409091208054600160a060020a031916600160a060020a03909216919091179055565b6000828211612ca45750808203612c5e565b506000612c5e565b600090815260076020526040902054600160a060020a0391821691161490565b600160a060020a03808316600081815260066020908152604080832080546001019055858352600590915290208054600160a060020a0319169091179055831615612d4d57600160a060020a03831660009081526006602090815260408083208054600019019055838352600790915290208054600160a060020a03191690555b8082600160a060020a031684600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000818310612da25781611011565b5090919050565b80600160a060020a038116636237564c6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515612df057600080fd5b6102c65a03f11515612e0157600080fd5b505050604051805190501515612e1657600080fd5b60038054600160a060020a03928316600160a060020a03199182161790915560028054939092169216919091179055565b6000612e516133b2565b612e596133f4565b612e6161341b565b612e696134b4565b600060c060405190810160405280612e816009613300565b60010161ffff1661ffff168152602001612e9b6009613300565b60010161ffff1661ffff168152602001612eb56009613300565b60010161ffff1661ffff168152602001612ecf6009613300565b60010161ffff1661ffff168152602001612ee96009613300565b60010161ffff1661ffff168152602001612f036009613300565b601f0161ffff1661ffff168152509450610120604051908101604052808a8152602001898152602001848152602001600061ffff168152602001600061ffff168152602001608060405190810160405280600460ff168152602001600660ff168152602001600260ff168152602001600160ff168152508152602001868152602001858152602001612f956006613300565b60010160ff168152509150600160048054806001018281612fb69190613525565b600092835260209092208591600d0201815181908051612fda929160200190613436565b50602082015181600101908051612ff5929160200190613436565b50604082015161300b9060028301906009613551565b50606082015160038201805461ffff191661ffff9290921691909117905560808201518160030160026101000a81548161ffff021916908361ffff16021790555060a082015161306190600480840191906135e3565b5060c08201516130779060058301906006613551565b5060e082015161308d9060068084019190613672565b50610100820151600c91909101805460ff191660ff9092169190911790555003905063ffffffff8111156130c057600080fd5b80151561319b576007600460008154811015156130d957fe5b90600052602060002090600d0201600c0160006101000a81548160ff021916908360ff1602179055506103206004600081548110151561311557fe5b6000918252602082206005600d929092020101805469ffff000000000000000019166801000000000000000061ffff9485160217905560048054909190811061315a57fe5b60009182526020909120600d90910201600501805461ffff929092166a0100000000000000000000026bffff00000000000000000000199092169190911790555b600160a060020a0387167f67dea66acb1ab87fd4200e1feb88d278784367a70c65c4cc733c52ebef27e22e82845160405182815260406020820181815290820183818151815260200191508051906020019080838360005b8381101561320b5780820151838201526020016131f3565b50505050905090810190601f1680156132385780820380516001836020036101000a031916815260200191505b50935050505060405180910390a261325260008883612ccc565b98975050505050505050565b600b5460009081908190600160a060020a031663eac9d94c82604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156132ac57600080fd5b6102c65a03f115156132bd57600080fd5b50505060405180519250506fffffffffffffffffffffffffffffffff82106132e457600080fd5b6002820482019050600e54811015612c5e5750600e5492915050565b6008546000906000194301409067ffffffffffffffff1660405191825267ffffffffffffffff1678010000000000000000000000000000000000000000000000000260208201526028016040518091039020426040519182526020820152604090810190519081900390206008805467ffffffffffffffff191667ffffffffffffffff9283161790819055838216911681151561339957fe5b0692915050565b60206040519081016040526000815290565b60c06040519081016040526006815b6000815260001990910190602001816133c15790505090565b6080604051908101604052600081526003602082016133c1565b60c06040519081016040526006815b60008152602001906001900390816134035790505090565b610120604051908101604052600081526008602082016133c1565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061347757805160ff19168380011785556134a4565b828001600101855582156134a4579182015b828111156134a4578251825591602001919060010190613489565b506134b092915061369f565b5090565b6103c0604051908101604052806134c96133a0565b81526020016134d66133a0565b81526020016134e361341b565b815260006020820181905260408201526060016134fe6133da565b815260200161350b6133b2565b81526020016135186133f4565b8152600060209091015290565b81548183558181151161107157600d0281600d02836000526020600020918201910161107191906136b9565b6001830191839082156135d75791602002820160005b838211156135a757835183826101000a81548161ffff021916908361ffff1602179055509260200192600201602081600101049283019260010302613567565b80156135d55782816101000a81549061ffff02191690556002016020816001010492830192600103026135a7565b505b506134b092915061373d565b6001830191839082156136665791602002820160005b8382111561363757835183826101000a81548160ff021916908360ff16021790555092602001926001016020816000010492830192600103026135f9565b80156136645782816101000a81549060ff0219169055600101602081600001049283019260010302613637565b505b506134b092915061375c565b82600681019282156134a457916020028201828111156134a4578251825591602001919060010190613489565b610eab91905b808211156134b057600081556001016136a5565b610eab91905b808211156134b05760006136d3828261377a565b6136e160018301600061377a565b6136ef6002830160006137be565b60038201805463ffffffff1916905561370c6004830160006137be565b61371a6005830160006137be565b6137286006830160006137c5565b50600c8101805460ff19169055600d016136bf565b610eab91905b808211156134b057805461ffff19168155600101613743565b610eab91905b808211156134b057805460ff19168155600101613762565b50805460018160011615610100020316600290046000825580601f106137a057506119b9565b601f0160209004906000526020600020908101906119b9919061369f565b5060009055565b506119b990600681019061369f5600a165627a7a723058200f28b8959c158eb5414277529fd27a82caedc0f7ffd1730f3ff2ead374e55ac70029
Swarm Source
bzzr://0f28b8959c158eb5414277529fd27a82caedc0f7ffd1730f3ff2ead374e55ac7
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.