Contract 0xb932a70a57673d89f4acffbe830e8ed7f75fb9e0

 
Ad
Ad
Txn Hash Method
Block
From
To
Value
0xc6699c9996bf4a8cb3aa9305eb014f34d25fc55d2af3f7d137ab450f520ec7a1Set Approval For...(pending)2021-06-13 7:56:043 hrs 9 mins ago0x41206e92f04d3b80a8a471e71acb0402528a6344 IN SuperRare: SUPR Token0 Ether(Pending)(Pending)
0x7527cd6038b5151f36548677de53be96a2c02bdc092199f82ff4ef12b4173adcTransfer From126255502021-06-13 10:23:2541 mins ago0x2638f91804b32190622ef82c6a265d8e9dae57a6 IN  SuperRare: SUPR Token0 Ether0.0007455810
0xcc3f3a9e2c96e5edc80cd05a39243374701e3b7fa88ee538eeb7a69732cc74cdTransfer From126255422021-06-13 10:20:2844 mins ago0x2638f91804b32190622ef82c6a265d8e9dae57a6 IN  SuperRare: SUPR Token0 Ether0.00078676789.1
0xf905bc0ad78fd8821cd9a8b5e367e2b18c42a67849ab5bc34444e55ec3d7578aAdd New Token126253032021-06-13 9:26:221 hr 38 mins ago0x8397bc3c5a60a1883174f722403d63a8833312b7 IN  SuperRare: SUPR Token0 Ether0.00288210
0x1f3de7e72ad1819d63f5e5b506423e8f7cf1037881f044826b8bca30efa0e3d7Add New Token126252462021-06-13 9:13:271 hr 51 mins ago0x4ea30897907944fbc38f4e90d2f7f939969e9347 IN  SuperRare: SUPR Token0 Ether0.00273910
0x077ed16c22c4c38f793f39fc7da159d9468156603f406e87f76bbb9e51292922Transfer From126252372021-06-13 9:11:371 hr 53 mins ago0x4649941b72d28fc534cec775a6f35ea1fa4cdc63 IN  SuperRare: SUPR Token0 Ether0.00080155413
0xb78a7195df8885d0b689c73b1fdbf965db7c43f7932915feae2790f845d80c5fTransfer From126252112021-06-13 9:06:351 hr 58 mins ago0x4649941b72d28fc534cec775a6f35ea1fa4cdc63 IN  SuperRare: SUPR Token0 Ether0.00130985413
0xd086348b374af258aa3f707dd1978f156a27831f90d1e6f517700033085beac8Add New Token126249092021-06-13 8:01:423 hrs 3 mins ago0xe623b7b1892545cd7abd4cbd658a0210a30889ec IN  SuperRare: SUPR Token0 Ether0.00273910
0xf1848f2f0e061efb9e1e7027c9ee717844e2a951f537dd82db3ad76541bf3aeaAdd New Token126244202021-06-13 6:13:304 hrs 51 mins ago0x0bfc14b3e1c8883231811b10794375fa79134fad IN  SuperRare: SUPR Token0 Ether0.00273910
0x9bfa05aac0f5db30eadcacb5e47681620cfc8e363927bf7e077cc39abd4d964aTransfer From126241642021-06-13 5:04:456 hrs ago0x327df1900212b66797c88715590b9d55d1828098 IN  SuperRare: SUPR Token0 Ether0.0007455810
0x8167e08ac45c4422cc594aff937de57893954a2c079749c4a1f17828728d92dcSet Approval For...126240092021-06-13 4:31:026 hrs 34 mins agoENS Name darlington.eth IN  SuperRare: SUPR Token0 Ether0.00051200611
0x38f20accfbc8434d56e29465554df44e0f8fbf6bf28c9771b49ff8bb684bf4cfSet Approval For...126237722021-06-13 3:38:347 hrs 26 mins ago0x6ca4197155fafd65495b97058635b092938a3c76 IN  SuperRare: SUPR Token0 Ether0.0002792766
0x5b1c2c59b1cdf79774df869291c06a4772669868a9c30abdbc5422c08a5ca9bbAdd New Token126236562021-06-13 3:14:507 hrs 50 mins ago0xa3cdd8dc1d0973db547e427e6ef5e82efaa5b63c IN  SuperRare: SUPR Token0 Ether0.00273910
0xa40ef4bc1f791f820ef40a4cc7f82985d561456d191974e4df8a1ae28fce63b1Transfer From126233192021-06-13 1:57:489 hrs 7 mins agoENS Name thefaketomato.eth IN  SuperRare: SUPR Token0 Ether0.0004932648
0x0320d9ab7d9e8031d508a61c26ae6678d1e48026e5b09d38d70b9ef773ced38aTransfer From126232972021-06-13 1:52:379 hrs 12 mins agoENS Name thefaketomato.eth IN  SuperRare: SUPR Token0 Ether0.0008645810
0xddd2563079a5e40d5ecdf54bdda5c8254e5bcab8fdd16ef08019cf448017bbb2Transfer From126232762021-06-13 1:47:289 hrs 17 mins agoENS Name thefaketomato.eth IN  SuperRare: SUPR Token0 Ether0.0005219067
0xfea2b21064c5301f9c94bdd07a0c01dd2c5645c7e77e0d0bdb88d03b526a45d3Transfer From126232602021-06-13 1:44:469 hrs 20 mins agoENS Name thefaketomato.eth IN  SuperRare: SUPR Token0 Ether0.0006052067
0x9b29f0b6bbed98137361439c9d9fe3e0d218630a5f85a0f37b22be1497b4a52aTransfer From126232462021-06-13 1:41:399 hrs 23 mins agoENS Name thefaketomato.eth IN  SuperRare: SUPR Token0 Ether0.0005219067
0x55ada4c3a1afb198abf33b054952755d78990760da29c76caa002a68abfda12eAdd New Token126226202021-06-12 23:19:3111 hrs 45 mins ago0xf5da9d46b4cdb1a0a73fd8b86873e71c930b2850 IN  SuperRare: SUPR Token0 Ether0.00288210
0x6684a6b0e42b963cdfda40182b2130a9eb01b47d34e4c9e15e0b7e8e2da64d65Add New Token126223142021-06-12 22:17:4312 hrs 47 mins ago0x48238faa9bd6d56fb44a32dac6185f04eabf2117 IN  SuperRare: SUPR Token0 Ether0.00273910
0x425b16ce4f38ec2a4c6d2ae360ecddd563dd2e082bd47bd8acdcf26a96cc2a8cTransfer From126221622021-06-12 21:47:3113 hrs 17 mins ago0xaf49a257a6c66b509916ae316358cf83b3f17d49 IN  SuperRare: SUPR Token0 Ether0.0007455810
0xac500bececf0a343d0f3d9d51badf0616f88c37c1a1c5e01b5569c9f945cd118Add New Token126221472021-06-12 21:43:3113 hrs 21 mins ago0xaf49a257a6c66b509916ae316358cf83b3f17d49 IN  SuperRare: SUPR Token0 Ether0.00273910
0x32e2ac519083822d272ee2e7e9e4fd9862032bcb1bf74a88cb0348757ef31c74Set Approval For...126221052021-06-12 21:33:4813 hrs 31 mins ago0xd5914caaf0c1396d5fd548e1f205e62ef08b090d IN  SuperRare: SUPR Token0 Ether0.00060509813
0x0d9d0d4d43eebdf70780a5fed450ed581071eccf2af157ca908e4f8089f499a2Add New Token126220852021-06-12 21:29:3713 hrs 35 mins ago0xb9c6a4132418968210ef4b2cfcc8190e7b8389b1 IN  SuperRare: SUPR Token0 Ether0.00288210
0xdeb70bf231ec4335519e207ab93c58e652ccea8266d2a939d0c3a9a1129761e4Add New Token126217772021-06-12 20:23:5814 hrs 41 mins ago0xf3a280ee8048047217fe93ae04028f3d21c97b90 IN  SuperRare: SUPR Token0 Ether0.00273910
[ Download CSV Export 

OVERVIEW

SuperRare is a marketplace to collect and trade unique, single-edition digital artworks. Each artwork is authentically created by an artist in the network and tokenized as a crypto-collectible digital item that you can own and trade.

View more zero value Internal Transactions in Advanced View mode
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SuperRareV2

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-05-11
*/

pragma solidity ^0.4.24;

/**
 * @title SafeMath
 * @dev Math operations with safety checks that revert on error
 */
library SafeMath {

  /**
  * @dev Multiplies two numbers, reverts on overflow.
  */
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
    // benefit is lost if 'b' is also tested.
    // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
    if (a == 0) {
      return 0;
    }

    uint256 c = a * b;
    require(c / a == b);

    return c;
  }

  /**
  * @dev Integer division of two numbers truncating the quotient, reverts on division by zero.
  */
  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    require(b > 0); // Solidity only automatically asserts 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, reverts on overflow (i.e. if subtrahend is greater than minuend).
  */
  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    require(b <= a);
    uint256 c = a - b;

    return c;
  }

  /**
  * @dev Adds two numbers, reverts on overflow.
  */
  function add(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a + b;
    require(c >= a);

    return c;
  }

  /**
  * @dev Divides two numbers and returns the remainder (unsigned integer modulo),
  * reverts when dividing by zero.
  */
  function mod(uint256 a, uint256 b) internal pure returns (uint256) {
    require(b != 0);
    return a % b;
  }
}

interface IERC165 {

  /**
   * @notice Query if a contract implements an interface
   * @param interfaceId The interface identifier, as specified in ERC-165
   * @dev Interface identification is specified in ERC-165. This function
   * uses less than 30,000 gas.
   */
  function supportsInterface(bytes4 interfaceId)
    external
    view
    returns (bool);
}

interface ISuperRare {
  /**
   * @notice A descriptive name for a collection of NFTs in this contract
   */
  function name() external pure returns (string _name);

  /**
   * @notice An abbreviated name for NFTs in this contract
   */
  function symbol() external pure returns (string _symbol);

  /** 
   * @dev Returns whether the creator is whitelisted
   * @param _creator address to check
   * @return bool 
   */
  function isWhitelisted(address _creator) external view returns (bool);

  /** 
   * @notice A distinct Uniform Resource Identifier (URI) for a given asset.
   * @dev Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC
   * 3986. The URI may point to a JSON file that conforms to the "ERC721
   * Metadata JSON Schema".
   */
  function tokenURI(uint256 _tokenId) external view returns (string);

  /**
  * @dev Gets the creator of the token
  * @param _tokenId uint256 ID of the token
  * @return address of the creator
  */
  function creatorOfToken(uint256 _tokenId) public view returns (address);

  /**
  * @dev Gets the total amount of tokens stored by the contract
  * @return uint256 representing the total amount of tokens
  */
  function totalSupply() public view returns (uint256);
}

/**
 * @title ERC721 token receiver interface
 * @dev Interface for any contract that wants to support safeTransfers
 * from ERC721 asset contracts.
 */
contract IERC721Receiver {
  /**
   * @notice Handle the receipt of an NFT
   * @dev The ERC721 smart contract calls this function on the recipient
   * after a `safeTransfer`. This function MUST return the function selector,
   * otherwise the caller will revert the transaction. The selector to be
   * returned can be obtained as `this.onERC721Received.selector`. This
   * function MAY throw to revert and reject the transfer.
   * Note: the ERC721 contract address is always the message sender.
   * @param operator The address which called `safeTransferFrom` function
   * @param from The address which previously owned the token
   * @param tokenId The NFT identifier which is being transferred
   * @param data Additional data with no specified format
   * @return `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`
   */
  function onERC721Received(
    address operator,
    address from,
    uint256 tokenId,
    bytes data
  )
    public
    returns(bytes4);
}

contract IERC721 is IERC165 {

  event Transfer(
    address indexed from,
    address indexed to,
    uint256 indexed tokenId
  );
  event Approval(
    address indexed owner,
    address indexed approved,
    uint256 indexed 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 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;
}

contract IERC721Creator is IERC721 {
    /**
   * @dev Gets the creator of the token
   * @param _tokenId uint256 ID of the token
   * @return address of the creator
   */
    function tokenCreator(uint256 _tokenId) public view returns (address);
}

/**
 * @title ERC-721 Non-Fungible Token Standard, optional metadata extension
 * @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md
 */
contract IERC721Metadata is IERC721 {
  function name() external view returns (string);
  function symbol() external view returns (string);
  function tokenURI(uint256 tokenId) external view returns (string);
}

/**
 * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension
 * @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md
 */
contract IERC721Enumerable is IERC721 {
  function totalSupply() public view returns (uint256);
  function tokenOfOwnerByIndex(
    address owner,
    uint256 index
  )
    public
    view
    returns (uint256 tokenId);

  function tokenByIndex(uint256 index) public view returns (uint256);
}

/**
 * Utility library of inline functions on addresses
 */
library Address {

  /**
   * Returns whether the target address is a contract
   * @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 account address of the account to check
   * @return whether the target address is a contract
   */
  function isContract(address account) internal view returns (bool) {
    uint256 size;
    // XXX Currently there is no better way to check if there is a contract in an address
    // than to check the size of the code at that address.
    // See https://ethereum.stackexchange.com/a/14016/36603
    // for more details about how this works.
    // TODO Check this again before the Serenity release, because all addresses will be
    // contracts then.
    // solium-disable-next-line security/no-inline-assembly
    assembly { size := extcodesize(account) }
    return size > 0;
  }

}

/**
 * @title ERC165
 * @author Matt Condon (@shrugs)
 * @dev Implements ERC165 using a lookup table.
 */
contract ERC165 is IERC165 {

  bytes4 private constant _InterfaceId_ERC165 = 0x01ffc9a7;
  /**
   * 0x01ffc9a7 ===
   *   bytes4(keccak256('supportsInterface(bytes4)'))
   */

  /**
   * @dev a mapping of interface id to whether or not it's supported
   */
  mapping(bytes4 => bool) private _supportedInterfaces;

  /**
   * @dev A contract implementing SupportsInterfaceWithLookup
   * implement ERC165 itself
   */
  constructor()
    internal
  {
    _registerInterface(_InterfaceId_ERC165);
  }

  /**
   * @dev implement supportsInterface(bytes4) using a lookup table
   */
  function supportsInterface(bytes4 interfaceId)
    external
    view
    returns (bool)
  {
    return _supportedInterfaces[interfaceId];
  }

  /**
   * @dev internal method for registering an interface
   */
  function _registerInterface(bytes4 interfaceId)
    internal
  {
    require(interfaceId != 0xffffffff);
    _supportedInterfaces[interfaceId] = true;
  }
}

/**
 * @title ERC721 Non-Fungible Token Standard basic implementation
 * @dev see https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md
 */
contract ERC721 is ERC165, IERC721 {

  using SafeMath for uint256;
  using Address for address;

  // Equals to `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`
  // which can be also obtained as `IERC721Receiver(0).onERC721Received.selector`
  bytes4 private constant _ERC721_RECEIVED = 0x150b7a02;

  // Mapping from token ID to owner
  mapping (uint256 => address) private _tokenOwner;

  // Mapping from token ID to approved address
  mapping (uint256 => address) private _tokenApprovals;

  // Mapping from owner to number of owned token
  mapping (address => uint256) private _ownedTokensCount;

  // Mapping from owner to operator approvals
  mapping (address => mapping (address => bool)) private _operatorApprovals;

  bytes4 private constant _InterfaceId_ERC721 = 0x80ac58cd;
  /*
   * 0x80ac58cd ===
   *   bytes4(keccak256('balanceOf(address)')) ^
   *   bytes4(keccak256('ownerOf(uint256)')) ^
   *   bytes4(keccak256('approve(address,uint256)')) ^
   *   bytes4(keccak256('getApproved(uint256)')) ^
   *   bytes4(keccak256('setApprovalForAll(address,bool)')) ^
   *   bytes4(keccak256('isApprovedForAll(address,address)')) ^
   *   bytes4(keccak256('transferFrom(address,address,uint256)')) ^
   *   bytes4(keccak256('safeTransferFrom(address,address,uint256)')) ^
   *   bytes4(keccak256('safeTransferFrom(address,address,uint256,bytes)'))
   */

  constructor()
    public
  {
    // register the supported interfaces to conform to ERC721 via ERC165
    _registerInterface(_InterfaceId_ERC721);
  }

  /**
   * @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 Approves another address to transfer the given token ID
   * The zero address indicates there is no approved address.
   * There can only be one approved address per token at a given time.
   * 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));

    _tokenApprovals[tokenId] = to;
    emit Approval(owner, to, tokenId);
  }

  /**
   * @dev Gets the approved address for a token ID, or zero if no address set
   * Reverts if the token ID does not exist.
   * @param tokenId uint256 ID of the token to query the approval of
   * @return address currently approved for the given token ID
   */
  function getApproved(uint256 tokenId) public view returns (address) {
    require(_exists(tokenId));
    return _tokenApprovals[tokenId];
  }

  /**
   * @dev Sets or unsets the approval of a given operator
   * 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;
    emit 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
   * Usage of this method is discouraged, use `safeTransferFrom` whenever possible
   * 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
  {
    require(_isApprovedOrOwner(msg.sender, tokenId));
    require(to != address(0));

    _clearApproval(from, tokenId);
    _removeTokenFrom(from, tokenId);
    _addTokenTo(to, tokenId);

    emit Transfer(from, to, tokenId);
  }

  /**
   * @dev Safely transfers the ownership of a given token ID to another address
   * 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,address,uint256,bytes)"))`; otherwise,
   * the transfer is reverted.
   *
   * 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
  {
    // solium-disable-next-line arg-overflow
    safeTransferFrom(from, to, tokenId, "");
  }

  /**
   * @dev Safely transfers the ownership of a given token ID to another address
   * 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,address,uint256,bytes)"))`; otherwise,
   * the transfer is reverted.
   * 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
  {
    transferFrom(from, to, tokenId);
    // solium-disable-next-line arg-overflow
    require(_checkOnERC721Received(from, to, tokenId, _data));
  }

  /**
   * @dev Returns whether the specified token exists
   * @param tokenId uint256 ID of the token to query the existence of
   * @return whether the token exists
   */
  function _exists(uint256 tokenId) internal view returns (bool) {
    address owner = _tokenOwner[tokenId];
    return owner != address(0);
  }

  /**
   * @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);
    // Disable solium check because of
    // https://github.com/duaraghav8/Solium/issues/175
    // solium-disable-next-line operator-whitespace
    return (
      spender == owner ||
      getApproved(tokenId) == spender ||
      isApprovedForAll(owner, spender)
    );
  }

  /**
   * @dev Internal function to mint a new token
   * 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);
    emit Transfer(address(0), to, tokenId);
  }

  /**
   * @dev Internal function to burn a specific token
   * 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);
    emit Transfer(owner, address(0), tokenId);
  }

  /**
   * @dev Internal function to add a token ID to the list of a given address
   * Note that this function is left internal to make ERC721Enumerable possible, but is not
   * intended to be called by custom derived contracts: in particular, it emits no Transfer event.
   * @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
   * Note that this function is left internal to make ERC721Enumerable possible, but is not
   * intended to be called by custom derived contracts: in particular, it emits no Transfer event,
   * and doesn't clear approvals.
   * @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
   * 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 _checkOnERC721Received(
    address from,
    address to,
    uint256 tokenId,
    bytes _data
  )
    internal
    returns (bool)
  {
    if (!to.isContract()) {
      return true;
    }
    bytes4 retval = IERC721Receiver(to).onERC721Received(
      msg.sender, from, tokenId, _data);
    return (retval == _ERC721_RECEIVED);
  }

  /**
   * @dev Private function to clear current approval of a given token ID
   * 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) private {
    require(ownerOf(tokenId) == owner);
    if (_tokenApprovals[tokenId] != address(0)) {
      _tokenApprovals[tokenId] = address(0);
    }
  }
}

contract ERC721Enumerable is ERC165, ERC721, IERC721Enumerable {
  // Mapping from owner to list of owned token IDs
  mapping(address => uint256[]) private _ownedTokens;

  // Mapping from token ID to index of the owner tokens list
  mapping(uint256 => uint256) private _ownedTokensIndex;

  // Array with all token ids, used for enumeration
  uint256[] private _allTokens;

  // Mapping from token id to position in the allTokens array
  mapping(uint256 => uint256) private _allTokensIndex;

  bytes4 private constant _InterfaceId_ERC721Enumerable = 0x780e9d63;
  /**
   * 0x780e9d63 ===
   *   bytes4(keccak256('totalSupply()')) ^
   *   bytes4(keccak256('tokenOfOwnerByIndex(address,uint256)')) ^
   *   bytes4(keccak256('tokenByIndex(uint256)'))
   */

  /**
   * @dev Constructor function
   */
  constructor() public {
    // register the supported interface to conform to ERC721 via ERC165
    _registerInterface(_InterfaceId_ERC721Enumerable);
  }

  /**
   * @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];
  }

  /**
   * @dev Gets the total amount of tokens stored by the contract
   * @return uint256 representing the total amount of tokens
   */
  function totalSupply() public view returns (uint256) {
    return _allTokens.length;
  }

  /**
   * @dev Gets the token ID at a given index of all the tokens in this contract
   * Reverts if the index is greater or equal to the total number of tokens
   * @param index uint256 representing the index to be accessed of the tokens list
   * @return uint256 token ID at the given index of the tokens list
   */
  function tokenByIndex(uint256 index) public view returns (uint256) {
    require(index < totalSupply());
    return _allTokens[index];
  }

  /**
   * @dev Internal function to add a token ID to the list of a given address
   * This function is internal due to language limitations, see the note in ERC721.sol.
   * It is not intended to be called by custom derived contracts: in particular, it emits no Transfer event.
   * @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 {
    super._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
   * This function is internal due to language limitations, see the note in ERC721.sol.
   * It is not intended to be called by custom derived contracts: in particular, it emits no Transfer event,
   * and doesn't clear approvals.
   * @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 {
    super._removeTokenFrom(from, tokenId);

    // To prevent a gap in the array, we store the last token in the index of the token to delete, and
    // then delete the last slot.
    uint256 tokenIndex = _ownedTokensIndex[tokenId];
    uint256 lastTokenIndex = _ownedTokens[from].length.sub(1);
    uint256 lastToken = _ownedTokens[from][lastTokenIndex];

    _ownedTokens[from][tokenIndex] = lastToken;
    // This also deletes the contents at the last position of the array
    _ownedTokens[from].length--;

    // 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

    _ownedTokensIndex[tokenId] = 0;
    _ownedTokensIndex[lastToken] = tokenIndex;
  }

  /**
   * @dev Internal function to mint a new token
   * Reverts if the given token ID already exists
   * @param to address the beneficiary 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 {
    super._mint(to, tokenId);

    _allTokensIndex[tokenId] = _allTokens.length;
    _allTokens.push(tokenId);
  }

  /**
   * @dev Internal function to burn a specific token
   * Reverts if the token does not exist
   * @param owner owner of the token to burn
   * @param tokenId uint256 ID of the token being burned by the msg.sender
   */
  function _burn(address owner, uint256 tokenId) internal {
    super._burn(owner, tokenId);

    // Reorg all tokens array
    uint256 tokenIndex = _allTokensIndex[tokenId];
    uint256 lastTokenIndex = _allTokens.length.sub(1);
    uint256 lastToken = _allTokens[lastTokenIndex];

    _allTokens[tokenIndex] = lastToken;
    _allTokens[lastTokenIndex] = 0;

    _allTokens.length--;
    _allTokensIndex[tokenId] = 0;
    _allTokensIndex[lastToken] = tokenIndex;
  }
}

contract ERC721Metadata is ERC165, ERC721, IERC721Metadata {
  // Token name
  string private _name;

  // Token symbol
  string private _symbol;

  // Optional mapping for token URIs
  mapping(uint256 => string) private _tokenURIs;

  bytes4 private constant InterfaceId_ERC721Metadata = 0x5b5e139f;
  /**
   * 0x5b5e139f ===
   *   bytes4(keccak256('name()')) ^
   *   bytes4(keccak256('symbol()')) ^
   *   bytes4(keccak256('tokenURI(uint256)'))
   */

  /**
   * @dev Constructor function
   */
  constructor(string name, string symbol) public {
    _name = name;
    _symbol = symbol;

    // register the supported interfaces to conform to ERC721 via ERC165
    _registerInterface(InterfaceId_ERC721Metadata);
  }

  /**
   * @dev Gets the token name
   * @return string representing the token name
   */
  function name() external view returns (string) {
    return _name;
  }

  /**
   * @dev Gets the token symbol
   * @return string representing the token symbol
   */
  function symbol() external view returns (string) {
    return _symbol;
  }

  /**
   * @dev Returns an URI for a given token ID
   * Throws if the token ID does not exist. May return an empty string.
   * @param tokenId uint256 ID of the token to query
   */
  function tokenURI(uint256 tokenId) external view returns (string) {
    require(_exists(tokenId));
    return _tokenURIs[tokenId];
  }

  /**
   * @dev Internal function to set the token URI for a given token
   * Reverts if the token ID does not exist
   * @param tokenId uint256 ID of the token to set its URI
   * @param uri string URI to assign
   */
  function _setTokenURI(uint256 tokenId, string uri) internal {
    require(_exists(tokenId));
    _tokenURIs[tokenId] = uri;
  }

  /**
   * @dev Internal function to burn a specific token
   * Reverts if the token does not exist
   * @param owner owner of the token to burn
   * @param tokenId uint256 ID of the token being burned by the msg.sender
   */
  function _burn(address owner, uint256 tokenId) internal {
    super._burn(owner, tokenId);

    // Clear metadata (if any)
    if (bytes(_tokenURIs[tokenId]).length != 0) {
      delete _tokenURIs[tokenId];
    }
  }
}

/**
 * @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 private _owner;

  event OwnershipTransferred(
    address indexed previousOwner,
    address indexed newOwner
  );

  /**
   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
   * account.
   */
  constructor() internal {
    _owner = msg.sender;
    emit OwnershipTransferred(address(0), _owner);
  }

  /**
   * @return the address of the owner.
   */
  function owner() public view returns(address) {
    return _owner;
  }

  /**
   * @dev Throws if called by any account other than the owner.
   */
  modifier onlyOwner() {
    require(isOwner());
    _;
  }

  /**
   * @return true if `msg.sender` is the owner of the contract.
   */
  function isOwner() public view returns(bool) {
    return msg.sender == _owner;
  }

  /**
   * @dev Allows the current owner to relinquish control of the contract.
   * @notice Renouncing to ownership will leave the contract without an owner.
   * It will not be possible to call the functions with the `onlyOwner`
   * modifier anymore.
   */
  function renounceOwnership() public onlyOwner {
    emit OwnershipTransferred(_owner, address(0));
    _owner = address(0);
  }

  /**
   * @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 {
    _transferOwnership(newOwner);
  }

  /**
   * @dev Transfers control of the contract to a newOwner.
   * @param newOwner The address to transfer ownership to.
   */
  function _transferOwnership(address newOwner) internal {
    require(newOwner != address(0));
    emit OwnershipTransferred(_owner, newOwner);
    _owner = newOwner;
  }
}

contract Whitelist is Ownable {
    // Mapping of address to boolean indicating whether the address is whitelisted
    mapping(address => bool) private whitelistMap;

    // flag controlling whether whitelist is enabled.
    bool private whitelistEnabled = true;

    event AddToWhitelist(address indexed _newAddress);
    event RemoveFromWhitelist(address indexed _removedAddress);

    /**
   * @dev Enable or disable the whitelist
   * @param _enabled bool of whether to enable the whitelist.
   */
    function enableWhitelist(bool _enabled) public onlyOwner {
        whitelistEnabled = _enabled;
    }

    /**
   * @dev Adds the provided address to the whitelist
   * @param _newAddress address to be added to the whitelist
   */
    function addToWhitelist(address _newAddress) public onlyOwner {
        _whitelist(_newAddress);
        emit AddToWhitelist(_newAddress);
    }

    /**
   * @dev Removes the provided address to the whitelist
   * @param _removedAddress address to be removed from the whitelist
   */
    function removeFromWhitelist(address _removedAddress) public onlyOwner {
        _unWhitelist(_removedAddress);
        emit RemoveFromWhitelist(_removedAddress);
    }

    /**
   * @dev Returns whether the address is whitelisted
   * @param _address address to check
   * @return bool
   */
    function isWhitelisted(address _address) public view returns (bool) {
        if (whitelistEnabled) {
            return whitelistMap[_address];
        } else {
            return true;
        }
    }

    /**
   * @dev Internal function for removing an address from the whitelist
   * @param _removedAddress address to unwhitelisted
   */
    function _unWhitelist(address _removedAddress) internal {
        whitelistMap[_removedAddress] = false;
    }

    /**
   * @dev Internal function for adding the provided address to the whitelist
   * @param _newAddress address to be added to the whitelist
   */
    function _whitelist(address _newAddress) internal {
        whitelistMap[_newAddress] = true;
    }
}

/**
 * @title Full ERC721 Token
 * This implementation includes all the required and some optional functionality of the ERC721 standard
 * Moreover, it includes approve all functionality using operator terminology
 * @dev see https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md
 */
contract ERC721Full is ERC721, ERC721Enumerable, ERC721Metadata {
  constructor(string name, string symbol) ERC721Metadata(name, symbol)
    public
  {
  }
}


contract SuperRareV2 is ERC721Full, IERC721Creator, Ownable, Whitelist {
    using SafeMath for uint256;

    // Mapping from token ID to the creator's address.
    mapping(uint256 => address) private tokenCreators;

    // Counter for creating token IDs
    uint256 private idCounter;

    // Old SuperRare contract to look up token details.
    ISuperRare private oldSuperRare;

    // Event indicating metadata was updated.
    event TokenURIUpdated(uint256 indexed _tokenId, string  _uri);

    constructor(
      string _name,
      string _symbol,
      address _oldSuperRare
    )
    ERC721Full(_name, _symbol)
    {
      // Get reference to old SR contract.
      oldSuperRare = ISuperRare(_oldSuperRare);

      uint256 oldSupply = oldSuperRare.totalSupply();
      // Set id counter to be continuous with SuperRare.
      idCounter = oldSupply + 1;
    }

    /**
     * @dev Whitelists a bunch of addresses.
     * @param _whitelistees address[] of addresses to whitelist.
     */
    function initWhitelist(address[] _whitelistees) public onlyOwner {
      // Add all whitelistees.
      for (uint256 i = 0; i < _whitelistees.length; i++) {
        address creator = _whitelistees[i];
        if (!isWhitelisted(creator)) {
          _whitelist(creator);
        }
      }
    }

    /**
     * @dev Checks that the token is owned by the sender.
     * @param _tokenId uint256 ID of the token.
     */
    modifier onlyTokenOwner(uint256 _tokenId) {
      address owner = ownerOf(_tokenId);
      require(owner == msg.sender, "must be the owner of the token");
      _;
    }

    /**
     * @dev Checks that the token was created by the sender.
     * @param _tokenId uint256 ID of the token.
     */
    modifier onlyTokenCreator(uint256 _tokenId) {
      address creator = tokenCreator(_tokenId);
      require(creator == msg.sender, "must be the creator of the token");
      _;
    }

    /**
     * @dev Adds a new unique token to the supply.
     * @param _uri string metadata uri associated with the token.
     */
    function addNewToken(string _uri) public {
      require(isWhitelisted(msg.sender), "must be whitelisted to create tokens");
      _createToken(_uri, msg.sender);
    }

    /**
     * @dev Deletes the token with the provided ID.
     * @param _tokenId uint256 ID of the token.
     */
    function deleteToken(uint256 _tokenId) public onlyTokenOwner(_tokenId) {
      _burn(msg.sender, _tokenId);
    }

    /**
     * @dev Updates the token metadata if the owner is also the
     *      creator.
     * @param _tokenId uint256 ID of the token.
     * @param _uri string metadata URI.
     */
    function updateTokenMetadata(uint256 _tokenId, string _uri)
      public
      onlyTokenOwner(_tokenId)
      onlyTokenCreator(_tokenId)
    {
      _setTokenURI(_tokenId, _uri);
      emit TokenURIUpdated(_tokenId, _uri);
    }

    /**
    * @dev Gets the creator of the token.
    * @param _tokenId uint256 ID of the token.
    * @return address of the creator.
    */
    function tokenCreator(uint256 _tokenId) public view returns (address) {
        return tokenCreators[_tokenId];
    }

    /**
     * @dev Internal function for setting the token's creator.
     * @param _tokenId uint256 id of the token.
     * @param _creator address of the creator of the token.
     */
    function _setTokenCreator(uint256 _tokenId, address _creator) internal {
      tokenCreators[_tokenId] = _creator;
    }

    /**
     * @dev Internal function creating a new token.
     * @param _uri string metadata uri associated with the token
     * @param _creator address of the creator of the token.
     */
    function _createToken(string _uri, address _creator) internal returns (uint256) {
      uint256 newId = idCounter;
      idCounter++;
      _mint(_creator, newId);
      _setTokenURI(newId, _uri);
      _setTokenCreator(newId, _creator);
      return newId;
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[{"name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_enabled","type":"bool"}],"name":"enableWhitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"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":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"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":"_tokenId","type":"uint256"},{"name":"_uri","type":"string"}],"name":"updateTokenMetadata","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":true,"inputs":[{"name":"_address","type":"address"}],"name":"isWhitelisted","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"tokenCreator","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":"safeTransferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"deleteToken","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":true,"inputs":[{"name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_removedAddress","type":"address"}],"name":"removeFromWhitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"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":"to","type":"address"},{"name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_whitelistees","type":"address[]"}],"name":"initWhitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","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":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_uri","type":"string"}],"name":"addNewToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newAddress","type":"address"}],"name":"addToWhitelist","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"},{"inputs":[{"name":"_name","type":"string"},{"name":"_symbol","type":"string"},{"name":"_oldSuperRare","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_tokenId","type":"uint256"},{"indexed":false,"name":"_uri","type":"string"}],"name":"TokenURIUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_newAddress","type":"address"}],"name":"AddToWhitelist","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_removedAddress","type":"address"}],"name":"RemoveFromWhitelist","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"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":true,"name":"operator","type":"address"},{"indexed":false,"name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"}]

6080604052600e805460ff191660011790553480156200001e57600080fd5b5060405162001d4838038062001d488339810160409081528151602083015191830151908301929190910190600083838181620000847f01ffc9a70000000000000000000000000000000000000000000000000000000064010000000062000253810204565b620000b87f80ac58cd0000000000000000000000000000000000000000000000000000000064010000000062000253810204565b620000ec7f780e9d630000000000000000000000000000000000000000000000000000000064010000000062000253810204565b815162000101906009906020850190620002c0565b5080516200011790600a906020840190620002c0565b506200014c7f5b5e139f0000000000000000000000000000000000000000000000000000000064010000000062000253810204565b5050600c8054600160a060020a031916331790819055604051600160a060020a03919091169250600091507f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a360118054600160a060020a031916600160a060020a038481169190911791829055604080517f18160ddd000000000000000000000000000000000000000000000000000000008152905192909116916318160ddd916004808201926020929091908290030181600087803b1580156200021457600080fd5b505af115801562000229573d6000803e3d6000fd5b505050506040513d60208110156200024057600080fd5b5051600101601055506200036592505050565b7fffffffff0000000000000000000000000000000000000000000000000000000080821614156200028357600080fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200030357805160ff191683800117855562000333565b8280016001018555821562000333579182015b828111156200033357825182559160200191906001019062000316565b506200034192915062000345565b5090565b6200036291905b808211156200034157600081556001016200034c565b90565b6119d380620003756000396000f3006080604052600436106101745763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166301ffc9a78114610179578063040b6583146101c457806306fdde03146101e0578063081812fc1461026a578063095ea7b31461029e57806318160ddd146102c257806323b872dd146102e95780632cb2f52e146103135780632f745c59146103715780633af32abf1461039557806340c1a064146103b657806342842e0e146103ce5780634f6ccce7146103f85780636297c16c146104105780636352211e1461042857806370a0823114610440578063715018a6146104615780638ab1d681146104765780638da5cb5b146104975780638f32d59b146104ac57806395d89b41146104c1578063a22cb465146104d6578063b85ecf93146104fc578063b88d4fde14610551578063c87b56dd146105c0578063d9856c21146105d8578063e43252d714610631578063e985e9c514610652578063f2fde38b14610679575b600080fd5b34801561018557600080fd5b506101b07bffffffffffffffffffffffffffffffffffffffffffffffffffffffff196004351661069a565b604080519115158252519081900360200190f35b3480156101d057600080fd5b506101de60043515156106d2565b005b3480156101ec57600080fd5b506101f56106f8565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022f578181015183820152602001610217565b50505050905090810190601f16801561025c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561027657600080fd5b5061028260043561078f565b60408051600160a060020a039092168252519081900360200190f35b3480156102aa57600080fd5b506101de600160a060020a03600435166024356107c1565b3480156102ce57600080fd5b506102d761086a565b60408051918252519081900360200190f35b3480156102f557600080fd5b506101de600160a060020a0360043581169060243516604435610870565b34801561031f57600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526101de9583359536956044949193909101919081908401838280828437509497506108fe9650505050505050565b34801561037d57600080fd5b506102d7600160a060020a0360043516602435610a86565b3480156103a157600080fd5b506101b0600160a060020a0360043516610ad3565b3480156103c257600080fd5b50610282600435610b0b565b3480156103da57600080fd5b506101de600160a060020a0360043581169060243516604435610b26565b34801561040457600080fd5b506102d7600435610b47565b34801561041c57600080fd5b506101de600435610b7c565b34801561043457600080fd5b50610282600435610bf4565b34801561044c57600080fd5b506102d7600160a060020a0360043516610c1e565b34801561046d57600080fd5b506101de610c51565b34801561048257600080fd5b506101de600160a060020a0360043516610cae565b3480156104a357600080fd5b50610282610d01565b3480156104b857600080fd5b506101b0610d10565b3480156104cd57600080fd5b506101f5610d21565b3480156104e257600080fd5b506101de600160a060020a03600435166024351515610d82565b34801561050857600080fd5b50604080516020600480358082013583810280860185019096528085526101de95369593946024949385019291829185019084908082843750949750610e069650505050505050565b34801561055d57600080fd5b50604080516020601f6064356004818101359283018490048402850184019095528184526101de94600160a060020a038135811695602480359092169560443595369560849401918190840183828082843750949750610e679650505050505050565b3480156105cc57600080fd5b506101f5600435610e8f565b3480156105e457600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526101de943694929360249392840191908190840183828082843750949750610f449650505050505050565b34801561063d57600080fd5b506101de600160a060020a0360043516610fd6565b34801561065e57600080fd5b506101b0600160a060020a0360043581169060243516611029565b34801561068557600080fd5b506101de600160a060020a0360043516611057565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19811660009081526020819052604090205460ff165b919050565b6106da610d10565b15156106e557600080fd5b600e805460ff1916911515919091179055565b60098054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107845780601f1061075957610100808354040283529160200191610784565b820191906000526020600020905b81548152906001019060200180831161076757829003601f168201915b505050505090505b90565b600061079a82611076565b15156107a557600080fd5b50600090815260026020526040902054600160a060020a031690565b60006107cc82610bf4565b9050600160a060020a0383811690821614156107e757600080fd5b33600160a060020a038216148061080357506108038133611029565b151561080e57600080fd5b6000828152600260205260408082208054600160a060020a031916600160a060020a0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60075490565b61087a3382611093565b151561088557600080fd5b600160a060020a038216151561089a57600080fd5b6108a483826110f2565b6108ae8382611154565b6108b8828261125b565b8082600160a060020a031684600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b81600061090a82610bf4565b9050600160a060020a038116331461096c576040805160e560020a62461bcd02815260206004820152601e60248201527f6d75737420626520746865206f776e6572206f662074686520746f6b656e0000604482015290519081900360640190fd5b83600061097882610b0b565b9050600160a060020a03811633146109da576040805160e560020a62461bcd02815260206004820181905260248201527f6d757374206265207468652063726561746f72206f662074686520746f6b656e604482015290519081900360640190fd5b6109e486866112a4565b857f931f495b9a8e5d8e61946ea5d61e021f636cfe213a801f97589c18c152e408bd866040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a44578181015183820152602001610a2c565b50505050905090810190601f168015610a715780820380516001836020036101000a031916815260200191505b509250505060405180910390a2505050505050565b6000610a9183610c1e565b8210610a9c57600080fd5b600160a060020a0383166000908152600560205260409020805483908110610ac057fe5b9060005260206000200154905092915050565b600e5460009060ff1615610b035750600160a060020a0381166000908152600d602052604090205460ff166106cd565b5060016106cd565b6000908152600f6020526040902054600160a060020a031690565b610b428383836020604051908101604052806000815250610e67565b505050565b6000610b5161086a565b8210610b5c57600080fd5b6007805483908110610b6a57fe5b90600052602060002001549050919050565b806000610b8882610bf4565b9050600160a060020a0381163314610bea576040805160e560020a62461bcd02815260206004820152601e60248201527f6d75737420626520746865206f776e6572206f662074686520746f6b656e0000604482015290519081900360640190fd5b610b4233846112d7565b600081815260016020526040812054600160a060020a0316801515610c1857600080fd5b92915050565b6000600160a060020a0382161515610c3557600080fd5b50600160a060020a031660009081526003602052604090205490565b610c59610d10565b1515610c6457600080fd5b600c54604051600091600160a060020a0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600c8054600160a060020a0319169055565b610cb6610d10565b1515610cc157600080fd5b610cca8161131f565b604051600160a060020a038216907f1f756c8b089af6b33ee121fee8badac2553a2fa89c0575ea91ff8792617746c290600090a250565b600c54600160a060020a031690565b600c54600160a060020a0316331490565b600a8054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107845780601f1061075957610100808354040283529160200191610784565b600160a060020a038216331415610d9857600080fd5b336000818152600460209081526040808320600160a060020a03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b600080610e11610d10565b1515610e1c57600080fd5b600091505b8251821015610b42578282815181101515610e3857fe5b906020019060200201519050610e4d81610ad3565b1515610e5c57610e5c81611340565b600190910190610e21565b610e72848484610870565b610e7e84848484611364565b1515610e8957600080fd5b50505050565b6060610e9a82611076565b1515610ea557600080fd5b6000828152600b602090815260409182902080548351601f600260001961010060018616150201909316929092049182018490048402810184019094528084529091830182828015610f385780601f10610f0d57610100808354040283529160200191610f38565b820191906000526020600020905b815481529060010190602001808311610f1b57829003601f168201915b50505050509050919050565b610f4d33610ad3565b1515610fc8576040805160e560020a62461bcd028152602060048201526024808201527f6d7573742062652077686974656c697374656420746f2063726561746520746f60448201527f6b656e7300000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b610fd281336114e6565b5050565b610fde610d10565b1515610fe957600080fd5b610ff281611340565b604051600160a060020a038216907f75b2135d1c8c3519f3c09c43fe6527089ef09f40c7981ebf0ed46e79e79032c790600090a250565b600160a060020a03918216600090815260046020908152604080832093909416825291909152205460ff1690565b61105f610d10565b151561106a57600080fd5b61107381611519565b50565b600090815260016020526040902054600160a060020a0316151590565b60008061109f83610bf4565b905080600160a060020a031684600160a060020a031614806110da575083600160a060020a03166110cf8461078f565b600160a060020a0316145b806110ea57506110ea8185611029565b949350505050565b81600160a060020a031661110582610bf4565b600160a060020a03161461111857600080fd5b600081815260026020526040902054600160a060020a031615610fd25760009081526002602052604090208054600160a060020a031916905550565b6000806000611163858561158a565b600084815260066020908152604080832054600160a060020a038916845260059092529091205490935061119e90600163ffffffff61161316565b600160a060020a0386166000908152600560205260409020805491935090839081106111c657fe5b90600052602060002001549050806005600087600160a060020a0316600160a060020a031681526020019081526020016000208481548110151561120657fe5b6000918252602080832090910192909255600160a060020a038716815260059091526040902080549061123d9060001983016118ab565b50600093845260066020526040808520859055908452909220555050565b6000611267838361162a565b50600160a060020a039091166000908152600560209081526040808320805460018101825590845282842081018590559383526006909152902055565b6112ad82611076565b15156112b857600080fd5b6000828152600b602090815260409091208251610b42928401906118cf565b6112e182826116ad565b6000818152600b60205260409020546002600019610100600184161502019091160415610fd2576000818152600b60205260408120610fd29161194d565b600160a060020a03166000908152600d60205260409020805460ff19169055565b600160a060020a03166000908152600d60205260409020805460ff19166001179055565b60008061137985600160a060020a0316611769565b151561138857600191506114dd565b6040517f150b7a020000000000000000000000000000000000000000000000000000000081523360048201818152600160a060020a03898116602485015260448401889052608060648501908152875160848601528751918a169463150b7a0294938c938b938b93909160a490910190602085019080838360005b8381101561141b578181015183820152602001611403565b50505050905090810190601f1680156114485780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561146a57600080fd5b505af115801561147e573d6000803e3d6000fd5b505050506040513d602081101561149457600080fd5b50517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1981167f150b7a020000000000000000000000000000000000000000000000000000000014925090505b50949350505050565b60108054600181019091556000906114fe8382611771565b61150881856112a4565b61151281846117c0565b9392505050565b600160a060020a038116151561152e57600080fd5b600c54604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600c8054600160a060020a031916600160a060020a0392909216919091179055565b81600160a060020a031661159d82610bf4565b600160a060020a0316146115b057600080fd5b600160a060020a0382166000908152600360205260409020546115da90600163ffffffff61161316565b600160a060020a039092166000908152600360209081526040808320949094559181526001909152208054600160a060020a0319169055565b6000808383111561162357600080fd5b5050900390565b600081815260016020526040902054600160a060020a03161561164c57600080fd5b60008181526001602081815260408084208054600160a060020a031916600160a060020a038816908117909155845260039091529091205461168d916117ee565b600160a060020a0390921660009081526003602052604090209190915550565b60008060006116bc8585611800565b6000848152600860205260409020546007549093506116e290600163ffffffff61161316565b91506007828154811015156116f357fe5b906000526020600020015490508060078481548110151561171057fe5b6000918252602082200191909155600780548490811061172c57fe5b600091825260209091200155600780549061174b9060001983016118ab565b50600093845260086020526040808520859055908452909220555050565b6000903b1190565b61177b8282611850565b600780546000838152600860205260408120829055600182018355919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688015550565b6000918252600f60205260409091208054600160a060020a031916600160a060020a03909216919091179055565b60008282018381101561151257600080fd5b61180a82826110f2565b6118148282611154565b6040518190600090600160a060020a038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b600160a060020a038216151561186557600080fd5b61186f828261125b565b6040518190600160a060020a038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b815481835581811115610b4257600083815260209020610b4291810190830161198d565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061191057805160ff191683800117855561193d565b8280016001018555821561193d579182015b8281111561193d578251825591602001919060010190611922565b5061194992915061198d565b5090565b50805460018160011615610100020316600290046000825580601f106119735750611073565b601f01602090049060005260206000209081019061107391905b61078c91905b8082111561194957600081556001016119935600a165627a7a723058206ed640e2fef44710535bd8c8b3b4729dd93a83d35c51a083b80070528623b22c0029000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000041a322b28d0ff354040e2cbc676f0320d8c8850d0000000000000000000000000000000000000000000000000000000000000009537570657252617265000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045355505200000000000000000000000000000000000000000000000000000000

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000041a322b28d0ff354040e2cbc676f0320d8c8850d0000000000000000000000000000000000000000000000000000000000000009537570657252617265000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045355505200000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _name (string): SuperRare
Arg [1] : _symbol (string): SUPR
Arg [2] : _oldSuperRare (address): 0x41a322b28d0ff354040e2cbc676f0320d8c8850d

-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 00000000000000000000000041a322b28d0ff354040e2cbc676f0320d8c8850d
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000009
Arg [4] : 5375706572526172650000000000000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [6] : 5355505200000000000000000000000000000000000000000000000000000000


Deployed ByteCode Sourcemap

33241:4036:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8524:147;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;8524:147:0;-1:-1:-1;;8524:147:0;;;;;;;;;;;;;;;;;;;;;;;31186:103;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;31186:103:0;;;;;;;;;27237:72;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27237:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;27237:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12337:144;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;12337:144:0;;;;;;;;;-1:-1:-1;;;;;12337:144:0;;;;;;;;;;;;;;11781:277;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;11781:277:0;-1:-1:-1;;;;;11781:277:0;;;;;;;22412:90;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22412:90:0;;;;;;;;;;;;;;;;;;;;13884:341;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;13884:341:0;-1:-1:-1;;;;;13884:341:0;;;;;;;;;;;;35967:235;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;35967:235:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;35967:235:0;;-1:-1:-1;35967:235:0;;-1:-1:-1;;;;;;;35967:235:0;22056:208;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;22056:208:0;-1:-1:-1;;;;;22056:208:0;;;;;;;32034;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;32034:208:0;-1:-1:-1;;;;;32034:208:0;;;;;36357:119;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;36357:119:0;;;;;14852:202;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;14852:202:0;-1:-1:-1;;;;;14852:202:0;;;;;;;;;;;;22833:141;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;22833:141:0;;;;;35649:115;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;35649:115:0;;;;;11201:167;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;11201:167:0;;;;;10839:143;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;10839:143:0;-1:-1:-1;;;;;10839:143:0;;;;;29946:130;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29946:130:0;;;;31727:171;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;31727:171:0;-1:-1:-1;;;;;31727:171:0;;;;;29287:72;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29287:72:0;;;;29589:85;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29589:85:0;;;;27413:76;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27413:76:0;;;;12767:203;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;12767:203:0;-1:-1:-1;;;;;12767:203:0;;;;;;;;;34273:302;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;34273:302:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34273:302:0;;-1:-1:-1;34273:302:0;;-1:-1:-1;;;;;;;34273:302:0;15747:276;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;15747:276:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15747:276:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15747:276:0;;-1:-1:-1;15747:276:0;;-1:-1:-1;;;;;;;15747:276:0;27683:137;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;27683:137:0;;;;;35350:171;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;35350:171:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;35350:171:0;;-1:-1:-1;35350:171:0;;-1:-1:-1;;;;;;;35350:171:0;31429:147;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;31429:147:0;-1:-1:-1;;;;;31429:147:0;;;;;13285:174;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;13285:174:0;-1:-1:-1;;;;;13285:174:0;;;;;;;;;;30243:103;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;30243:103:0;-1:-1:-1;;;;;30243:103:0;;;;;8524:147;-1:-1:-1;;8632:33:0;;8609:4;8632:33;;;;;;;;;;;;;8524:147;;;;:::o;31186:103::-;29480:9;:7;:9::i;:::-;29472:18;;;;;;;;31254:16;:27;;-1:-1:-1;;31254:27:0;;;;;;;;;;31186:103::o;27237:72::-;27298:5;27291:12;;;;;;;;-1:-1:-1;;27291:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27276:6;;27291:12;;27298:5;;27291:12;;27298:5;27291:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27237:72;;:::o;12337:144::-;12396:7;12420:16;12428:7;12420;:16::i;:::-;12412:25;;;;;;;;-1:-1:-1;12451:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;12451:24:0;;12337:144::o;11781:277::-;11841:13;11857:16;11865:7;11857;:16::i;:::-;11841:32;-1:-1:-1;;;;;;11888:11:0;;;;;;;;11880:20;;;;;;11915:10;-1:-1:-1;;;;;11915:19:0;;;;:58;;;11938:35;11955:5;11962:10;11938:16;:35::i;:::-;11907:67;;;;;;;;11983:24;;;;:15;:24;;;;;;:29;;-1:-1:-1;;;;;;11983:29:0;-1:-1:-1;;;;;11983:29:0;;;;;;;;;12024:28;;11983:24;;12024:28;;;;;;;11781:277;;;:::o;22412:90::-;22479:10;:17;22412:90;:::o;13884:341::-;13999:39;14018:10;14030:7;13999:18;:39::i;:::-;13991:48;;;;;;;;-1:-1:-1;;;;;14054:16:0;;;;14046:25;;;;;;14080:29;14095:4;14101:7;14080:14;:29::i;:::-;14116:31;14133:4;14139:7;14116:16;:31::i;:::-;14154:24;14166:2;14170:7;14154:11;:24::i;:::-;14211:7;14207:2;-1:-1:-1;;;;;14192:27:0;14201:4;-1:-1:-1;;;;;14192:27:0;;;;;;;;;;;13884:341;;;:::o;35967:235::-;36063:8;34760:13;34776:17;34784:8;34776:7;:17::i;:::-;34760:33;-1:-1:-1;;;;;;34810:19:0;;34819:10;34810:19;34802:62;;;;;-1:-1:-1;;;;;34802:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;36097:8;35072:15;35090:22;35103:8;35090:12;:22::i;:::-;35072:40;-1:-1:-1;;;;;;35129:21:0;;35140:10;35129:21;35121:66;;;;;-1:-1:-1;;;;;35121:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36121:28;36134:8;36144:4;36121:12;:28::i;:::-;36179:8;36163:31;36189:4;36163:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;36163:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34873:1;;35967:235;;;;:::o;22056:208::-;22166:7;22201:16;22211:5;22201:9;:16::i;:::-;22193:24;;22185:33;;;;;;-1:-1:-1;;;;;22232:19:0;;;;;;:12;:19;;;;;:26;;22252:5;;22232:26;;;;;;;;;;;;;;22225:33;;22056:208;;;;:::o;32034:::-;32117:16;;32096:4;;32117:16;;32113:122;;;-1:-1:-1;;;;;;32157:22:0;;;;;;:12;:22;;;;;;;;32150:29;;32113:122;-1:-1:-1;32219:4:0;32212:11;;36357:119;36418:7;36445:23;;;:13;:23;;;;;;-1:-1:-1;;;;;36445:23:0;;36357:119::o;14852:202::-;15009:39;15026:4;15032:2;15036:7;15009:39;;;;;;;;;;;;;:16;:39::i;:::-;14852:202;;;:::o;22833:141::-;22891:7;22923:13;:11;:13::i;:::-;22915:21;;22907:30;;;;;;22951:10;:17;;22962:5;;22951:17;;;;;;;;;;;;;;22944:24;;22833:141;;;:::o;35649:115::-;35710:8;34760:13;34776:17;34784:8;34776:7;:17::i;:::-;34760:33;-1:-1:-1;;;;;;34810:19:0;;34819:10;34810:19;34802:62;;;;;-1:-1:-1;;;;;34802:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;35729:27;35735:10;35747:8;35729:5;:27::i;11201:167::-;11256:7;11288:20;;;:11;:20;;;;;;-1:-1:-1;;;;;11288:20:0;11323:19;;;11315:28;;;;;;11357:5;11201:167;-1:-1:-1;;11201:167:0:o;10839:143::-;10894:7;-1:-1:-1;;;;;10918:19:0;;;;10910:28;;;;;;-1:-1:-1;;;;;;10952:24:0;;;;;:17;:24;;;;;;;10839:143::o;29946:130::-;29480:9;:7;:9::i;:::-;29472:18;;;;;;;;30025:6;;30004:40;;30041:1;;-1:-1:-1;;;;;30025:6:0;;30004:40;;30041:1;;30004:40;30051:6;:19;;-1:-1:-1;;;;;;30051:19:0;;;29946:130::o;31727:171::-;29480:9;:7;:9::i;:::-;29472:18;;;;;;;;31809:29;31822:15;31809:12;:29::i;:::-;31854:36;;-1:-1:-1;;;;;31854:36:0;;;;;;;;31727:171;:::o;29287:72::-;29347:6;;-1:-1:-1;;;;;29347:6:0;29287:72;:::o;29589:85::-;29662:6;;-1:-1:-1;;;;;29662:6:0;29648:10;:20;;29589:85::o;27413:76::-;27476:7;27469:14;;;;;;;;-1:-1:-1;;27469:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27454:6;;27469:14;;27476:7;;27469:14;;27476:7;27469:14;;;;;;;;;;;;;;;;;;;;;;;;12767:203;-1:-1:-1;;;;;12843:16:0;;12849:10;12843:16;;12835:25;;;;;;12886:10;12867:30;;;;:18;:30;;;;;;;;-1:-1:-1;;;;;12867:34:0;;;;;;;;;;;;:45;;-1:-1:-1;;12867:45:0;;;;;;;;;;12924:40;;;;;;;12867:34;;12886:10;12924:40;;;;;;;;;;;12767:203;;:::o;34273:302::-;34384:9;34441:15;29480:9;:7;:9::i;:::-;29472:18;;;;;;;;34396:1;34384:13;;34379:189;34403:13;:20;34399:1;:24;34379:189;;;34459:13;34473:1;34459:16;;;;;;;;;;;;;;;;;;34441:34;;34491:22;34505:7;34491:13;:22::i;:::-;34490:23;34486:73;;;34528:19;34539:7;34528:10;:19::i;:::-;34425:3;;;;;34379:189;;15747:276;15876:31;15889:4;15895:2;15899:7;15876:12;:31::i;:::-;15968:48;15991:4;15997:2;16001:7;16010:5;15968:22;:48::i;:::-;15960:57;;;;;;;;15747:276;;;;:::o;27683:137::-;27741:6;27764:16;27772:7;27764;:16::i;:::-;27756:25;;;;;;;;27795:19;;;;:10;:19;;;;;;;;;27788:26;;;;;;-1:-1:-1;;27788:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27795:19;;27788:26;;27795:19;27788:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27683:137;;;:::o;35350:171::-;35408:25;35422:10;35408:13;:25::i;:::-;35400:74;;;;;;;-1:-1:-1;;;;;35400:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35483:30;35496:4;35502:10;35483:12;:30::i;:::-;;35350:171;:::o;31429:147::-;29480:9;:7;:9::i;:::-;29472:18;;;;;;;;31502:23;31513:11;31502:10;:23::i;:::-;31541:27;;-1:-1:-1;;;;;31541:27:0;;;;;;;;31429:147;:::o;13285:174::-;-1:-1:-1;;;;;13418:25:0;;;13395:4;13418:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;13285:174::o;30243:103::-;29480:9;:7;:9::i;:::-;29472:18;;;;;;;;30312:28;30331:8;30312:18;:28::i;:::-;30243:103;:::o;16207:145::-;16264:4;16293:20;;;:11;:20;;;;;;-1:-1:-1;;;;;16293:20:0;16327:19;;;16207:145::o;16706:449::-;16821:4;16837:13;16853:16;16861:7;16853;:16::i;:::-;16837:32;;17052:5;-1:-1:-1;;;;;17041:16:0;:7;-1:-1:-1;;;;;17041:16:0;;:58;;;;17092:7;-1:-1:-1;;;;;17068:31:0;:20;17080:7;17068:11;:20::i;:::-;-1:-1:-1;;;;;17068:31:0;;17041:58;:101;;;;17110:32;17127:5;17134:7;17110:16;:32::i;:::-;17025:124;16706:449;-1:-1:-1;;;;16706:449:0:o;20485:215::-;20584:5;-1:-1:-1;;;;;20564:25:0;:16;20572:7;20564;:16::i;:::-;-1:-1:-1;;;;;20564:25:0;;20556:34;;;;;;20637:1;20601:24;;;:15;:24;;;;;;-1:-1:-1;;;;;20601:24:0;:38;20597:98;;20685:1;20650:24;;;:15;:24;;;;;:37;;-1:-1:-1;;;;;;20650:37:0;;;-1:-1:-1;20485:215:0:o;24187:1039::-;24445:18;24499:22;24563:17;24260:37;24283:4;24289:7;24260:22;:37::i;:::-;24466:26;;;;:17;:26;;;;;;;;;-1:-1:-1;;;;;24524:18:0;;;;:12;:18;;;;;;:25;24466:26;;-1:-1:-1;24524:32:0;;24554:1;24524:32;:29;:32;:::i;:::-;-1:-1:-1;;;;;24583:18:0;;;;;;:12;:18;;;;;:34;;24499:57;;-1:-1:-1;24583:18:0;24499:57;;24583:34;;;;;;;;;;;;;;24563:54;;24659:9;24626:12;:18;24639:4;-1:-1:-1;;;;;24626:18:0;-1:-1:-1;;;;;24626:18:0;;;;;;;;;;;;24645:10;24626:30;;;;;;;;;;;;;;;;;;;;;:42;;;;-1:-1:-1;;;;;24748:18:0;;;;:12;:18;;;;;;:27;;;;;-1:-1:-1;;24748:27:0;;;:::i;:::-;-1:-1:-1;25171:1:0;25142:26;;;:17;:26;;;;;;:30;;;25179:28;;;;;;:41;-1:-1:-1;;24187:1039:0:o;23441:228::-;23544:14;23507:30;23525:2;23529:7;23507:17;:30::i;:::-;-1:-1:-1;;;;;;23561:16:0;;;;;;;:12;:16;;;;;;;;:23;;39:1:-1;23:18;;45:23;;23591:30:0;;;;;;;;;;;23628:26;;;:17;:26;;;;;:35;23441:228::o;28051:130::-;28126:16;28134:7;28126;:16::i;:::-;28118:25;;;;;;;;28150:19;;;;:10;:19;;;;;;;;:25;;;;;;;;:::i;28419:223::-;28482:27;28494:5;28501:7;28482:11;:27::i;:::-;28560:19;;;;:10;:19;;;;;28554:33;;-1:-1:-1;;28554:33:0;;;;;;;;;;;:38;28550:87;;28610:19;;;;:10;:19;;;;;28603:26;;;:::i;32392:112::-;-1:-1:-1;;;;;32459:29:0;32491:5;32459:29;;;:12;:29;;;;;:37;;-1:-1:-1;;32459:37:0;;;32392:112::o;32668:101::-;-1:-1:-1;;;;;32729:25:0;;;;;:12;:25;;;;;:32;;-1:-1:-1;;32729:32:0;32757:4;32729:32;;;32668:101::o;19863:355::-;20004:4;20076:13;20025:15;:2;-1:-1:-1;;;;;20025:13:0;;:15::i;:::-;20024:16;20020:50;;;20058:4;20051:11;;;;20020:50;20092:78;;;;;20137:10;20092:78;;;;;;-1:-1:-1;;;;;20092:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;;;20137:10;20149:4;;20155:7;;20164:5;;20092:78;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;20092:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20092:78:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20092:78:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20092:78:0;-1:-1:-1;;20185:26:0;;20195:16;20185:26;;-1:-1:-1;20092:78:0;-1:-1:-1;19863:355:0;;;;;;;;:::o;37004:270::-;37109:9;;;37127:11;;;;;;37075:7;;37147:22;37153:8;37109:9;37147:5;:22::i;:::-;37178:25;37191:5;37198:4;37178:12;:25::i;:::-;37212:33;37229:5;37236:8;37212:16;:33::i;:::-;37261:5;37004:270;-1:-1:-1;;;37004:270:0:o;30486:173::-;-1:-1:-1;;;;;30556:22:0;;;;30548:31;;;;;;30612:6;;30591:38;;-1:-1:-1;;;;;30591:38:0;;;;30612:6;;30591:38;;30612:6;;30591:38;30636:6;:17;;-1:-1:-1;;;;;;30636:17:0;-1:-1:-1;;;;;30636:17:0;;;;;;;;;;30486:173::o;19134:215::-;19235:4;-1:-1:-1;;;;;19215:24:0;:16;19223:7;19215;:16::i;:::-;-1:-1:-1;;;;;19215:24:0;;19207:33;;;;;;-1:-1:-1;;;;;19273:23:0;;;;;;:17;:23;;;;;;:30;;19301:1;19273:30;:27;:30;:::i;:::-;-1:-1:-1;;;;;19247:23:0;;;;;;;:17;:23;;;;;;;;:56;;;;19310:20;;;:11;:20;;;;:33;;-1:-1:-1;;;;;;19310:33:0;;;19134:215::o;1117:136::-;1175:7;;1199:6;;;;1191:15;;;;;;-1:-1:-1;;1225:5:0;;;1117:136::o;18416:206::-;18522:1;18490:20;;;:11;:20;;;;;;-1:-1:-1;;;;;18490:20:0;:34;18482:43;;;;;;18532:20;;;;:11;:20;;;;;;;;:25;;-1:-1:-1;;;;;;18532:25:0;-1:-1:-1;;;;;18532:25:0;;;;;;;;18588:21;;:17;:21;;;;;;;:28;;:25;:28::i;:::-;-1:-1:-1;;;;;18564:21:0;;;;;;;:17;:21;;;;;:52;;;;-1:-1:-1;18416:206:0:o;25905:479::-;26035:18;26087:22;26143:17;25968:27;25980:5;25987:7;25968:11;:27::i;:::-;26056:24;;;;:15;:24;;;;;;26112:10;:17;26056:24;;-1:-1:-1;26112:24:0;;26134:1;26112:24;:21;:24;:::i;:::-;26087:49;;26163:10;26174:14;26163:26;;;;;;;;;;;;;;;;;;26143:46;;26223:9;26198:10;26209;26198:22;;;;;;;;;;;;;;;;;;:34;;;;26239:10;:26;;26250:14;;26239:26;;;;;;;;;;;;;;;:30;26278:10;:19;;;;;-1:-1:-1;;26278:19:0;;;:::i;:::-;-1:-1:-1;26331:1:0;26304:24;;;:15;:24;;;;;;:28;;;26339:26;;;;;;:39;-1:-1:-1;;25905:479:0:o;7203:593::-;7263:4;7747:20;;7782:8;;7203:593::o;25493:174::-;25553:24;25565:2;25569:7;25553:11;:24::i;:::-;25613:10;:17;;25586:24;;;;:15;:24;;;;;:44;;;39:1:-1;23:18;;45:23;;25637:24:0;;;;;;;-1:-1:-1;25493:174:0:o;36676:122::-;36756:23;;;;:13;:23;;;;;;:34;;-1:-1:-1;;;;;;36756:34:0;-1:-1:-1;;;;;36756:34:0;;;;;;;;;36676:122::o;1321:136::-;1379:7;1407:5;;;1427:6;;;;1419:15;;;;;17769:186;17832:30;17847:5;17854:7;17832:14;:30::i;:::-;17869:32;17886:5;17893:7;17869:16;:32::i;:::-;17913:36;;17941:7;;17937:1;;-1:-1:-1;;;;;17913:36:0;;;;;17937:1;;17913:36;17769:186;;:::o;17410:167::-;-1:-1:-1;;;;;17478:16:0;;;;17470:25;;;;;;17502:24;17514:2;17518:7;17502:11;:24::i;:::-;17538:33;;17563:7;;-1:-1:-1;;;;;17538:33:0;;;17555:1;;17538:33;;17555:1;;17538:33;17410:167;;:::o;33241:4036::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33241:4036:0;;;-1:-1:-1;33241:4036:0;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Swarm Source

bzzr://6ed640e2fef44710535bd8c8b3b4729dd93a83d35c51a083b80070528623b22c
Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.