Token BlockTimeBuddies

 

Overview [ERC-721]

Min. Price
$3.25 @ 0.002000 ETH
Max Total Supply:
1,243 BTB

Holders:
82

Transfers:
-

 
Loading
[ Download CSV Export  ] 
Loading
[ Download CSV Export  ] 
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Buddies

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 2019-11-10
*/

pragma solidity ^0.4.24;

	library SafeMath {

	  function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
		if (a == 0) {
		  return 0;
		}

		c = a * b;
		assert(c / a == b);
		return c;
	  }

	  function div(uint256 a, uint256 b) internal pure returns (uint256) {
		return a / b;
	  }

	  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
		assert(b <= a);
		return a - b;
	  }

	  function add(uint256 a, uint256 b) internal pure returns (uint256 c) {
		c = a + b;
		assert(c >= a);
		return c;
	  }
	}
	
	contract ReentrancyGuard {

	uint256 private guardCounter = 1;
		modifier nonReentrant() {
			guardCounter += 1;
			uint256 localCounter = guardCounter;
			_;
			require(localCounter == guardCounter);
		}

	}
	
	interface ERC165 {
	  function supportsInterface(bytes4 _interfaceId)
		external view	returns (bool);
	}

	contract ERC721Receiver {
	  bytes4 internal constant ERC721_RECEIVED = 0x150b7a02;
	  function onERC721Received(address _operator, address _from, uint256 _tokenId, bytes _data)
		public returns(bytes4);
	}

	library AddressUtils {
	  function isContract(address addr) internal view returns (bool) {
		uint256 size;
		assembly { size := extcodesize(addr) }
		return size > 0;
	  }
	}

	contract Ownable {
	  address public owner;

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

	  constructor() public {
		owner = msg.sender;
	  }

	  modifier onlyOwner() {
		require(msg.sender == owner);
		_;
	  }

	  function renounceOwnership() public onlyOwner {
		emit OwnershipRenounced(owner);
		owner = address(0);
	  }

	  function transferOwnership(address _newOwner) public onlyOwner {
		_transferOwnership(_newOwner);
	  }

	  function _transferOwnership(address _newOwner) internal {
		require(_newOwner != address(0));
		emit OwnershipTransferred(owner, _newOwner);
		owner = _newOwner;
	  }
	}

	contract SupportsInterfaceWithLookup is ERC165 {
	  bytes4 public constant InterfaceId_ERC165 = 0x01ffc9a7;

	  mapping(bytes4 => bool) internal supportedInterfaces;

	  constructor() public {_registerInterface(InterfaceId_ERC165);}

	  function supportsInterface(bytes4 _interfaceId)
		external view returns (bool) {return supportedInterfaces[_interfaceId];
	  }

	  function _registerInterface(bytes4 _interfaceId) internal {
		require(_interfaceId != 0xffffffff);
		supportedInterfaces[_interfaceId] = true;
	  }
	}

	contract ERC721Basic is ERC165 {
	  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 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;
	}

	contract ERC721Enumerable is ERC721Basic {
	  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);
	}

	contract ERC721Metadata is ERC721Basic {
	  function name() external view returns (string _name);
	  function symbol() external view returns (string _symbol);
	  function tokenURI(uint256 _tokenId) public view returns (string);
	}

	contract ERC721 is ERC721Basic, ERC721Enumerable, ERC721Metadata {}

	contract ERC721BasicToken is SupportsInterfaceWithLookup, ERC721Basic {

	  bytes4 private constant InterfaceId_ERC721 = 0x80ac58cd;
	  bytes4 private constant InterfaceId_ERC721Exists = 0x4f558e79;
	  using SafeMath for uint256;
	  using AddressUtils for address;
	  bytes4 private constant ERC721_RECEIVED = 0x150b7a02;
	  mapping (uint256 => address) internal tokenOwner;
	  mapping (uint256 => address) internal tokenApprovals;
	  mapping (address => uint256) internal ownedTokensCount;
	  mapping (address => mapping (address => bool)) internal operatorApprovals;
	  modifier onlyOwnerOf(uint256 _tokenId) {
		require(ownerOf(_tokenId) == msg.sender);
		_;
	  }

	  modifier canTransfer(uint256 _tokenId) {
		require(isApprovedOrOwner(msg.sender, _tokenId));
		_;
	  }

	  constructor() public {
		_registerInterface(InterfaceId_ERC721);
		_registerInterface(InterfaceId_ERC721Exists);
	  }

	  function balanceOf(address _owner) public view returns (uint256) {
		require(_owner != address(0));
		return ownedTokensCount[_owner];
	  }

	  function ownerOf(uint256 _tokenId) public view returns (address) {
		address owner = tokenOwner[_tokenId];
		require(owner != address(0));
		return owner;
	  }

	  function exists(uint256 _tokenId) public view returns (bool) {
		address owner = tokenOwner[_tokenId];
		return owner != address(0);
	  }

	  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);
	  }

	  function getApproved(uint256 _tokenId) public view returns (address) {
		return tokenApprovals[_tokenId];
	  }

	  function setApprovalForAll(address _to, bool _approved) public {
		require(_to != msg.sender);
		operatorApprovals[msg.sender][_to] = _approved;
		emit ApprovalForAll(msg.sender, _to, _approved);
	  }

	  function isApprovedForAll(address _owner,	address _operator)	public view	returns (bool)
	  {return operatorApprovals[_owner][_operator];
    }

	  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);
		emit Transfer(_from, _to, _tokenId);
	  }

	  function safeTransferFrom(address _from, address _to, uint256 _tokenId) public canTransfer(_tokenId) {
		safeTransferFrom(_from, _to, _tokenId, "");
	  }

	  function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes _data) public canTransfer(_tokenId) {
		transferFrom(_from, _to, _tokenId);
		require(checkAndCallSafeTransfer(_from, _to, _tokenId, _data));
	  }

	  function isApprovedOrOwner(address _spender, uint256 _tokenId) internal view returns (bool) {
		address owner = ownerOf(_tokenId);
		return (
		  _spender == owner ||
		  getApproved(_tokenId) == _spender ||
		  isApprovedForAll(owner, _spender)
		);
	  }

	  function _mint(address _to, uint256 _tokenId) internal {
		require(_to != address(0));
		addTokenTo(_to, _tokenId);
		emit Transfer(address(0), _to, _tokenId);
	  }

	  function _burn(address _owner, uint256 _tokenId) internal {
		clearApproval(_owner, _tokenId);
		removeTokenFrom(_owner, _tokenId);
		emit Transfer(_owner, address(0), _tokenId);
	  }

	  function clearApproval(address _owner, uint256 _tokenId) internal {
		require(ownerOf(_tokenId) == _owner);
		if (tokenApprovals[_tokenId] != address(0)) {
		  tokenApprovals[_tokenId] = address(0);
		}
	  }

	  function addTokenTo(address _to, uint256 _tokenId) internal {
		require(tokenOwner[_tokenId] == address(0));
		tokenOwner[_tokenId] = _to;
		ownedTokensCount[_to] = ownedTokensCount[_to].add(1);
	  }

	  function removeTokenFrom(address _from, uint256 _tokenId) internal {
		require(ownerOf(_tokenId) == _from);
		ownedTokensCount[_from] = ownedTokensCount[_from].sub(1);
		tokenOwner[_tokenId] = address(0);
	  }

	  function checkAndCallSafeTransfer(address _from, address _to, uint256 _tokenId, bytes _data) internal returns (bool) {
		if (!_to.isContract()) {return true;
    }

		bytes4 retval = ERC721Receiver(_to).onERC721Received(
		msg.sender, _from, _tokenId, _data);
		return (retval == ERC721_RECEIVED);
	  }
	}

	contract ERC721Token is SupportsInterfaceWithLookup, ERC721BasicToken, ERC721 {

	  bytes4 private constant InterfaceId_ERC721Enumerable = 0x780e9d63;
	  bytes4 private constant InterfaceId_ERC721Metadata = 0x5b5e139f;
	  string internal name_;
	  string internal symbol_;
	  mapping(address => uint256[]) internal ownedTokens;
	  mapping(uint256 => uint256) internal ownedTokensIndex;
	  uint256[] internal allTokens;
	  mapping(uint256 => uint256) internal allTokensIndex;
	  mapping(uint256 => string) internal tokenURIs;

	  constructor(string _name, string _symbol) public {
		name_ = _name;
		symbol_ = _symbol;
		_registerInterface(InterfaceId_ERC721Enumerable);
		_registerInterface(InterfaceId_ERC721Metadata);
	  }

	  function name() external view returns (string) {return name_;}

	  function symbol() external view returns (string) {return symbol_;}

	  function tokenOfOwnerByIndex(address _owner, uint256 _index) public view returns (uint256) {
      require(_index < balanceOf(_owner));
      return ownedTokens[_owner][_index];
	  }

	  function totalSupply() public view returns (uint256) {
      return allTokens.length;
	  }

	  function tokenByIndex(uint256 _index) public view returns (uint256) {
      require(_index < totalSupply());
      return allTokens[_index];
	  }

	  function _setTokenURI(uint256 _tokenId, string _uri) internal {
      require(exists(_tokenId));
      tokenURIs[_tokenId] = _uri;
	  }

	  function addTokenTo(address _to, uint256 _tokenId) internal {
      super.addTokenTo(_to, _tokenId);
      uint256 length = ownedTokens[_to].length;
      ownedTokens[_to].push(_tokenId);
      ownedTokensIndex[_tokenId] = length;
	  }

	  function removeTokenFrom(address _from, uint256 _tokenId) internal {
      super.removeTokenFrom(_from, _tokenId);
      uint256 tokenIndex = ownedTokensIndex[_tokenId];
      uint256 lastTokenIndex = ownedTokens[_from].length.sub(1);
      uint256 lastToken = ownedTokens[_from][lastTokenIndex];
      ownedTokens[_from][tokenIndex] = lastToken;
      ownedTokens[_from][lastTokenIndex] = 0;
      ownedTokens[_from].length--;
      ownedTokensIndex[_tokenId] = 0;
      ownedTokensIndex[lastToken] = tokenIndex;
	  }

	  function _mint(address _to, uint256 _tokenId) internal {
      super._mint(_to, _tokenId);
      allTokensIndex[_tokenId] = allTokens.length;
      allTokens.push(_tokenId);
	  }

	  function _burn(address _owner, uint256 _tokenId) internal {
      super._burn(_owner, _tokenId);
      if (bytes(tokenURIs[_tokenId]).length != 0) {
        delete tokenURIs[_tokenId];
		}

		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 Buddies is ERC721Token, Ownable {

    constructor() ERC721Token("BlockTimeBuddies", "BTB") public {}

    // CONSTANTS
    address client;
    string host_chain = "bitchain";
    address host_contract = 0x8a47D36907E51651d8996644ca1cAB525067Ca11;
    uint256 max_supply = 1000000;
    mapping(uint256 => uint256) tokenIDs; // Option for extended interoperability
    bool interoperable = false; // [fully] interoperable = "true" uses input _ID in tokenIDs mapping, "false" uses index + 1
    string baseurl = "https://api.blocktime.solutions/buddies/";

    function manageInterop(bool new_setting) public onlyOwner {
      interoperable = new_setting;
    }

    function viewInterop() public view returns (bool fully_interoperable) {
      fully_interoperable = interoperable;
    }

    function manageBaseURL(string new_baseurl) public onlyOwner {
      baseurl = new_baseurl;
    }

    function viewBaseURL() public view returns (string base_url) {
      base_url = baseurl;
    }

    function viewHost() public view returns (string h_chain, address h_contract) {
      h_chain = host_chain;
      h_contract = host_contract;
    }

    event BoughtToken(address indexed buyer, uint256 tokenId);

    function moreSupply() internal view returns (bool moreOK) {
      moreOK = true;
      if (allTokens.length + 1 > max_supply) {moreOK = false;}
      return moreOK;
    }

    function mintToken (uint256 _ID) onlyOwner external {
      uint256 index = allTokens.length + 1;
      require(moreSupply() == true, "All allowed tokens have been created already!");
      _mint(msg.sender, index);
      {interoperable == true ? tokenIDs[index] = _ID : tokenIDs[index] = index;}
      emit BoughtToken(msg.sender, index);
    }

	  function mintTokenForClient (uint256 _ID, address _client) onlyOwner external {
      uint256 index = allTokens.length + 1;
      require(moreSupply() == true, "All allowed tokens have been minted already!");
      _mint(_client, index);
      {interoperable == true ? tokenIDs[index] = _ID : tokenIDs[index] = index;}
      emit BoughtToken(_client, index);
	  }

	  function transferOwnTokens (uint256[] _ids, address _to) external {
          uint256 n_tokens = _ids.length;
          address _from = msg.sender;
          require(_to != address(0));
    
          for (uint it = 0; it < n_tokens; it++) {
            require(isApprovedOrOwner(msg.sender, _ids[it]));}	
          for (uint i = 0; i < n_tokens; i++) {
            clearApproval(_from, _ids[i]);
            removeTokenFrom(_from, _ids[i]);
            addTokenTo(_to, _ids[i]);
            emit Transfer(_from, _to, _ids[i]);}
	  }

	  function myTokens() external view returns (uint256[]) {
  		return ownedTokens[msg.sender];
	  }

    function uintTostr(uint i) internal pure returns (string){
      if (i == 0) return "0"; uint j = i; uint length;
      while (j != 0){length++;j /= 10;} bytes memory bstr = new bytes(length); uint k = length - 1;
      while (i != 0){bstr[k--] = byte(48 + i % 10);i /= 10;}
      return string(bstr);
    }

    function tokenURI(uint256 _ID) public view returns (string URI) {
      require(exists(_ID));
      URI = string(abi.encodePacked(baseurl, uintTostr(tokenIDs[_ID])));
    }

    function nativeID(uint256 _ID) public view returns (uint hostID) {
      require(exists(_ID));
      hostID = tokenIDs[_ID];
    }
      
    function checkBalance() external onlyOwner view returns (uint256 contractBalance) {
		  contractBalance = address(this).balance;
	  }
    
    function withdrawBalance() external onlyOwner {
      owner.transfer(address(this).balance);
    }

}

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":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":"_ID","type":"uint256"},{"name":"_client","type":"address"}],"name":"mintTokenForClient","outputs":[],"payable":false,"stateMutability":"nonpayable","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":true,"inputs":[],"name":"InterfaceId_ERC165","outputs":[{"name":"","type":"bytes4"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"new_setting","type":"bool"}],"name":"manageInterop","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":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":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"new_baseurl","type":"string"}],"name":"manageBaseURL","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":true,"inputs":[{"name":"_index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_ids","type":"uint256[]"},{"name":"_to","type":"address"}],"name":"transferOwnTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdrawBalance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"name":"","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":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"myTokens","outputs":[{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"viewBaseURL","outputs":[{"name":"base_url","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":true,"inputs":[{"name":"_ID","type":"uint256"}],"name":"nativeID","outputs":[{"name":"hostID","type":"uint256"}],"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":false,"inputs":[{"name":"_ID","type":"uint256"}],"name":"mintToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"checkBalance","outputs":[{"name":"contractBalance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"viewInterop","outputs":[{"name":"fully_interoperable","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_ID","type":"uint256"}],"name":"tokenURI","outputs":[{"name":"URI","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"viewHost","outputs":[{"name":"h_chain","type":"string"},{"name":"h_contract","type":"address"}],"payable":false,"stateMutability":"view","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":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"buyer","type":"address"},{"indexed":false,"name":"tokenId","type":"uint256"}],"name":"BoughtToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","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"}]

60c0604052600860808190527f626974636861696e00000000000000000000000000000000000000000000000060a09081526200004091600e919062000315565b50600f8054600160a060020a031916738a47d36907e51651d8996644ca1cab525067ca11179055620f42406010556012805460ff191690556040805160608101825260288082527f68747470733a2f2f6170692e626c6f636b74696d652e736f6c7574696f6e732f602083019081527f627564646965732f0000000000000000000000000000000000000000000000009290930191909152620000e69160139162000315565b50348015620000f457600080fd5b50604080518082018252601081527f426c6f636b54696d6542756464696573000000000000000000000000000000006020808301919091528251808401909352600383527f42544200000000000000000000000000000000000000000000000000000000009083015290620001927f01ffc9a700000000000000000000000000000000000000000000000000000000640100000000620002a8810204565b620001c67f80ac58cd00000000000000000000000000000000000000000000000000000000640100000000620002a8810204565b620001fa7f4f558e7900000000000000000000000000000000000000000000000000000000640100000000620002a8810204565b81516200020f90600590602085019062000315565b5080516200022590600690602084019062000315565b506200025a7f780e9d6300000000000000000000000000000000000000000000000000000000640100000000620002a8810204565b6200028e7f5b5e139f00000000000000000000000000000000000000000000000000000000640100000000620002a8810204565b5050600c8054600160a060020a03191633179055620003ba565b7fffffffff000000000000000000000000000000000000000000000000000000008082161415620002d857600080fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200035857805160ff191683800117855562000388565b8280016001018555821562000388579182015b82811115620003885782518255916020019190600101906200036b565b50620003969291506200039a565b5090565b620003b791905b80821115620003965760008155600101620003a1565b90565b611c5980620003ca6000396000f3006080604052600436106101a05763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166301ffc9a781146101a557806306fdde03146101db578063081812fc1461026557806308b0546214610299578063095ea7b3146102bf57806318160ddd146102e357806319fa8f501461030a57806321a599fa1461033c57806323b872dd146103565780632f745c591461038057806342842e0e146103a45780634ad8eaf5146103ce5780634f558e79146104275780634f6ccce71461043f5780635f88d837146104575780635fd8c710146104855780636352211e1461049a57806370a08231146104b2578063715018a6146104d35780638da5cb5b146104e8578063949e8acd146104fd57806395d89b41146105625780639fae24ed14610577578063a22cb4651461058c578063a4fe36ec146105b2578063b88d4fde146105ca578063c634d03214610639578063c71daccb14610651578063c77db5c914610666578063c87b56dd1461067b578063db52b03e14610693578063e985e9c514610739578063f2fde38b14610760575b600080fd5b3480156101b157600080fd5b506101c7600160e060020a031960043516610781565b604080519115158252519081900360200190f35b3480156101e757600080fd5b506101f06107a0565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022a578181015183820152602001610212565b50505050905090810190601f1680156102575780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561027157600080fd5b5061027d600435610837565b60408051600160a060020a039092168252519081900360200190f35b3480156102a557600080fd5b506102bd600435600160a060020a0360243516610852565b005b3480156102cb57600080fd5b506102bd600160a060020a0360043516602435610999565b3480156102ef57600080fd5b506102f8610a4f565b60408051918252519081900360200190f35b34801561031657600080fd5b5061031f610a55565b60408051600160e060020a03199092168252519081900360200190f35b34801561034857600080fd5b506102bd6004351515610a79565b34801561036257600080fd5b506102bd600160a060020a0360043581169060243516604435610aa3565b34801561038c57600080fd5b506102f8600160a060020a0360043516602435610b48565b3480156103b057600080fd5b506102bd600160a060020a0360043581169060243516604435610b95565b3480156103da57600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526102bd943694929360249392840191908190840183828082843750949750610bcd9650505050505050565b34801561043357600080fd5b506101c7600435610bfb565b34801561044b57600080fd5b506102f8600435610c18565b34801561046357600080fd5b506102bd6024600480358281019291013590600160a060020a03903516610c4d565b34801561049157600080fd5b506102bd610d6a565b3480156104a657600080fd5b5061027d600435610dbe565b3480156104be57600080fd5b506102f8600160a060020a0360043516610de8565b3480156104df57600080fd5b506102bd610e1b565b3480156104f457600080fd5b5061027d610e89565b34801561050957600080fd5b50610512610e98565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561054e578181015183820152602001610536565b505050509050019250505060405180910390f35b34801561056e57600080fd5b506101f0610ef8565b34801561058357600080fd5b506101f0610f59565b34801561059857600080fd5b506102bd600160a060020a03600435166024351515610fba565b3480156105be57600080fd5b506102f860043561103e565b3480156105d657600080fd5b50604080516020601f6064356004818101359283018490048402850184019095528184526102bd94600160a060020a0381358116956024803590921695604435953695608494019181908401838280828437509497506110679650505050505050565b34801561064557600080fd5b506102bd6004356110a6565b34801561065d57600080fd5b506102f86111e3565b34801561067257600080fd5b506101c7611203565b34801561068757600080fd5b506101f060043561120c565b34801561069f57600080fd5b506106a8611303565b604051808060200183600160a060020a0316600160a060020a03168152602001828103825284818151815260200191508051906020019080838360005b838110156106fd5781810151838201526020016106e5565b50505050905090810190601f16801561072a5780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b34801561074557600080fd5b506101c7600160a060020a03600435811690602435166113ad565b34801561076c57600080fd5b506102bd600160a060020a03600435166113db565b600160e060020a03191660009081526020819052604090205460ff1690565b60058054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561082c5780601f106108015761010080835404028352916020019161082c565b820191906000526020600020905b81548152906001019060200180831161080f57829003601f168201915b505050505090505b90565b600090815260026020526040902054600160a060020a031690565b600c54600090600160a060020a0316331461086c57600080fd5b5060095460010161087b6113fb565b151560011461091157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f416c6c20616c6c6f77656420746f6b656e732068617665206265656e206d696e60448201527f74656420616c7265616479210000000000000000000000000000000000000000606482015290519081900360840190fd5b61091b8282611413565b60125460ff16151560011461094157600081815260116020526040902081905580610954565b6000818152601160205260409020839055825b50604080518281529051600160a060020a038416917f75424253909c2f4460f8a59099700e980f5b484608c4fdd79f600f5162ac88a5919081900360200190a2505050565b60006109a482610dbe565b9050600160a060020a0383811690821614156109bf57600080fd5b33600160a060020a03821614806109db57506109db81336113ad565b15156109e657600080fd5b600082815260026020526040808220805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60095490565b7f01ffc9a70000000000000000000000000000000000000000000000000000000081565b600c54600160a060020a03163314610a9057600080fd5b6012805460ff1916911515919091179055565b80610aae3382611462565b1515610ab957600080fd5b600160a060020a0384161515610ace57600080fd5b600160a060020a0383161515610ae357600080fd5b610aed84836114c1565b610af78483611530565b610b018383611669565b8183600160a060020a031685600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450505050565b6000610b5383610de8565b8210610b5e57600080fd5b600160a060020a0383166000908152600760205260409020805483908110610b8257fe5b9060005260206000200154905092915050565b80610ba03382611462565b1515610bab57600080fd5b610bc78484846020604051908101604052806000815250611067565b50505050565b600c54600160a060020a03163314610be457600080fd5b8051610bf7906013906020840190611b6c565b5050565b600090815260016020526040902054600160a060020a0316151590565b6000610c22610a4f565b8210610c2d57600080fd5b6009805483908110610c3b57fe5b90600052602060002001549050919050565b8133600080600160a060020a0385161515610c6757600080fd5b600091505b83821015610ca657610c9033888885818110610c8457fe5b90506020020135611462565b1515610c9b57600080fd5b600190910190610c6c565b5060005b83811015610d6157610cce83888884818110610cc257fe5b905060200201356114c1565b610cea83888884818110610cde57fe5b90506020020135611530565b610d0685888884818110610cfa57fe5b90506020020135611669565b868682818110610d1257fe5b9050602002013585600160a060020a031684600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4600101610caa565b50505050505050565b600c54600160a060020a03163314610d8157600080fd5b600c54604051600160a060020a0390911690303180156108fc02916000818181858888f19350505050158015610dbb573d6000803e3d6000fd5b50565b600081815260016020526040812054600160a060020a0316801515610de257600080fd5b92915050565b6000600160a060020a0382161515610dff57600080fd5b50600160a060020a031660009081526003602052604090205490565b600c54600160a060020a03163314610e3257600080fd5b600c54604051600160a060020a03909116907ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482090600090a2600c805473ffffffffffffffffffffffffffffffffffffffff19169055565b600c54600160a060020a031681565b3360009081526007602090815260409182902080548351818402810184019094528084526060939283018282801561082c57602002820191906000526020600020905b815481526020019060010190808311610edb575050505050905090565b60068054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561082c5780601f106108015761010080835404028352916020019161082c565b60138054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561082c5780601f106108015761010080835404028352916020019161082c565b600160a060020a038216331415610fd057600080fd5b336000818152600460209081526040808320600160a060020a03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b600061104982610bfb565b151561105457600080fd5b5060009081526011602052604090205490565b816110723382611462565b151561107d57600080fd5b611088858585610aa3565b611094858585856116b2565b151561109f57600080fd5b5050505050565b600c54600090600160a060020a031633146110c057600080fd5b506009546001016110cf6113fb565b151560011461116557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f416c6c20616c6c6f77656420746f6b656e732068617665206265656e2063726560448201527f6174656420616c72656164792100000000000000000000000000000000000000606482015290519081900360840190fd5b61116f3382611413565b60125460ff161515600114611195576000818152601160205260409020819055806111a8565b6000818152601160205260409020829055815b5060408051828152905133917f75424253909c2f4460f8a59099700e980f5b484608c4fdd79f600f5162ac88a5919081900360200190a25050565b600c54600090600160a060020a031633146111fd57600080fd5b50303190565b60125460ff1690565b606061121782610bfb565b151561122257600080fd5b60008281526011602052604090205460139061123d9061181f565b604051602001808380546001816001161561010002031660029004801561129b5780601f1061127957610100808354040283529182019161129b565b820191906000526020600020905b815481529060010190602001808311611287575b5050825160208401908083835b602083106112c75780518252601f1990920191602091820191016112a8565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529050919050565b600e805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152606093600093919290918301828280156113915780601f1061136657610100808354040283529160200191611391565b820191906000526020600020905b81548152906001019060200180831161137457829003601f168201915b5050600f549396600160a060020a039094169550929350505050565b600160a060020a03918216600090815260046020908152604080832093909416825291909152205460ff1690565b600c54600160a060020a031633146113f257600080fd5b610dbb81611946565b60105460095460019190820111156108345750600090565b61141d82826119c4565b600980546000838152600a60205260408120829055600182018355919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af015550565b60008061146e83610dbe565b905080600160a060020a031684600160a060020a031614806114a9575083600160a060020a031661149e84610837565b600160a060020a0316145b806114b957506114b981856113ad565b949350505050565b81600160a060020a03166114d482610dbe565b600160a060020a0316146114e757600080fd5b600081815260026020526040902054600160a060020a031615610bf7576000908152600260205260409020805473ffffffffffffffffffffffffffffffffffffffff1916905550565b600080600061153f8585611a1f565b600084815260086020908152604080832054600160a060020a038916845260079092529091205490935061157a90600163ffffffff611ab516565b600160a060020a0386166000908152600760205260409020805491935090839081106115a257fe5b90600052602060002001549050806007600087600160a060020a0316600160a060020a03168152602001908152602001600020848154811015156115e257fe5b6000918252602080832090910192909255600160a060020a038716815260079091526040812080548490811061161457fe5b6000918252602080832090910192909255600160a060020a038716815260079091526040902080549061164b906000198301611bea565b50600093845260086020526040808520859055908452909220555050565b60006116758383611ac7565b50600160a060020a039091166000908152600760209081526040808320805460018101825590845282842081018590559383526008909152902055565b6000806116c785600160a060020a0316611b57565b15156116d65760019150611816565b6040517f150b7a020000000000000000000000000000000000000000000000000000000081523360048201818152600160a060020a03898116602485015260448401889052608060648501908152875160848601528751918a169463150b7a0294938c938b938b93909160a490910190602085019080838360005b83811015611769578181015183820152602001611751565b50505050905090810190601f1680156117965780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156117b857600080fd5b505af11580156117cc573d6000803e3d6000fd5b505050506040513d60208110156117e257600080fd5b5051600160e060020a031981167f150b7a020000000000000000000000000000000000000000000000000000000014925090505b50949350505050565b606060008082818515156118685760408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152945061193d565b8593505b831561188357600190920191600a8404935061186c565b826040519080825280601f01601f1916602001820160405280156118b1578160200160208202803883390190505b5091505060001982015b85156119395781516000198201917f01000000000000000000000000000000000000000000000000000000000000006030600a8a0601029184919081106118fe57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a860495506118bb565b8194505b50505050919050565b600160a060020a038116151561195b57600080fd5b600c54604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600c805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600160a060020a03821615156119d957600080fd5b6119e38282611669565b6040518190600160a060020a038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b81600160a060020a0316611a3282610dbe565b600160a060020a031614611a4557600080fd5b600160a060020a038216600090815260036020526040902054611a6f90600163ffffffff611ab516565b600160a060020a03909216600090815260036020908152604080832094909455918152600190915220805473ffffffffffffffffffffffffffffffffffffffff19169055565b600082821115611ac157fe5b50900390565b600081815260016020526040902054600160a060020a031615611ae957600080fd5b6000818152600160208181526040808420805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0388169081179091558452600390915290912054611b3791611b5f565b600160a060020a0390921660009081526003602052604090209190915550565b6000903b1190565b81810182811015610de257fe5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611bad57805160ff1916838001178555611bda565b82800160010185558215611bda579182015b82811115611bda578251825591602001919060010190611bbf565b50611be6929150611c13565b5090565b815481835581811115611c0e57600083815260209020611c0e918101908301611c13565b505050565b61083491905b80821115611be65760008155600101611c195600a165627a7a72305820db17d2a7667f9c3ccb73b24fa9365d1bdb8b1955e7a9e21d8098f506f73e4f780029

Deployed ByteCode Sourcemap

11802:3730:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2308:128;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2308:128:0;-1:-1:-1;;;;;;2308:128:0;;;;;;;;;;;;;;;;;;;;;;;9565:62;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9565:62: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;9565:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6018:112;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6018:112:0;;;;;;;;;-1:-1:-1;;;;;6018:112:0;;;;;;;;;;;;;;13596:369;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;13596:369:0;;;-1:-1:-1;;;;;13596:369:0;;;;;;;5738:273;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5738:273:0;-1:-1:-1;;;;;5738:273:0;;;;;;;9899:92;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9899:92:0;;;;;;;;;;;;;;;;;;;;2117:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2117:54:0;;;;;;;;-1:-1:-1;;;;;;2117:54:0;;;;;;;;;;;;;;12383:102;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;12383:102:0;;;;;;;6499:310;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6499:310:0;-1:-1:-1;;;;;6499:310:0;;;;;;;;;;;;9707:185;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9707:185:0;-1:-1:-1;;;;;9707:185:0;;;;;;;6816:155;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6816:155:0;-1:-1:-1;;;;;6816:155:0;;;;;;;;;;;;12623:98;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;12623:98:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12623:98:0;;-1:-1:-1;12623:98:0;;-1:-1:-1;;;;;;;12623:98:0;5591:140;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5591:140:0;;;;;9998:148;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9998:148:0;;;;;13972:545;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;13972:545:0;;;;;;;;;;;;;-1:-1:-1;;;;;13972:545:0;;;;;15427:100;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15427:100:0;;;;5421:163;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5421:163:0;;;;;5272:142;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5272:142:0;-1:-1:-1;;;;;5272:142:0;;;;;1656:111;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1656:111:0;;;;1332:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1332:20:0;;;;14524:98;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14524:98: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;14524:98:0;;;;;;;;;;;;;;;;;9634:66;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9634:66:0;;;;12729:96;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12729:96:0;;;;6137:204;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6137:204:0;-1:-1:-1;;;;;6137:204:0;;;;;;;;;15133:133;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;15133:133:0;;;;;6978:227;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6978:227:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6978:227:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6978:227:0;;-1:-1:-1;6978:227:0;;-1:-1:-1;;;;;;;6978:227:0;13238:351;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;13238:351:0;;;;;15280:135;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15280:135:0;;;;12493:122;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12493:122:0;;;;14950:175;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;14950:175:0;;;;;12833:149;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12833:149:0;;;;;;;;;;;;-1:-1:-1;;;;;12833:149:0;-1:-1:-1;;;;;12833:149:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;12833:149:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6348:144;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6348:144:0;-1:-1:-1;;;;;6348:144:0;;;;;;;;;;1774:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1774:104:0;-1:-1:-1;;;;;1774:104:0;;;;;2308:128;-1:-1:-1;;;;;;2396:33:0;2382:4;2396:33;;;;;;;;;;;;;;2308:128::o;9565:62::-;9620:5;9613:12;;;;;;;;-1:-1:-1;;9613:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9604:6;;9613:12;;9620:5;;9613:12;;9620:5;9613:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9565:62;;:::o;6018:112::-;6078:7;6099:24;;;:14;:24;;;;;;-1:-1:-1;;;;;6099:24:0;;6018:112::o;13596:369::-;1630:5;;13683:13;;-1:-1:-1;;;;;1630:5:0;1616:10;:19;1608:28;;;;;;-1:-1:-1;13699:9:0;:16;13718:1;13699:20;13736:12;:10;:12::i;:::-;:20;;13752:4;13736:20;13728:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13814:21;13820:7;13829:5;13814;:21::i;:::-;13845:13;;;;:21;;:13;:21;:71;;13893:15;;;;:8;:15;;;;;:23;;;13911:5;13845:71;;;13869:15;;;;:8;:15;;;;;:21;;;13887:3;13845:71;-1:-1:-1;13931:27:0;;;;;;;;-1:-1:-1;;;;;13931:27:0;;;;;;;;;;;;;13596:369;;;:::o;5738:273::-;5798:13;5814:17;5822:8;5814:7;:17::i;:::-;5798:33;-1:-1:-1;;;;;;5844:12:0;;;;;;;;5836:21;;;;;;5870:10;-1:-1:-1;;;;;5870:19:0;;;;:58;;;5893:35;5910:5;5917:10;5893:16;:35::i;:::-;5862:67;;;;;;;;5934:24;;;;:14;:24;;;;;;:30;;-1:-1:-1;;5934:30:0;-1:-1:-1;;;;;5934:30:0;;;;;;;;;5974;;5934:24;;5974:30;;;;;;;5738:273;;;:::o;9899:92::-;9968:9;:16;9899:92;:::o;2117:54::-;;;:::o;12383:102::-;1630:5;;-1:-1:-1;;;;;1630:5:0;1616:10;:19;1608:28;;;;;;12450:13;:27;;-1:-1:-1;;12450:27:0;;;;;;;;;;12383:102::o;6499:310::-;6586:8;5085:39;5103:10;5115:8;5085:17;:39::i;:::-;5077:48;;;;;;;;-1:-1:-1;;;;;6609:19:0;;;;6601:28;;;;;;-1:-1:-1;;;;;6642:17:0;;;;6634:26;;;;;;6665:30;6679:5;6686:8;6665:13;:30::i;:::-;6700:32;6716:5;6723:8;6700:15;:32::i;:::-;6737:25;6748:3;6753:8;6737:10;:25::i;:::-;6793:8;6788:3;-1:-1:-1;;;;;6772:30:0;6781:5;-1:-1:-1;;;;;6772:30:0;;;;;;;;;;;6499:310;;;;:::o;9707:185::-;9789:7;9824:17;9834:6;9824:9;:17::i;:::-;9815:26;;9807:35;;;;;;-1:-1:-1;;;;;9858:19:0;;;;;;:11;:19;;;;;:27;;9878:6;;9858:27;;;;;;;;;;;;;;9851:34;;9707:185;;;;:::o;6816:155::-;6907:8;5085:39;5103:10;5115:8;5085:17;:39::i;:::-;5077:48;;;;;;;;6922:42;6939:5;6946:3;6951:8;6922:42;;;;;;;;;;;;;:16;:42::i;:::-;6816:155;;;;:::o;12623:98::-;1630:5;;-1:-1:-1;;;;;1630:5:0;1616:10;:19;1608:28;;;;;;12692:21;;;;:7;;:21;;;;;:::i;:::-;;12623:98;:::o;5591:140::-;5646:4;5673:20;;;:10;:20;;;;;;-1:-1:-1;;;;;5673:20:0;5705:19;;;5591:140::o;9998:148::-;10057:7;10092:13;:11;:13::i;:::-;10083:22;;10075:31;;;;;;10122:9;:17;;10132:6;;10122:17;;;;;;;;;;;;;;10115:24;;9998:148;;;:::o;13972:545::-;14070:4;14110:10;14051:16;;-1:-1:-1;;;;;14141:17:0;;;;14133:26;;;;;;14193:1;14183:11;;14178:104;14201:8;14196:2;:13;14178:104;;;14240:39;14258:10;14270:4;;14275:2;14270:8;;;;;;;;;;;;;14240:17;:39::i;:::-;14232:48;;;;;;;;14211:4;;;;;14178:104;;;-1:-1:-1;14309:1:0;14295:216;14316:8;14312:1;:12;14295:216;;;14346:29;14360:5;14367:4;;14372:1;14367:7;;;;;;;;;;;;;14346:13;:29::i;:::-;14390:31;14406:5;14413:4;;14418:1;14413:7;;;;;;;;;;;;;14390:15;:31::i;:::-;14436:24;14447:3;14452:4;;14457:1;14452:7;;;;;;;;;;;;;14436:10;:24::i;:::-;14501:4;;14506:1;14501:7;;;;;;;;;;;;;14496:3;-1:-1:-1;;;;;14480:29:0;14489:5;-1:-1:-1;;;;;14480:29:0;;;;;;;;;;;14326:3;;14295:216;;;13972:545;;;;;;;:::o;15427:100::-;1630:5;;-1:-1:-1;;;;;1630:5:0;1616:10;:19;1608:28;;;;;;15482:5;;:37;;-1:-1:-1;;;;;15482:5:0;;;;15505:4;15497:21;15482:37;;;;;:5;:37;:5;:37;15497:21;15482:5;:37;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15482:37:0;15427:100::o;5421:163::-;5477:7;5507:20;;;:10;:20;;;;;;-1:-1:-1;;;;;5507:20:0;5540:19;;;5532:28;;;;;;5572:5;5421:163;-1:-1:-1;;5421:163:0:o;5272:142::-;5328:7;-1:-1:-1;;;;;5350:20:0;;;;5342:29;;;;;;-1:-1:-1;;;;;;5383:24:0;;;;;:16;:24;;;;;;;5272:142::o;1656:111::-;1630:5;;-1:-1:-1;;;;;1630:5:0;1616:10;:19;1608:28;;;;;;1731:5;;1712:25;;-1:-1:-1;;;;;1731:5:0;;;;1712:25;;1731:5;;1712:25;1742:5;:18;;-1:-1:-1;;1742:18:0;;;1656:111::o;1332:20::-;;;-1:-1:-1;;;;;1332:20:0;;:::o;14524:98::-;14604:10;14592:23;;;;:11;:23;;;;;;;;;14585:30;;;;;;;;;;;;;;;;;14567:9;;14585:30;;;14592:23;14585:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14524:98;:::o;9634:66::-;9691:7;9684:14;;;;;;;;-1:-1:-1;;9684:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9675:6;;9684:14;;9691:7;;9684:14;;9691:7;9684:14;;;;;;;;;;;;;;;;;;;;;;;;12729:96;12810:7;12799:18;;;;;;;;-1:-1:-1;;12799:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12773:15;;12799:18;;12810:7;;12799:18;;12810:7;12799:18;;;;;;;;;;;;;;;;;;;;;;;;6137:204;-1:-1:-1;;;;;6213:17:0;;6220:10;6213:17;;6205:26;;;;;;6254:10;6236:29;;;;:17;:29;;;;;;;;-1:-1:-1;;;;;6236:34:0;;;;;;;;;;;;:46;;-1:-1:-1;;6236:46:0;;;;;;;;;;6292:42;;;;;;;6236:34;;6254:10;6292:42;;;;;;;;;;;6137:204;;:::o;15133:133::-;15185:11;15215;15222:3;15215:6;:11::i;:::-;15207:20;;;;;;;;-1:-1:-1;15245:13:0;;;;:8;:13;;;;;;;15133:133::o;6978:227::-;7082:8;5085:39;5103:10;5115:8;5085:17;:39::i;:::-;5077:48;;;;;;;;7097:34;7110:5;7117:3;7122:8;7097:12;:34::i;:::-;7144:53;7169:5;7176:3;7181:8;7191:5;7144:24;:53::i;:::-;7136:62;;;;;;;;6978:227;;;;;:::o;13238:351::-;1630:5;;13299:13;;-1:-1:-1;;;;;1630:5:0;1616:10;:19;1608:28;;;;;;-1:-1:-1;13315:9:0;:16;13334:1;13315:20;13352:12;:10;:12::i;:::-;:20;;13368:4;13352:20;13344:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13431:24;13437:10;13449:5;13431;:24::i;:::-;13465:13;;;;:21;;:13;:21;:71;;13513:15;;;;:8;:15;;;;;:23;;;13531:5;13465:71;;;13489:15;;;;:8;:15;;;;;:21;;;13507:3;13465:71;-1:-1:-1;13551:30:0;;;;;;;;13563:10;;13551:30;;;;;;;;;;13238:351;;:::o;15280:135::-;1630:5;;15337:23;;-1:-1:-1;;;;;1630:5:0;1616:10;:19;1608:28;;;;;;-1:-1:-1;15395:4:0;15387:21;;15280:135::o;12493:122::-;12594:13;;;;;12493:122::o;14950:175::-;15002:10;15031:11;15038:3;15031:6;:11::i;:::-;15023:20;;;;;;;;15101:13;;;;:8;:13;;;;;;15082:7;;15091:24;;:9;:24::i;:::-;15065:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15065:51:0;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;15065:51:0;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;15065:51:0;;;15052:65;;14950:175;;;:::o;12833:149::-;12929:10;12919:20;;;;;;;;;;;;;-1:-1:-1;;12919:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;12874:14;;-1:-1:-1;;12919:20:0;;12929:10;;12919:20;;12929:10;12919:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12961:13:0;;12919:20;;-1:-1:-1;;;;;12961:13:0;;;;-1:-1:-1;12833:149:0;;-1:-1:-1;;;;12833:149:0:o;6348:144::-;-1:-1:-1;;;;;6448:25:0;;;6430:4;6448:25;;;:17;:25;;;;;;;;:36;;;;;;;;;;;;;;;6348:144::o;1774:104::-;1630:5;;-1:-1:-1;;;;;1630:5:0;1616:10;:19;1608:28;;;;;;1842:29;1861:9;1842:18;:29::i;13056:174::-;13172:10;;13149:9;:16;13132:4;;13149:20;;;:33;13145:56;;;-1:-1:-1;13194:5:0;13056:174;:::o;11080:182::-;11144:26;11156:3;11161:8;11144:11;:26::i;:::-;11206:9;:16;;11179:24;;;;:14;:24;;;;;:43;;;39:1:-1;23:18;;45:23;;11231:24:0;;;;;;;-1:-1:-1;11080:182:0:o;7212:262::-;7298:4;7309:13;7325:17;7333:8;7325:7;:17::i;:::-;7309:33;;7373:5;-1:-1:-1;;;;;7361:17:0;:8;-1:-1:-1;;;;;7361:17:0;;:59;;;;7412:8;-1:-1:-1;;;;;7387:33:0;:21;7399:8;7387:11;:21::i;:::-;-1:-1:-1;;;;;7387:33:0;;7361:59;:101;;;;7429:33;7446:5;7453:8;7429:16;:33::i;:::-;7347:120;7212:262;-1:-1:-1;;;;7212:262:0:o;7850:212::-;7950:6;-1:-1:-1;;;;;7929:27:0;:17;7937:8;7929:7;:17::i;:::-;-1:-1:-1;;;;;7929:27:0;;7921:36;;;;;;8002:1;7966:24;;;:14;:24;;;;;;-1:-1:-1;;;;;7966:24:0;:38;7962:94;;8048:1;8013:24;;;:14;:24;;;;;:37;;-1:-1:-1;;8013:37:0;;;-1:-1:-1;7850:212:0:o;10545:528::-;10668:18;10724:22;10790:17;10621:38;10643:5;10650:8;10621:21;:38::i;:::-;10689:26;;;;:16;:26;;;;;;;;;-1:-1:-1;;;;;10749:18:0;;;;:11;:18;;;;;;:25;10689:26;;-1:-1:-1;10749:32:0;;10779:1;10749:32;:29;:32;:::i;:::-;-1:-1:-1;;;;;10810:18:0;;;;;;:11;:18;;;;;:34;;10724:57;;-1:-1:-1;10810:18:0;10724:57;;10810:34;;;;;;;;;;;;;;10790:54;;10886:9;10853:11;:18;10865:5;-1:-1:-1;;;;;10853:18:0;-1:-1:-1;;;;;10853:18:0;;;;;;;;;;;;10872:10;10853:30;;;;;;;;;;;;;;;;;;;;;:42;;;;-1:-1:-1;;;;;10904:18:0;;;;:11;:18;;;;;;:34;;10923:14;;10904:34;;;;;;;;;;;;;;;;;:38;;;;-1:-1:-1;;;;;10951:18:0;;;;:11;:18;;;;;;:27;;;;;-1:-1:-1;;10951:27:0;;;:::i;:::-;-1:-1:-1;11016:1:0;10987:26;;;:16;:26;;;;;;:30;;;11026:27;;;;;;:40;-1:-1:-1;;10545:528:0:o;10298:240::-;10407:14;10367:31;10384:3;10389:8;10367:16;:31::i;:::-;-1:-1:-1;;;;;;10424:16:0;;;;;;;:11;:16;;;;;;;;:23;;39:1:-1;23:18;;45:23;;10456:31:0;;;;;;;;;;;10496:26;;;:16;:26;;;;;:35;10298:240::o;8499:309::-;8610:4;8670:13;8626:16;:3;-1:-1:-1;;;;;8626:14:0;;:16::i;:::-;8625:17;8621:43;;;8652:4;8645:11;;;;8621:43;8686:76;;;;;8727:10;8686:76;;;;;;-1:-1:-1;;;;;8686:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;;;8727:10;8739:5;;8746:8;;8756:5;;8686:76;;;;;;;;;;;;;;-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;8686:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8686:76:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8686:76:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8686:76:0;-1:-1:-1;;;;;;8775:25:0;;8785:15;8775:25;;-1:-1:-1;8686:76:0;-1:-1:-1;8499:309:0;;;;;;;;:::o;14630:312::-;14680:6;14720;;14680;14720;14700;;14696:22;;;14708:10;;;;;;;;;;;;;;;;;;-1:-1:-1;14708:10:0;;14696:22;14729:1;14720:10;;14752:33;14759:6;;14752:33;;14767:8;;;;;14781:2;14776:7;;;;14752:33;;;14816:6;14806:17;;;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;14806:17:0;-1:-1:-1;14786:37:0;-1:-1:-1;;;;14834:10:0;;14853:54;14860:6;;14853:54;;14868:9;;-1:-1:-1;;14873:3:0;;;14880:17;14885:2;14894;14890:6;;14885:11;14880:17;;14868:4;;14873:3;14868:9;;;;;;;;;;:29;;;;;;;;;;-1:-1:-1;14903:2:0;14898:7;;;;14853:54;;;14929:4;14915:19;;14630:312;;;;;;;;:::o;1885:170::-;-1:-1:-1;;;;;1954:23:0;;;;1946:32;;;;;;2009:5;;1988:38;;-1:-1:-1;;;;;1988:38:0;;;;2009:5;;1988:38;;2009:5;;1988:38;2031:5;:17;;-1:-1:-1;;2031:17:0;-1:-1:-1;;;;;2031:17:0;;;;;;;;;;1885:170::o;7481:168::-;-1:-1:-1;;;;;7549:17:0;;;;7541:26;;;;;;7572:25;7583:3;7588:8;7572:10;:25::i;:::-;7607:35;;7633:8;;-1:-1:-1;;;;;7607:35:0;;;7624:1;;7607:35;;7624:1;;7607:35;7481:168;;:::o;8279:213::-;8380:5;-1:-1:-1;;;;;8359:26:0;:17;8367:8;8359:7;:17::i;:::-;-1:-1:-1;;;;;8359:26:0;;8351:35;;;;;;-1:-1:-1;;;;;8417:23:0;;;;;;:16;:23;;;;;;:30;;8445:1;8417:30;:27;:30;:::i;:::-;-1:-1:-1;;;;;8391:23:0;;;;;;;:16;:23;;;;;;;;:56;;;;8452:20;;;:10;:20;;;;:33;;-1:-1:-1;;8452:33:0;;;8279:213::o;324:110::-;382:7;403:6;;;;396:14;;;;-1:-1:-1;422:5:0;;;324:110::o;8069:203::-;8174:1;8142:20;;;:10;:20;;;;;;-1:-1:-1;;;;;8142:20:0;:34;8134:43;;;;;;8182:20;;;;:10;:20;;;;;;;;:26;;-1:-1:-1;;8182:26:0;-1:-1:-1;;;;;8182:26:0;;;;;;;;8237:21;;:16;:21;;;;;;;:28;;:25;:28::i;:::-;-1:-1:-1;;;;;8213:21:0;;;;;;;:16;:21;;;;;:52;;;;-1:-1:-1;8069:203:0:o;1151:149::-;1208:4;1255:17;;1285:8;;1151:149::o;441:122::-;519:5;;;536:6;;;;529:14;;;11802:3730;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11802:3730:0;;;-1:-1:-1;11802:3730:0;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;

Swarm Source

bzzr://db17d2a7667f9c3ccb73b24fa9365d1bdb8b1955e7a9e21d8098f506f73e4f78

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.