Source Code
Overview
ETH Balance
0.0005 ETH
Eth Value
$1.17 (@ $2,333.84/ETH)More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 16 from a total of 16 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Buy From Current... | 5563631 | 2873 days ago | IN | 0.01 ETH | 0.00024863 | ||||
| Create Wiki Page | 5563412 | 2873 days ago | IN | 0 ETH | 0.00115252 | ||||
| Create Wiki Page | 5563366 | 2873 days ago | IN | 0 ETH | 0.00088492 | ||||
| Create Wiki Page | 5563364 | 2873 days ago | IN | 0 ETH | 0.00088741 | ||||
| Create Wiki Page | 5563361 | 2873 days ago | IN | 0 ETH | 0.00101977 | ||||
| Create Wiki Page | 5563357 | 2873 days ago | IN | 0 ETH | 0.00088396 | ||||
| Create Wiki Page | 5563355 | 2873 days ago | IN | 0 ETH | 0.00088837 | ||||
| Create Wiki Page | 5563350 | 2873 days ago | IN | 0 ETH | 0.00088895 | ||||
| Create Wiki Page | 5563348 | 2873 days ago | IN | 0 ETH | 0.00081778 | ||||
| Create Wiki Page | 5563343 | 2873 days ago | IN | 0 ETH | 0.00081931 | ||||
| Create Wiki Page | 5563328 | 2873 days ago | IN | 0 ETH | 0.0008197 | ||||
| Create Wiki Page | 5563326 | 2873 days ago | IN | 0 ETH | 0.00095225 | ||||
| Create Wiki Page | 5563278 | 2873 days ago | IN | 0 ETH | 0.00148159 | ||||
| Create Wiki Page | 5563275 | 2873 days ago | IN | 0 ETH | 0.00095091 | ||||
| Create Wiki Page | 5563255 | 2873 days ago | IN | 0 ETH | 0.00063394 | ||||
| Create Wiki Page | 5562628 | 2873 days ago | IN | 0 ETH | 0.00057902 |
Latest 1 internal transaction
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 5563631 | 2873 days ago | 0.0095 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
Wikipediapp
Compiler Version
v0.4.23+commit.124ca40d
Optimization Enabled:
No with 0 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2018-05-06
*/
pragma solidity 0.4.23;
/**
* @title Ownable
* @dev The Ownable contract has an owner address, and provides basic authorization control
* functions, this simplifies the implementation of "user permissions".
*/
contract Ownable {
address public owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev The Ownable constructor sets the original `owner` of the contract to the sender
* account.
*/
function Ownable() public {
owner = msg.sender;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(msg.sender == owner);
_;
}
/**
* @dev Allows the current owner to transfer control of the contract to a newOwner.
* @param newOwner The address to transfer ownership to.
*/
function transferOwnership(address newOwner) public onlyOwner {
require(newOwner != address(0));
OwnershipTransferred(owner, newOwner);
owner = newOwner;
}
}
/**
* Utility library of inline functions on addresses
*/
library AddressUtils {
/**
* Returns whether there is code in the target address
* @dev This function will return false if invoked during the constructor of a contract,
* as the code is not actually created until after the constructor finishes.
* @param addr address address to check
* @return whether there is code in the target address
*/
function isContract(address addr) internal view returns (bool) {
uint256 size;
assembly { size := extcodesize(addr) }
return size > 0;
}
}
/**
* @title SafeMath
* @dev Math operations with safety checks that throw on error
*/
library SafeMath {
/**
* @dev Multiplies two numbers, throws on overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
uint256 c = a * b;
assert(c / a == b);
return c;
}
/**
* @dev Integer division of two numbers, truncating the quotient.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
// assert(b > 0); // Solidity automatically throws when dividing by 0
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
/**
* @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
assert(b <= a);
return a - b;
}
/**
* @dev Adds two numbers, throws on overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
assert(c >= a);
return c;
}
}
/**
* @title ERC721 Non-Fungible Token Standard basic interface
* @dev see https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md
*/
contract ERC721Basic {
event Transfer(address indexed _from, address indexed _to, uint256 _tokenId);
event Approval(address indexed _owner, address indexed _approved, uint256 _tokenId);
event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);
function balanceOf(address _owner) public view returns (uint256 _balance);
function ownerOf(uint256 _tokenId) public view returns (address _owner);
function exists(uint256 _tokenId) public view returns (bool _exists);
function approve(address _to, uint256 _tokenId) public;
function getApproved(uint256 _tokenId) public view returns (address _operator);
function setApprovalForAll(address _operator, bool _approved) public;
function isApprovedForAll(address _owner, address _operator) public view returns (bool);
function transferFrom(address _from, address _to, uint256 _tokenId) public;
function safeTransferFrom(address _from, address _to, uint256 _tokenId) public;
function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes _data) public;
}
/**
* @title ERC721 token receiver interface
* @dev Interface for any contract that wants to support safeTransfers
* from ERC721 asset contracts.
*/
contract ERC721Receiver {
/**
* @dev Magic value to be returned upon successful reception of an NFT
* Equals to `bytes4(keccak256("onERC721Received(address,uint256,bytes)"))`,
* which can be also obtained as `ERC721Receiver(0).onERC721Received.selector`
*/
bytes4 constant ERC721_RECEIVED = 0xf0b9e5ba;
/**
* @notice Handle the receipt of an NFT
* @dev The ERC721 smart contract calls this function on the recipient
* after a `safetransfer`. This function MAY throw to revert and reject the
* transfer. This function MUST use 50,000 gas or less. Return of other
* than the magic value MUST result in the transaction being reverted.
* Note: the contract address is always the message sender.
* @param _from The sending address
* @param _tokenId The NFT identifier which is being transfered
* @param _data Additional data with no specified format
* @return `bytes4(keccak256("onERC721Received(address,uint256,bytes)"))`
*/
function onERC721Received(address _from, uint256 _tokenId, bytes _data) public returns(bytes4);
}
/**
* @title ERC721 Non-Fungible Token Standard basic implementation
* @dev see https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md
*/
contract ERC721BasicToken is ERC721Basic {
using SafeMath for uint256;
using AddressUtils for address;
// Equals to `bytes4(keccak256("onERC721Received(address,uint256,bytes)"))`
// which can be also obtained as `ERC721Receiver(0).onERC721Received.selector`
bytes4 constant ERC721_RECEIVED = 0xf0b9e5ba;
// Mapping from token ID to owner
mapping (uint256 => address) internal tokenOwner;
// Mapping from token ID to approved address
mapping (uint256 => address) internal tokenApprovals;
// Mapping from owner to number of owned token
mapping (address => uint256) internal ownedTokensCount;
// Mapping from owner to operator approvals
mapping (address => mapping (address => bool)) internal operatorApprovals;
/**
* @dev Guarantees msg.sender is owner of the given token
* @param _tokenId uint256 ID of the token to validate its ownership belongs to msg.sender
*/
modifier onlyOwnerOf(uint256 _tokenId) {
require(ownerOf(_tokenId) == msg.sender);
_;
}
/**
* @dev Checks msg.sender can transfer a token, by being owner, approved, or operator
* @param _tokenId uint256 ID of the token to validate
*/
modifier canTransfer(uint256 _tokenId) {
require(isApprovedOrOwner(msg.sender, _tokenId));
_;
}
/**
* @dev Gets the balance of the specified address
* @param _owner address to query the balance of
* @return uint256 representing the amount owned by the passed address
*/
function balanceOf(address _owner) public view returns (uint256) {
require(_owner != address(0));
return ownedTokensCount[_owner];
}
/**
* @dev Gets the owner of the specified token ID
* @param _tokenId uint256 ID of the token to query the owner of
* @return owner address currently marked as the owner of the given token ID
*/
function ownerOf(uint256 _tokenId) public view returns (address) {
address owner = tokenOwner[_tokenId];
require(owner != address(0));
return owner;
}
/**
* @dev Returns whether the specified token exists
* @param _tokenId uint256 ID of the token to query the existance of
* @return whether the token exists
*/
function exists(uint256 _tokenId) public view returns (bool) {
address owner = tokenOwner[_tokenId];
return owner != address(0);
}
/**
* @dev Approves another address to transfer the given token ID
* @dev The zero address indicates there is no approved address.
* @dev There can only be one approved address per token at a given time.
* @dev Can only be called by the token owner or an approved operator.
* @param _to address to be approved for the given token ID
* @param _tokenId uint256 ID of the token to be approved
*/
function approve(address _to, uint256 _tokenId) public {
address owner = ownerOf(_tokenId);
require(_to != owner);
require(msg.sender == owner || isApprovedForAll(owner, msg.sender));
if (getApproved(_tokenId) != address(0) || _to != address(0)) {
tokenApprovals[_tokenId] = _to;
Approval(owner, _to, _tokenId);
}
}
/**
* @dev Gets the approved address for a token ID, or zero if no address set
* @param _tokenId uint256 ID of the token to query the approval of
* @return address currently approved for a the given token ID
*/
function getApproved(uint256 _tokenId) public view returns (address) {
return tokenApprovals[_tokenId];
}
/**
* @dev Sets or unsets the approval of a given operator
* @dev An operator is allowed to transfer all tokens of the sender on their behalf
* @param _to operator address to set the approval
* @param _approved representing the status of the approval to be set
*/
function setApprovalForAll(address _to, bool _approved) public {
require(_to != msg.sender);
operatorApprovals[msg.sender][_to] = _approved;
ApprovalForAll(msg.sender, _to, _approved);
}
/**
* @dev Tells whether an operator is approved by a given owner
* @param _owner owner address which you want to query the approval of
* @param _operator operator address which you want to query the approval of
* @return bool whether the given operator is approved by the given owner
*/
function isApprovedForAll(address _owner, address _operator) public view returns (bool) {
return operatorApprovals[_owner][_operator];
}
/**
* @dev Transfers the ownership of a given token ID to another address
* @dev Usage of this method is discouraged, use `safeTransferFrom` whenever possible
* @dev Requires the msg sender to be the owner, approved, or operator
* @param _from current owner of the token
* @param _to address to receive the ownership of the given token ID
* @param _tokenId uint256 ID of the token to be transferred
*/
function transferFrom(address _from, address _to, uint256 _tokenId) public canTransfer(_tokenId) {
require(_from != address(0));
require(_to != address(0));
clearApproval(_from, _tokenId);
removeTokenFrom(_from, _tokenId);
addTokenTo(_to, _tokenId);
Transfer(_from, _to, _tokenId);
}
/**
* @dev Safely transfers the ownership of a given token ID to another address
* @dev If the target address is a contract, it must implement `onERC721Received`,
* which is called upon a safe transfer, and return the magic value
* `bytes4(keccak256("onERC721Received(address,uint256,bytes)"))`; otherwise,
* the transfer is reverted.
* @dev Requires the msg sender to be the owner, approved, or operator
* @param _from current owner of the token
* @param _to address to receive the ownership of the given token ID
* @param _tokenId uint256 ID of the token to be transferred
*/
function safeTransferFrom(address _from, address _to, uint256 _tokenId) public canTransfer(_tokenId) {
safeTransferFrom(_from, _to, _tokenId, "");
}
/**
* @dev Safely transfers the ownership of a given token ID to another address
* @dev If the target address is a contract, it must implement `onERC721Received`,
* which is called upon a safe transfer, and return the magic value
* `bytes4(keccak256("onERC721Received(address,uint256,bytes)"))`; otherwise,
* the transfer is reverted.
* @dev Requires the msg sender to be the owner, approved, or operator
* @param _from current owner of the token
* @param _to address to receive the ownership of the given token ID
* @param _tokenId uint256 ID of the token to be transferred
* @param _data bytes data to send along with a safe transfer check
*/
function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes _data) public canTransfer(_tokenId) {
transferFrom(_from, _to, _tokenId);
require(checkAndCallSafeTransfer(_from, _to, _tokenId, _data));
}
/**
* @dev Returns whether the given spender can transfer a given token ID
* @param _spender address of the spender to query
* @param _tokenId uint256 ID of the token to be transferred
* @return bool whether the msg.sender is approved for the given token ID,
* is an operator of the owner, or is the owner of the token
*/
function isApprovedOrOwner(address _spender, uint256 _tokenId) internal view returns (bool) {
address owner = ownerOf(_tokenId);
return _spender == owner || getApproved(_tokenId) == _spender || isApprovedForAll(owner, _spender);
}
/**
* @dev Internal function to mint a new token
* @dev Reverts if the given token ID already exists
* @param _to The address that will own the minted token
* @param _tokenId uint256 ID of the token to be minted by the msg.sender
*/
function _mint(address _to, uint256 _tokenId) internal {
require(_to != address(0));
addTokenTo(_to, _tokenId);
Transfer(address(0), _to, _tokenId);
}
/**
* @dev Internal function to burn a specific token
* @dev Reverts if the token does not exist
* @param _tokenId uint256 ID of the token being burned by the msg.sender
*/
function _burn(address _owner, uint256 _tokenId) internal {
clearApproval(_owner, _tokenId);
removeTokenFrom(_owner, _tokenId);
Transfer(_owner, address(0), _tokenId);
}
/**
* @dev Internal function to clear current approval of a given token ID
* @dev Reverts if the given address is not indeed the owner of the token
* @param _owner owner of the token
* @param _tokenId uint256 ID of the token to be transferred
*/
function clearApproval(address _owner, uint256 _tokenId) internal {
require(ownerOf(_tokenId) == _owner);
if (tokenApprovals[_tokenId] != address(0)) {
tokenApprovals[_tokenId] = address(0);
Approval(_owner, address(0), _tokenId);
}
}
/**
* @dev Internal function to add a token ID to the list of a given address
* @param _to address representing the new owner of the given token ID
* @param _tokenId uint256 ID of the token to be added to the tokens list of the given address
*/
function addTokenTo(address _to, uint256 _tokenId) internal {
require(tokenOwner[_tokenId] == address(0));
tokenOwner[_tokenId] = _to;
ownedTokensCount[_to] = ownedTokensCount[_to].add(1);
}
/**
* @dev Internal function to remove a token ID from the list of a given address
* @param _from address representing the previous owner of the given token ID
* @param _tokenId uint256 ID of the token to be removed from the tokens list of the given address
*/
function removeTokenFrom(address _from, uint256 _tokenId) internal {
require(ownerOf(_tokenId) == _from);
ownedTokensCount[_from] = ownedTokensCount[_from].sub(1);
tokenOwner[_tokenId] = address(0);
}
/**
* @dev Internal function to invoke `onERC721Received` on a target address
* @dev The call is not executed if the target address is not a contract
* @param _from address representing the previous owner of the given token ID
* @param _to target address that will receive the tokens
* @param _tokenId uint256 ID of the token to be transferred
* @param _data bytes optional data to send along with the call
* @return whether the call correctly returned the expected magic value
*/
function checkAndCallSafeTransfer(address _from, address _to, uint256 _tokenId, bytes _data) internal returns (bool) {
if (!_to.isContract()) {
return true;
}
bytes4 retval = ERC721Receiver(_to).onERC721Received(_from, _tokenId, _data);
return (retval == ERC721_RECEIVED);
}
}
contract WikiFactory is Ownable, ERC721BasicToken {
struct WikiPage {
string title;
string articleHash; // on roadmap is looking at history of these across blocks and creating a history for owners.
string imageHash;
uint price; // price in wei
}
WikiPage[] public wikiPages;
// Mapping from owner to list of owned token IDs
mapping (address => uint256[]) internal ownedTokens;
// Mapping from token ID to index of the owner tokens list
mapping(uint256 => uint256) internal ownedTokensIndex;
uint costToCreate = 40000000000000000 wei;
function setCostToCreate(uint _fee) external onlyOwner {
costToCreate = _fee;
}
/* mapping (uint => address) public wikiToOwner;
mapping (address => uint) ownerWikiCount; */
function createWikiPage(string _title, string _articleHash, string _imageHash, uint _price) public onlyOwner returns (uint) {
uint id = wikiPages.push(WikiPage(_title, _articleHash, _imageHash, _price)) - 1;
/* tokenOwner[id] = msg.sender;
ownedTokensCount[msg.sender]++; */
_ownMint(id);
}
function paidCreateWikiPage(string _title, string _articleHash, string _imageHash, uint _price) public payable {
require(msg.value >= costToCreate);
uint id = wikiPages.push(WikiPage(_title, _articleHash, _imageHash, _price)) - 1;
/* tokenOwner[id] = msg.sender;
ownedTokensCount[msg.sender]++; */
_ownMint(id);
}
function _ownMint(uint _id) internal {
uint256 length = ownedTokens[msg.sender].length;
ownedTokens[msg.sender].push(_id);
ownedTokensIndex[_id] = length;
_mint(msg.sender, _id);
}
/* function createMultipleWikiPages(string[] _titles) public onlyOwner returns (uint) {
for (uint i = 0; i < _titles.length; i++) {
string storage _title = _titles[i];
uint id = wikiPages.push(WikiPage(_title, '', 10)) - 1;
tokenOwner[id] = msg.sender;
ownedTokensCount[msg.sender]++;
emit NewWikiPage(id, _title, '', 10);
}
} */
function numberWikiPages() public view returns(uint) {
return wikiPages.length;
}
/**
* @dev Internal function to add a token ID to the list of a given address
* @param _to address representing the new owner of the given token ID
* @param _tokenId uint256 ID of the token to be added to the tokens list of the given address
*/
function wikiAddTokenTo(address _to, uint256 _tokenId) internal {
addTokenTo(_to, _tokenId);
uint256 length = ownedTokens[_to].length;
ownedTokens[_to].push(_tokenId);
ownedTokensIndex[_tokenId] = length;
}
/**
* @dev Internal function to remove a token ID from the list of a given address
* @param _from address representing the previous owner of the given token ID
* @param _tokenId uint256 ID of the token to be removed from the tokens list of the given address
*/
function wikiRemoveTokenFrom(address _from, uint256 _tokenId) internal {
removeTokenFrom(_from, _tokenId);
uint256 tokenIndex = ownedTokensIndex[_tokenId];
uint256 lastTokenIndex = ownedTokens[_from].length - 1;
uint256 lastToken = ownedTokens[_from][lastTokenIndex];
ownedTokens[_from][tokenIndex] = lastToken;
ownedTokens[_from][lastTokenIndex] = 0;
// Note that this will handle single-element arrays. In that case, both tokenIndex and lastTokenIndex are going to
// be zero. Then we can make sure that we will remove _tokenId from the ownedTokens list since we are first swapping
// the lastToken to the first position, and then dropping the element placed in the last position of the list
ownedTokens[_from].length--;
ownedTokensIndex[_tokenId] = 0;
ownedTokensIndex[lastToken] = tokenIndex;
}
/**
* @dev Gets the token ID at a given index of the tokens list of the requested owner
* @param _owner address owning the tokens list to be accessed
* @param _index uint256 representing the index to be accessed of the requested tokens list
* @return uint256 token ID at the given index of the tokens list owned by the requested address
*/
function tokenOfOwnerByIndex(address _owner, uint256 _index) public view returns (uint256) {
require(_index < balanceOf(_owner));
return ownedTokens[_owner][_index];
}
}
contract ManageWikiPage is WikiFactory {
event WikiPageChanged(uint id);
mapping(uint => mapping(address => mapping(address => bool))) public collaborators;
/**
* @dev Checks msg.sender can transfer a token, by being owner, approved, or operator
* @param _tokenId uint256 ID of the token to validate
*/
modifier canEdit(uint256 _tokenId) {
require(isCollaboratorOrOwner(msg.sender, _tokenId));
_;
}
function isCollaboratorOrOwner(address _editor, uint256 _tokenId) internal view returns (bool) {
address owner = ownerOf(_tokenId);
bool isCollaborator = collaborators[_tokenId][owner][_editor];
return _editor == owner || isCollaborator;
}
// Dont think we actually want them to be able to change the article
/* function setTitle(uint _wikiId, string _title) public onlyOwnerOf(_wikiId) {
WikiPage storage wikiToChange = wikiPages[_wikiId];
wikiToChange.title = _title;
emit WikiPageChanged(_wikiId, _title, wikiToChange.articleHash, wikiToChange.price);
} */
function addCollaborator(uint _tokenId, address collaborator) public onlyOwnerOf(_tokenId) {
address owner = ownerOf(_tokenId);
collaborators[_tokenId][owner][collaborator] = true;
}
function removeCollaborator(uint _tokenId, address collaborator) public onlyOwnerOf(_tokenId) {
address owner = ownerOf(_tokenId);
collaborators[_tokenId][owner][collaborator] = false;
}
function setArticleHash(uint _wikiId, string _articleHash) public canEdit(_wikiId) {
WikiPage storage wikiToChange = wikiPages[_wikiId];
wikiToChange.articleHash = _articleHash;
emit WikiPageChanged(_wikiId);
}
function setImageHash(uint _wikiId, string _imageHash) public canEdit(_wikiId) {
WikiPage storage wikiToChange = wikiPages[_wikiId];
wikiToChange.imageHash = _imageHash;
emit WikiPageChanged(_wikiId);
}
function doublePrice(uint _wikiId) internal {
WikiPage storage wikiToChange = wikiPages[_wikiId];
wikiToChange.price = wikiToChange.price * 2;
emit WikiPageChanged(_wikiId);
}
}
contract Wikipediapp is ManageWikiPage {
string public name = "WikiToken";
string public symbol = "WT";
function buyFromCurrentOwner(uint _tokenId) public payable {
require(_tokenId < wikiPages.length);
require(tokenOwner[_tokenId] != msg.sender);
WikiPage storage wikiToChange = wikiPages[_tokenId];
require(msg.value >= wikiToChange.price);
address previousOwner = tokenOwner[_tokenId];
if (previousOwner == address(0)) {
previousOwner = owner; // if for some reason the token is ownerless, avoid sending into 0x0
}
wikiRemoveTokenFrom(previousOwner, _tokenId);
wikiAddTokenTo(msg.sender, _tokenId);
previousOwner.transfer((wikiToChange.price * 95) / 100);
doublePrice(_tokenId);
}
function getContractBalance() constant returns (uint){
return this.balance;
}
function sendBalance() public onlyOwner {
owner.transfer(address(this).balance);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_fee","type":"uint256"}],"name":"setCostToCreate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_title","type":"string"},{"name":"_articleHash","type":"string"},{"name":"_imageHash","type":"string"},{"name":"_price","type":"uint256"}],"name":"paidCreateWikiPage","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"exists","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"collaborator","type":"address"}],"name":"removeCollaborator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_title","type":"string"},{"name":"_articleHash","type":"string"},{"name":"_imageHash","type":"string"},{"name":"_price","type":"uint256"}],"name":"createWikiPage","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getContractBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"numberWikiPages","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"buyFromCurrentOwner","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_wikiId","type":"uint256"},{"name":"_imageHash","type":"string"}],"name":"setImageHash","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"address"},{"name":"","type":"address"}],"name":"collaborators","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"},{"name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"wikiPages","outputs":[{"name":"title","type":"string"},{"name":"articleHash","type":"string"},{"name":"imageHash","type":"string"},{"name":"price","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_wikiId","type":"uint256"},{"name":"_articleHash","type":"string"}],"name":"setArticleHash","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"collaborator","type":"address"}],"name":"addCollaborator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"sendBalance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[{"indexed":false,"name":"id","type":"uint256"}],"name":"WikiPageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_approved","type":"address"},{"indexed":false,"name":"_tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_operator","type":"address"},{"indexed":false,"name":"_approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]Contract Creation Code
6080604052668e1bc9bf0400006008556040805190810160405280600981526020017f57696b69546f6b656e0000000000000000000000000000000000000000000000815250600a90805190602001906200005c929190620000f1565b506040805190810160405280600281526020017f5754000000000000000000000000000000000000000000000000000000000000815250600b9080519060200190620000aa929190620000f1565b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001a0565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200013457805160ff191683800117855562000165565b8280016001018555821562000165579182015b828111156200016457825182559160200191906001019062000147565b5b50905062000174919062000178565b5090565b6200019d91905b80821115620001995760008160009055506001016200017f565b5090565b90565b61306f80620001b06000396000f30060806040526004361061016a576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461016f578063081812fc146101ff578063095ea7b31461026c57806323b872dd146102b95780632de3cddc146103265780632f745c591461035357806333b0f7f7146103b457806342842e0e146104a65780634f558e7914610513578063601b349c146105585780636352211e146105a557806367460c25146106125780636f9fb98a1461072557806370a0823114610750578063738d8d82146107a75780638da5cb5b146107d257806395d89b4114610829578063990cc5c9146108b95780639e3edce9146108d9578063a22cb4651461094c578063b1a2d4d41461099b578063b88d4fde14610a20578063bf90efa114610ad3578063ce2fc87314610c58578063d4bd5a0d14610ccb578063e7422d2914610d18578063e985e9c514610d2f578063f2fde38b14610daa575b600080fd5b34801561017b57600080fd5b50610184610ded565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101c45780820151818401526020810190506101a9565b50505050905090810190601f1680156101f15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561020b57600080fd5b5061022a60048036038101908080359060200190929190505050610e8b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561027857600080fd5b506102b7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ec8565b005b3480156102c557600080fd5b50610324600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061108e565b005b34801561033257600080fd5b50610351600480360381019080803590602001909291905050506111a5565b005b34801561035f57600080fd5b5061039e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061120a565b6040518082815260200191505060405180910390f35b6104a4600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929080359060200190929190505050611281565b005b3480156104b257600080fd5b50610511600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061135b565b005b34801561051f57600080fd5b5061053e60048036038101908080359060200190929190505050611393565b604051808215151515815260200191505060405180910390f35b34801561056457600080fd5b506105a360048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611405565b005b3480156105b157600080fd5b506105d060048036038101908080359060200190929190505050611501565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561061e57600080fd5b5061070f600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192908035906020019092919050505061157f565b6040518082815260200191505060405180910390f35b34801561073157600080fd5b5061073a6116a6565b6040518082815260200191505060405180910390f35b34801561075c57600080fd5b50610791600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116c5565b6040518082815260200191505060405180910390f35b3480156107b357600080fd5b506107bc611749565b6040518082815260200191505060405180910390f35b3480156107de57600080fd5b506107e7611756565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561083557600080fd5b5061083e61177b565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561087e578082015181840152602081019050610863565b50505050905090810190601f1680156108ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6108d760048036038101908080359060200190929190505050611819565b005b3480156108e557600080fd5b5061094a60048036038101908080359060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506119db565b005b34801561095857600080fd5b50610999600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611a68565b005b3480156109a757600080fd5b50610a0660048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ba4565b604051808215151515815260200191505060405180910390f35b348015610a2c57600080fd5b50610ad1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611be0565b005b348015610adf57600080fd5b50610afe60048036038101908080359060200190929190505050611c1f565b60405180806020018060200180602001858152602001848103845288818151815260200191508051906020019080838360005b83811015610b4c578082015181840152602081019050610b31565b50505050905090810190601f168015610b795780820380516001836020036101000a031916815260200191505b50848103835287818151815260200191508051906020019080838360005b83811015610bb2578082015181840152602081019050610b97565b50505050905090810190601f168015610bdf5780820380516001836020036101000a031916815260200191505b50848103825286818151815260200191508051906020019080838360005b83811015610c18578082015181840152602081019050610bfd565b50505050905090810190601f168015610c455780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b348015610c6457600080fd5b50610cc960048036038101908080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611e26565b005b348015610cd757600080fd5b50610d1660048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611eb3565b005b348015610d2457600080fd5b50610d2d611faf565b005b348015610d3b57600080fd5b50610d90600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061208b565b604051808215151515815260200191505060405180910390f35b348015610db657600080fd5b50610deb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061211f565b005b600a8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610e835780601f10610e5857610100808354040283529160200191610e83565b820191906000526020600020905b815481529060010190602001808311610e6657829003601f168201915b505050505081565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610ed382611501565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610f1057600080fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610f505750610f4f813361208b565b5b1515610f5b57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16610f7c83610e8b565b73ffffffffffffffffffffffffffffffffffffffff16141580610fcc5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561108957826002600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a35b505050565b806110993382612274565b15156110a457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141515156110e057600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561111c57600080fd5b6111268483612309565b6111308483612472565b61113a83836125a1565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a350505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561120057600080fd5b8060088190555050565b6000611215836116c5565b8210151561122257600080fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110151561126e57fe5b9060005260206000200154905092915050565b6000600854341015151561129457600080fd5b6001600560806040519081016040528088815260200187815260200186815260200185815250908060018154018082558091505090600182039060005260206000209060040201600090919290919091506000820151816000019080519060200190611301929190612ef2565b50602082015181600101908051906020019061131e929190612ef2565b50604082015181600201908051906020019061133b929190612ef2565b50606082015181600301555050039050611354816126fb565b5050505050565b806113663382612274565b151561137157600080fd5b61138d8484846020604051908101604052806000815250611be0565b50505050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b6000823373ffffffffffffffffffffffffffffffffffffffff1661142882611501565b73ffffffffffffffffffffffffffffffffffffffff1614151561144a57600080fd5b61145384611501565b915060006009600086815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050505050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561157657600080fd5b80915050919050565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115dd57600080fd5b600160056080604051908101604052808981526020018881526020018781526020018681525090806001815401808255809150509060018203906000526020600020906004020160009091929091909150600082015181600001908051906020019061164a929190612ef2565b506020820151816001019080519060200190611667929190612ef2565b506040820151816002019080519060200190611684929190612ef2565b5060608201518160030155505003905061169d816126fb565b50949350505050565b60003073ffffffffffffffffffffffffffffffffffffffff1631905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561170257600080fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600580549050905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156118115780601f106117e657610100808354040283529160200191611811565b820191906000526020600020905b8154815290600101906020018083116117f457829003601f168201915b505050505081565b6000806005805490508310151561182f57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166001600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561189d57600080fd5b6005838154811015156118ac57fe5b90600052602060002090600402019150816003015434101515156118cf57600080fd5b6001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561195f576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b61196981846127d1565b61197333846129d9565b8073ffffffffffffffffffffffffffffffffffffffff166108fc6064605f8560030154028115156119a057fe5b049081150290604051600060405180830381858888f193505050501580156119cc573d6000803e3d6000fd5b506119d683612ab0565b505050565b6000826119e83382612b1c565b15156119f357600080fd5b600584815481101515611a0257fe5b9060005260206000209060040201915082826002019080519060200190611a2a929190612f72565b507f65ebcae8ac3c4d68cdc935d956a07bf13a20381f173715256c5ccf85a334ab54846040518082815260200191505060405180910390a150505050565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515611aa357600080fd5b80600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b6009602052826000526040600020602052816000526040600020602052806000526040600020600092509250509054906101000a900460ff1681565b81611beb3382612274565b1515611bf657600080fd5b611c0185858561108e565b611c0d85858585612c0a565b1515611c1857600080fd5b5050505050565b600581815481101515611c2e57fe5b9060005260206000209060040201600091509050806000018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611cda5780601f10611caf57610100808354040283529160200191611cda565b820191906000526020600020905b815481529060010190602001808311611cbd57829003601f168201915b505050505090806001018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611d785780601f10611d4d57610100808354040283529160200191611d78565b820191906000526020600020905b815481529060010190602001808311611d5b57829003601f168201915b505050505090806002018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611e165780601f10611deb57610100808354040283529160200191611e16565b820191906000526020600020905b815481529060010190602001808311611df957829003601f168201915b5050505050908060030154905084565b600082611e333382612b1c565b1515611e3e57600080fd5b600584815481101515611e4d57fe5b9060005260206000209060040201915082826001019080519060200190611e75929190612f72565b507f65ebcae8ac3c4d68cdc935d956a07bf13a20381f173715256c5ccf85a334ab54846040518082815260200191505060405180910390a150505050565b6000823373ffffffffffffffffffffffffffffffffffffffff16611ed682611501565b73ffffffffffffffffffffffffffffffffffffffff16141515611ef857600080fd5b611f0184611501565b915060016009600086815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561200a57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015612088573d6000803e3d6000fd5b50565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561217a57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156121b657600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008061228083611501565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806122ef57508373ffffffffffffffffffffffffffffffffffffffff166122d784610e8b565b73ffffffffffffffffffffffffffffffffffffffff16145b8061230057506122ff818561208b565b5b91505092915050565b8173ffffffffffffffffffffffffffffffffffffffff1661232982611501565b73ffffffffffffffffffffffffffffffffffffffff1614151561234b57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561246e5760006002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a35b5050565b8173ffffffffffffffffffffffffffffffffffffffff1661249282611501565b73ffffffffffffffffffffffffffffffffffffffff161415156124b457600080fd5b6125076001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612df890919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561260f57600080fd5b816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506126b46001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e1190919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208290806001815401808255809150509060018203906000526020600020016000909192909190915055508060076000848152602001908152602001600020819055506127cd3383612e2f565b5050565b60008060006127e08585612472565b600760008581526020019081526020016000205492506001600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050039150600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110151561288a57fe5b9060005260206000200154905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020848154811015156128e457fe5b90600052602060002001819055506000600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110151561294057fe5b9060005260206000200181905550600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054809190600190036129a09190612ff2565b50600060076000868152602001908152602001600020819055508260076000838152602001908152602001600020819055505050505050565b60006129e583836125a1565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020829080600181540180825580915050906001820390600052602060002001600090919290919091505550806007600084815260200190815260200160002081905550505050565b6000600582815481101515612ac157fe5b90600052602060002090600402019050600281600301540281600301819055507f65ebcae8ac3c4d68cdc935d956a07bf13a20381f173715256c5ccf85a334ab54826040518082815260200191505060405180910390a15050565b6000806000612b2a84611501565b91506009600085815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690508173ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480612c005750805b9250505092915050565b600080612c2c8573ffffffffffffffffffffffffffffffffffffffff16612edf565b1515612c3b5760019150612def565b8473ffffffffffffffffffffffffffffffffffffffff1663f0b9e5ba8786866040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612cfd578082015181840152602081019050612ce2565b50505050905090810190601f168015612d2a5780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b158015612d4b57600080fd5b505af1158015612d5f573d6000803e3d6000fd5b505050506040513d6020811015612d7557600080fd5b8101908080519060200190929190505050905063f0b9e5ba7c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505b50949350505050565b6000828211151515612e0657fe5b818303905092915050565b6000808284019050838110151515612e2557fe5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515612e6b57600080fd5b612e7582826125a1565b8173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600080823b905060008111915050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612f3357805160ff1916838001178555612f61565b82800160010185558215612f61579182015b82811115612f60578251825591602001919060010190612f45565b5b509050612f6e919061301e565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612fb357805160ff1916838001178555612fe1565b82800160010185558215612fe1579182015b82811115612fe0578251825591602001919060010190612fc5565b5b509050612fee919061301e565b5090565b81548183558181111561301957818360005260206000209182019101613018919061301e565b5b505050565b61304091905b8082111561303c576000816000905550600101613024565b5090565b905600a165627a7a723058204929a06c47659529dec012ea1f3ff060d89f059864eeef2d688b78ec510af94b0029
Deployed Bytecode
0x60806040526004361061016a576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461016f578063081812fc146101ff578063095ea7b31461026c57806323b872dd146102b95780632de3cddc146103265780632f745c591461035357806333b0f7f7146103b457806342842e0e146104a65780634f558e7914610513578063601b349c146105585780636352211e146105a557806367460c25146106125780636f9fb98a1461072557806370a0823114610750578063738d8d82146107a75780638da5cb5b146107d257806395d89b4114610829578063990cc5c9146108b95780639e3edce9146108d9578063a22cb4651461094c578063b1a2d4d41461099b578063b88d4fde14610a20578063bf90efa114610ad3578063ce2fc87314610c58578063d4bd5a0d14610ccb578063e7422d2914610d18578063e985e9c514610d2f578063f2fde38b14610daa575b600080fd5b34801561017b57600080fd5b50610184610ded565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101c45780820151818401526020810190506101a9565b50505050905090810190601f1680156101f15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561020b57600080fd5b5061022a60048036038101908080359060200190929190505050610e8b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561027857600080fd5b506102b7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ec8565b005b3480156102c557600080fd5b50610324600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061108e565b005b34801561033257600080fd5b50610351600480360381019080803590602001909291905050506111a5565b005b34801561035f57600080fd5b5061039e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061120a565b6040518082815260200191505060405180910390f35b6104a4600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929080359060200190929190505050611281565b005b3480156104b257600080fd5b50610511600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061135b565b005b34801561051f57600080fd5b5061053e60048036038101908080359060200190929190505050611393565b604051808215151515815260200191505060405180910390f35b34801561056457600080fd5b506105a360048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611405565b005b3480156105b157600080fd5b506105d060048036038101908080359060200190929190505050611501565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561061e57600080fd5b5061070f600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192908035906020019092919050505061157f565b6040518082815260200191505060405180910390f35b34801561073157600080fd5b5061073a6116a6565b6040518082815260200191505060405180910390f35b34801561075c57600080fd5b50610791600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116c5565b6040518082815260200191505060405180910390f35b3480156107b357600080fd5b506107bc611749565b6040518082815260200191505060405180910390f35b3480156107de57600080fd5b506107e7611756565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561083557600080fd5b5061083e61177b565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561087e578082015181840152602081019050610863565b50505050905090810190601f1680156108ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6108d760048036038101908080359060200190929190505050611819565b005b3480156108e557600080fd5b5061094a60048036038101908080359060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506119db565b005b34801561095857600080fd5b50610999600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611a68565b005b3480156109a757600080fd5b50610a0660048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ba4565b604051808215151515815260200191505060405180910390f35b348015610a2c57600080fd5b50610ad1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611be0565b005b348015610adf57600080fd5b50610afe60048036038101908080359060200190929190505050611c1f565b60405180806020018060200180602001858152602001848103845288818151815260200191508051906020019080838360005b83811015610b4c578082015181840152602081019050610b31565b50505050905090810190601f168015610b795780820380516001836020036101000a031916815260200191505b50848103835287818151815260200191508051906020019080838360005b83811015610bb2578082015181840152602081019050610b97565b50505050905090810190601f168015610bdf5780820380516001836020036101000a031916815260200191505b50848103825286818151815260200191508051906020019080838360005b83811015610c18578082015181840152602081019050610bfd565b50505050905090810190601f168015610c455780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b348015610c6457600080fd5b50610cc960048036038101908080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611e26565b005b348015610cd757600080fd5b50610d1660048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611eb3565b005b348015610d2457600080fd5b50610d2d611faf565b005b348015610d3b57600080fd5b50610d90600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061208b565b604051808215151515815260200191505060405180910390f35b348015610db657600080fd5b50610deb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061211f565b005b600a8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610e835780601f10610e5857610100808354040283529160200191610e83565b820191906000526020600020905b815481529060010190602001808311610e6657829003601f168201915b505050505081565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610ed382611501565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610f1057600080fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610f505750610f4f813361208b565b5b1515610f5b57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16610f7c83610e8b565b73ffffffffffffffffffffffffffffffffffffffff16141580610fcc5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561108957826002600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a35b505050565b806110993382612274565b15156110a457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141515156110e057600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561111c57600080fd5b6111268483612309565b6111308483612472565b61113a83836125a1565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a350505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561120057600080fd5b8060088190555050565b6000611215836116c5565b8210151561122257600080fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110151561126e57fe5b9060005260206000200154905092915050565b6000600854341015151561129457600080fd5b6001600560806040519081016040528088815260200187815260200186815260200185815250908060018154018082558091505090600182039060005260206000209060040201600090919290919091506000820151816000019080519060200190611301929190612ef2565b50602082015181600101908051906020019061131e929190612ef2565b50604082015181600201908051906020019061133b929190612ef2565b50606082015181600301555050039050611354816126fb565b5050505050565b806113663382612274565b151561137157600080fd5b61138d8484846020604051908101604052806000815250611be0565b50505050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b6000823373ffffffffffffffffffffffffffffffffffffffff1661142882611501565b73ffffffffffffffffffffffffffffffffffffffff1614151561144a57600080fd5b61145384611501565b915060006009600086815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050505050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561157657600080fd5b80915050919050565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115dd57600080fd5b600160056080604051908101604052808981526020018881526020018781526020018681525090806001815401808255809150509060018203906000526020600020906004020160009091929091909150600082015181600001908051906020019061164a929190612ef2565b506020820151816001019080519060200190611667929190612ef2565b506040820151816002019080519060200190611684929190612ef2565b5060608201518160030155505003905061169d816126fb565b50949350505050565b60003073ffffffffffffffffffffffffffffffffffffffff1631905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561170257600080fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600580549050905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156118115780601f106117e657610100808354040283529160200191611811565b820191906000526020600020905b8154815290600101906020018083116117f457829003601f168201915b505050505081565b6000806005805490508310151561182f57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166001600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561189d57600080fd5b6005838154811015156118ac57fe5b90600052602060002090600402019150816003015434101515156118cf57600080fd5b6001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561195f576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b61196981846127d1565b61197333846129d9565b8073ffffffffffffffffffffffffffffffffffffffff166108fc6064605f8560030154028115156119a057fe5b049081150290604051600060405180830381858888f193505050501580156119cc573d6000803e3d6000fd5b506119d683612ab0565b505050565b6000826119e83382612b1c565b15156119f357600080fd5b600584815481101515611a0257fe5b9060005260206000209060040201915082826002019080519060200190611a2a929190612f72565b507f65ebcae8ac3c4d68cdc935d956a07bf13a20381f173715256c5ccf85a334ab54846040518082815260200191505060405180910390a150505050565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515611aa357600080fd5b80600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b6009602052826000526040600020602052816000526040600020602052806000526040600020600092509250509054906101000a900460ff1681565b81611beb3382612274565b1515611bf657600080fd5b611c0185858561108e565b611c0d85858585612c0a565b1515611c1857600080fd5b5050505050565b600581815481101515611c2e57fe5b9060005260206000209060040201600091509050806000018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611cda5780601f10611caf57610100808354040283529160200191611cda565b820191906000526020600020905b815481529060010190602001808311611cbd57829003601f168201915b505050505090806001018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611d785780601f10611d4d57610100808354040283529160200191611d78565b820191906000526020600020905b815481529060010190602001808311611d5b57829003601f168201915b505050505090806002018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611e165780601f10611deb57610100808354040283529160200191611e16565b820191906000526020600020905b815481529060010190602001808311611df957829003601f168201915b5050505050908060030154905084565b600082611e333382612b1c565b1515611e3e57600080fd5b600584815481101515611e4d57fe5b9060005260206000209060040201915082826001019080519060200190611e75929190612f72565b507f65ebcae8ac3c4d68cdc935d956a07bf13a20381f173715256c5ccf85a334ab54846040518082815260200191505060405180910390a150505050565b6000823373ffffffffffffffffffffffffffffffffffffffff16611ed682611501565b73ffffffffffffffffffffffffffffffffffffffff16141515611ef857600080fd5b611f0184611501565b915060016009600086815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561200a57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015612088573d6000803e3d6000fd5b50565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561217a57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156121b657600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008061228083611501565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806122ef57508373ffffffffffffffffffffffffffffffffffffffff166122d784610e8b565b73ffffffffffffffffffffffffffffffffffffffff16145b8061230057506122ff818561208b565b5b91505092915050565b8173ffffffffffffffffffffffffffffffffffffffff1661232982611501565b73ffffffffffffffffffffffffffffffffffffffff1614151561234b57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561246e5760006002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a35b5050565b8173ffffffffffffffffffffffffffffffffffffffff1661249282611501565b73ffffffffffffffffffffffffffffffffffffffff161415156124b457600080fd5b6125076001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612df890919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561260f57600080fd5b816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506126b46001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e1190919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208290806001815401808255809150509060018203906000526020600020016000909192909190915055508060076000848152602001908152602001600020819055506127cd3383612e2f565b5050565b60008060006127e08585612472565b600760008581526020019081526020016000205492506001600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050039150600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110151561288a57fe5b9060005260206000200154905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020848154811015156128e457fe5b90600052602060002001819055506000600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110151561294057fe5b9060005260206000200181905550600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054809190600190036129a09190612ff2565b50600060076000868152602001908152602001600020819055508260076000838152602001908152602001600020819055505050505050565b60006129e583836125a1565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020829080600181540180825580915050906001820390600052602060002001600090919290919091505550806007600084815260200190815260200160002081905550505050565b6000600582815481101515612ac157fe5b90600052602060002090600402019050600281600301540281600301819055507f65ebcae8ac3c4d68cdc935d956a07bf13a20381f173715256c5ccf85a334ab54826040518082815260200191505060405180910390a15050565b6000806000612b2a84611501565b91506009600085815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690508173ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480612c005750805b9250505092915050565b600080612c2c8573ffffffffffffffffffffffffffffffffffffffff16612edf565b1515612c3b5760019150612def565b8473ffffffffffffffffffffffffffffffffffffffff1663f0b9e5ba8786866040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612cfd578082015181840152602081019050612ce2565b50505050905090810190601f168015612d2a5780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b158015612d4b57600080fd5b505af1158015612d5f573d6000803e3d6000fd5b505050506040513d6020811015612d7557600080fd5b8101908080519060200190929190505050905063f0b9e5ba7c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505b50949350505050565b6000828211151515612e0657fe5b818303905092915050565b6000808284019050838110151515612e2557fe5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515612e6b57600080fd5b612e7582826125a1565b8173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600080823b905060008111915050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612f3357805160ff1916838001178555612f61565b82800160010185558215612f61579182015b82811115612f60578251825591602001919060010190612f45565b5b509050612f6e919061301e565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612fb357805160ff1916838001178555612fe1565b82800160010185558215612fe1579182015b82811115612fe0578251825591602001919060010190612fc5565b5b509050612fee919061301e565b5090565b81548183558181111561301957818360005260206000209182019101613018919061301e565b5b505050565b61304091905b8082111561303c576000816000905550600101613024565b5090565b905600a165627a7a723058204929a06c47659529dec012ea1f3ff060d89f059864eeef2d688b78ec510af94b0029
Swarm Source
bzzr://4929a06c47659529dec012ea1f3ff060d89f059864eeef2d688b78ec510af94b
Loading...
Loading
Loading...
Loading
Net Worth in USD
$1.17
Net Worth in ETH
0.0005
Token Allocations
ETH
100.00%
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ETH | 100.00% | $2,332.75 | 0.0005 | $1.17 |
Loading...
Loading
Loading...
Loading
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.