ERC-20
DeFi
Overview
Max Total Supply
99,999,737.743163500027758984 SWAM
Holders
16 (0.00%)
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
HomeToken
Compiler Version
v0.4.24+commit.e67f0147
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-01-09 */ pragma solidity ^0.4.24; // File: openzeppelin-solidity/contracts/token/ERC20/ERC20Basic.sol /** * @title ERC20Basic * @dev Simpler version of ERC20 interface * See https://github.com/ethereum/EIPs/issues/179 */ contract ERC20Basic { function totalSupply() public view returns (uint256); function balanceOf(address _who) public view returns (uint256); function transfer(address _to, uint256 _value) public returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); } // File: openzeppelin-solidity/contracts/math/SafeMath.sol /** * @title SafeMath * @dev Math operations with safety checks that throw on error */ library SafeMath { /** * @dev Multiplies two numbers, throws on overflow. */ function mul(uint256 _a, uint256 _b) internal pure returns (uint256 c) { // Gas optimization: this is cheaper than asserting '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; } c = _a * _b; assert(c / _a == _b); return c; } /** * @dev Integer division of two numbers, truncating the quotient. */ function div(uint256 _a, uint256 _b) internal pure returns (uint256) { // assert(_b > 0); // Solidity automatically throws when dividing by 0 // uint256 c = _a / _b; // assert(_a == _b * c + _a % _b); // There is no case in which this doesn't hold return _a / _b; } /** * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 _a, uint256 _b) internal pure returns (uint256) { assert(_b <= _a); return _a - _b; } /** * @dev Adds two numbers, throws on overflow. */ function add(uint256 _a, uint256 _b) internal pure returns (uint256 c) { c = _a + _b; assert(c >= _a); return c; } } // File: openzeppelin-solidity/contracts/token/ERC20/BasicToken.sol /** * @title Basic token * @dev Basic version of StandardToken, with no allowances. */ contract BasicToken is ERC20Basic { using SafeMath for uint256; mapping(address => uint256) internal balances; uint256 internal totalSupply_; /** * @dev Total number of tokens in existence */ function totalSupply() public view returns (uint256) { return totalSupply_; } /** * @dev Transfer token for a specified address * @param _to The address to transfer to. * @param _value The amount to be transferred. */ function transfer(address _to, uint256 _value) public returns (bool) { require(_value <= balances[msg.sender]); require(_to != address(0)); balances[msg.sender] = balances[msg.sender].sub(_value); balances[_to] = balances[_to].add(_value); emit Transfer(msg.sender, _to, _value); return true; } /** * @dev Gets the balance of the specified address. * @param _owner The address to query the the balance of. * @return An uint256 representing the amount owned by the passed address. */ function balanceOf(address _owner) public view returns (uint256) { return balances[_owner]; } } // File: openzeppelin-solidity/contracts/token/ERC20/ERC20.sol /** * @title ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/20 */ contract ERC20 is ERC20Basic { function allowance(address _owner, address _spender) public view returns (uint256); function transferFrom(address _from, address _to, uint256 _value) public returns (bool); function approve(address _spender, uint256 _value) public returns (bool); event Approval( address indexed owner, address indexed spender, uint256 value ); } // File: openzeppelin-solidity/contracts/token/ERC20/StandardToken.sol /** * @title Standard ERC20 token * * @dev Implementation of the basic standard token. * https://github.com/ethereum/EIPs/issues/20 * Based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol */ contract StandardToken is ERC20, BasicToken { mapping (address => mapping (address => uint256)) internal allowed; /** * @dev Transfer tokens from one address to another * @param _from address The address which you want to send tokens from * @param _to address The address which you want to transfer to * @param _value uint256 the amount of tokens to be transferred */ function transferFrom( address _from, address _to, uint256 _value ) public returns (bool) { require(_value <= balances[_from]); require(_value <= allowed[_from][msg.sender]); require(_to != address(0)); balances[_from] = balances[_from].sub(_value); balances[_to] = balances[_to].add(_value); allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value); emit Transfer(_from, _to, _value); return true; } /** * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. * Beware that changing an allowance with this method brings the risk that someone may use both the old * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * @param _spender The address which will spend the funds. * @param _value The amount of tokens to be spent. */ function approve(address _spender, uint256 _value) public returns (bool) { allowed[msg.sender][_spender] = _value; emit Approval(msg.sender, _spender, _value); return true; } /** * @dev Function to check the amount of tokens that an owner allowed to a spender. * @param _owner address The address which owns the funds. * @param _spender address The address which will spend the funds. * @return A uint256 specifying the amount of tokens still available for the spender. */ function allowance( address _owner, address _spender ) public view returns (uint256) { return allowed[_owner][_spender]; } /** * @dev Increase the amount of tokens that an owner allowed to a spender. * approve should be called when allowed[_spender] == 0. To increment * allowed value is better to use this function to avoid 2 calls (and wait until * the first transaction is mined) * From MonolithDAO Token.sol * @param _spender The address which will spend the funds. * @param _addedValue The amount of tokens to increase the allowance by. */ function increaseApproval( address _spender, uint256 _addedValue ) public returns (bool) { allowed[msg.sender][_spender] = ( allowed[msg.sender][_spender].add(_addedValue)); emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } /** * @dev Decrease the amount of tokens that an owner allowed to a spender. * approve should be called when allowed[_spender] == 0. To decrement * allowed value is better to use this function to avoid 2 calls (and wait until * the first transaction is mined) * From MonolithDAO Token.sol * @param _spender The address which will spend the funds. * @param _subtractedValue The amount of tokens to decrease the allowance by. */ function decreaseApproval( address _spender, uint256 _subtractedValue ) public returns (bool) { uint256 oldValue = allowed[msg.sender][_spender]; if (_subtractedValue >= oldValue) { allowed[msg.sender][_spender] = 0; } else { allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue); } emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } } // File: contracts/SignatureUtils.sol /// @title A library of utilities for (multi)signatures /// @author Alexander Kern <[email protected]> /// @dev This library can be linked to another Solidity contract to expose signature manipulation functions. contract SignatureUtils { /// @notice Converts a bytes32 to an signed message hash. /// @param _msg The bytes32 message (i.e. keccak256 result) to encrypt function toEthBytes32SignedMessageHash( bytes32 _msg ) pure public returns (bytes32 signHash) { signHash = keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", _msg)); } /// @notice Converts a byte array to a personal signed message hash (result of `web3.personal.sign(...)`) by concatenating its length. /// @param _msg The bytes array to encrypt function toEthPersonalSignedMessageHash( bytes _msg ) pure public returns (bytes32 signHash) { signHash = keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n", uintToString(_msg.length), _msg)); } /// @notice Converts a uint to its decimal string representation. /// @param v The uint to convert function uintToString( uint v ) pure public returns (string) { uint w = v; bytes32 x; if (v == 0) { x = "0"; } else { while (w > 0) { x = bytes32(uint(x) / (2 ** 8)); x |= bytes32(((w % 10) + 48) * 2 ** (8 * 31)); w /= 10; } } bytes memory bytesString = new bytes(32); uint charCount = 0; for (uint j = 0; j < 32; j++) { byte char = byte(bytes32(uint(x) * 2 ** (8 * j))); if (char != 0) { bytesString[charCount] = char; charCount++; } } bytes memory resultBytes = new bytes(charCount); for (j = 0; j < charCount; j++) { resultBytes[j] = bytesString[j]; } return string(resultBytes); } /// @notice Extracts the r, s, and v parameters to `ecrecover(...)` from the signature at position `_pos` in a densely packed signatures bytes array. /// @dev Based on [OpenZeppelin's ECRecovery](https://github.com/OpenZeppelin/openzeppelin-solidity/blob/master/contracts/ECRecovery.sol) /// @param _signatures The signatures bytes array /// @param _pos The position of the signature in the bytes array (0 indexed) function parseSignature( bytes _signatures, uint _pos ) pure public returns (uint8 v, bytes32 r, bytes32 s) { uint offset = _pos * 65; // The signature format is a compact form of: // {bytes32 r}{bytes32 s}{uint8 v} // Compact means, uint8 is not padded to 32 bytes. assembly { // solium-disable-line security/no-inline-assembly r := mload(add(_signatures, add(32, offset))) s := mload(add(_signatures, add(64, offset))) // Here we are loading the last 32 bytes, including 31 bytes // of 's'. There is no 'mload8' to do this. // // 'byte' is not working due to the Solidity parser, so lets // use the second best option, 'and' v := and(mload(add(_signatures, add(65, offset))), 0xff) } if (v < 27) v += 27; require(v == 27 || v == 28); } /// @notice Counts the number of signatures in a signatures bytes array. Returns 0 if the length is invalid. /// @param _signatures The signatures bytes array /// @dev Signatures are 65 bytes long and are densely packed. function countSignatures( bytes _signatures ) pure public returns (uint) { return _signatures.length % 65 == 0 ? _signatures.length / 65 : 0; } /// @notice Recovers an address using a message hash and a signature in a bytes array. /// @param _hash The signed message hash /// @param _signatures The signatures bytes array /// @param _pos The signature's position in the bytes array (0 indexed) function recoverAddress( bytes32 _hash, bytes _signatures, uint _pos ) pure public returns (address) { uint8 v; bytes32 r; bytes32 s; (v, r, s) = parseSignature(_signatures, _pos); return ecrecover(_hash, v, r, s); } /// @notice Recovers an array of addresses using a message hash and a signatures bytes array. /// @param _hash The signed message hash /// @param _signatures The signatures bytes array function recoverAddresses( bytes32 _hash, bytes _signatures ) pure public returns (address[] addresses) { uint8 v; bytes32 r; bytes32 s; uint count = countSignatures(_signatures); addresses = new address[](count); for (uint i = 0; i < count; i++) { (v, r, s) = parseSignature(_signatures, i); addresses[i] = ecrecover(_hash, v, r, s); } } } // File: contracts/Ownable.sol /** * @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 OwnershipRenounced(address indexed previousOwner); event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ constructor() public { _owner = msg.sender; } /** * @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 OwnershipRenounced(_owner); _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; } } // File: contracts/Bridgeable.sol contract Bridgeable is StandardToken, SignatureUtils, Ownable { address[] public validators; address public foreignContract; mapping (bytes32 => bool) foreignTransactions; event EnterBridgeEvent(address from, uint256 amount); event ExitBridgeEvent(address sender, uint256 amount); event Mint(address indexed to, uint256 amount); event Burn(address indexed burner, uint256 value); function addValidator(address _validator) public onlyOwner { validators.push(_validator); } function pair(address _foreignContract) public onlyOwner { foreignContract = _foreignContract; } function enter(uint256 _amount) public { emit EnterBridgeEvent(msg.sender, _amount); burn(_amount); } function exit(bytes32 _txnHash, address _foreignContract, uint256 _amount, bytes _signatures) public { require(contains(_txnHash) == false, 'Foreign transaction has already been processed'); bytes32 hash = toEthBytes32SignedMessageHash(entranceHash(_txnHash,_foreignContract, _amount)); address[] memory recovered = recoverAddresses(hash, _signatures); require(verifyValidators(recovered), "Validator verification failed."); require(_foreignContract == foreignContract, "Invalid contract target."); mint(msg.sender, _amount); foreignTransactions[_txnHash] = true; emit ExitBridgeEvent(msg.sender, _amount); } function contains(bytes32 _txnHash) internal view returns (bool){ return foreignTransactions[_txnHash]; } function verifyValidators(address[] recovered) internal view returns (bool) { require(recovered.length == validators.length, "Invalid number of signatures"); for(uint i = 0 ; i < validators.length; i++) { if(validators[i] != recovered[i]) { return false; } } return true; } function mint( address _to, uint256 _amount ) internal returns (bool) { totalSupply_ = totalSupply_.add(_amount); balances[_to] = balances[_to].add(_amount); emit Mint(_to, _amount); emit Transfer(address(0), _to, _amount); return true; } /** * @dev Burns a specific amount of tokens. * @param _value The amount of token to be burned. */ function burn(uint256 _value) internal { _burn(msg.sender, _value); } function _burn(address _who, uint256 _value) internal { require(_value <= balances[_who]); // no need to require value <= totalSupply, since that would imply the // sender's balance is greater than the totalSupply, which *should* be an assertion failure balances[_who] = balances[_who].sub(_value); totalSupply_ = totalSupply_.sub(_value); emit Burn(_who, _value); emit Transfer(_who, address(0), _value); } /** * @notice Hash (keccak256) of the payload used by deposit * @param _contractAddress the target ERC20 address * @param _amount the original minter */ function entranceHash(bytes32 txnHash, address _contractAddress, uint256 _amount) public view returns (bytes32) { // "0x8177cf3c": entranceHash(bytes32, address,uint256) return keccak256(abi.encode( bytes4(0x8177cf3c), msg.sender, txnHash, _contractAddress, _amount)); } } // File: contracts/HomeToken.sol contract HomeToken is Bridgeable { string public name = "SwapMatic Token"; string public symbol = "SWAM"; uint public decimals = 18; uint public INITIAL_SUPPLY = 0; constructor() public { totalSupply_ = 0; balances[msg.sender] = 0; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"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":"_hash","type":"bytes32"},{"name":"_signatures","type":"bytes"},{"name":"_pos","type":"uint256"}],"name":"recoverAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"INITIAL_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_signatures","type":"bytes"}],"name":"countSignatures","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"validators","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_validator","type":"address"}],"name":"addValidator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","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":"_foreignContract","type":"address"}],"name":"pair","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"txnHash","type":"bytes32"},{"name":"_contractAddress","type":"address"},{"name":"_amount","type":"uint256"}],"name":"entranceHash","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"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":"_amount","type":"uint256"}],"name":"enter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"foreignContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_signatures","type":"bytes"},{"name":"_pos","type":"uint256"}],"name":"parseSignature","outputs":[{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_msg","type":"bytes"}],"name":"toEthPersonalSignedMessageHash","outputs":[{"name":"signHash","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_msg","type":"bytes32"}],"name":"toEthBytes32SignedMessageHash","outputs":[{"name":"signHash","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"_txnHash","type":"bytes32"},{"name":"_foreignContract","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_signatures","type":"bytes"}],"name":"exit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"v","type":"uint256"}],"name":"uintToString","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"_hash","type":"bytes32"},{"name":"_signatures","type":"bytes"}],"name":"recoverAddresses","outputs":[{"name":"addresses","type":"address[]"}],"payable":false,"stateMutability":"pure","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":false,"name":"from","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"EnterBridgeEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"sender","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"ExitBridgeEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"burner","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Burn","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":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]
Contract Creation Code
60c0604052600f60808190527f537761704d6174696320546f6b656e000000000000000000000000000000000060a0908152620000409160079190620000cf565b506040805180820190915260048082527f5357414d0000000000000000000000000000000000000000000000000000000060209092019182526200008791600891620000cf565b5060126009556000600a553480156200009f57600080fd5b5060038054600160a060020a03191633908117909155600060018190559081526020819052604081205562000174565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200011257805160ff191683800117855562000142565b8280016001018555821562000142579182015b828111156200014257825182559160200191906001019062000125565b506200015092915062000154565b5090565b6200017191905b808211156200015057600081556001016200015b565b90565b611a8d80620001846000396000f30060806040526004361061017f5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610184578063095ea7b31461020e57806318160ddd146102465780631c2a15b81461026d57806323b872dd146102e95780632ff2e9dc14610313578063313ce5671461032857806333ae3ad01461033d57806335aa2e44146103965780634d238c8e146103ae57806366188463146103d157806370a08231146103f5578063715018a6146104165780637fb992f71461042b5780638177cf3c1461044c5780638da5cb5b146104735780638f32d59b1461048857806395d89b411461049d578063a59f3e0c146104b2578063a9059cbb146104ca578063abd4d716146104ee578063b31d63cc14610503578063d73dd62314610580578063d8a40f6b146105a4578063dd62ed3e146105fd578063e5990d2014610624578063e6bce1ae1461063c578063e9395679146106ab578063f0c8e969146106c3578063f2fde38b14610771575b600080fd5b34801561019057600080fd5b50610199610792565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101d35781810151838201526020016101bb565b50505050905090810190601f1680156102005780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561021a57600080fd5b50610232600160a060020a0360043516602435610820565b604080519115158252519081900360200190f35b34801561025257600080fd5b5061025b610886565b60408051918252519081900360200190f35b34801561027957600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526102cd958335953695604494919390910191908190840183828082843750949750509335945061088c9350505050565b60408051600160a060020a039092168252519081900360200190f35b3480156102f557600080fd5b50610232600160a060020a0360043581169060243516604435610915565b34801561031f57600080fd5b5061025b610a78565b34801561033457600080fd5b5061025b610a7e565b34801561034957600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261025b943694929360249392840191908190840183828082843750949750610a849650505050505050565b3480156103a257600080fd5b506102cd600435610aa6565b3480156103ba57600080fd5b506103cf600160a060020a0360043516610ace565b005b3480156103dd57600080fd5b50610232600160a060020a0360043516602435610b40565b34801561040157600080fd5b5061025b600160a060020a0360043516610c2f565b34801561042257600080fd5b506103cf610c4a565b34801561043757600080fd5b506103cf600160a060020a0360043516610cb4565b34801561045857600080fd5b5061025b600435600160a060020a0360243516604435610cf6565b34801561047f57600080fd5b506102cd610dbd565b34801561049457600080fd5b50610232610dcc565b3480156104a957600080fd5b50610199610ddd565b3480156104be57600080fd5b506103cf600435610e38565b3480156104d657600080fd5b50610232600160a060020a0360043516602435610e7f565b3480156104fa57600080fd5b506102cd610f4c565b34801561050f57600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261055e9436949293602493928401919081908401838280828437509497505093359450610f5b9350505050565b6040805160ff9094168452602084019290925282820152519081900360600190f35b34801561058c57600080fd5b50610232600160a060020a0360043516602435610faf565b3480156105b057600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261025b9436949293602493928401919081908401838280828437509497506110489650505050505050565b34801561060957600080fd5b5061025b600160a060020a036004358116906024351661118d565b34801561063057600080fd5b5061025b6004356111b8565b34801561064857600080fd5b50604080516020601f6064356004818101359283018490048402850184019095528184526103cf94803594600160a060020a03602480359190911695604435953695608494930191819084018382808284375094975061122f9650505050505050565b3480156106b757600080fd5b50610199600435611404565b3480156106cf57600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526107219583359536956044949193909101919081908401838280828437509497506115df9650505050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561075d578181015183820152602001610745565b505050509050019250505060405180910390f35b34801561077d57600080fd5b506103cf600160a060020a03600435166116dd565b6007805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156108185780601f106107ed57610100808354040283529160200191610818565b820191906000526020600020905b8154815290600101906020018083116107fb57829003601f168201915b505050505081565b336000818152600260209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b60015490565b60008060008061089c8686610f5b565b60408051600080825260208083018085528e905260ff8716838501526060830186905260808301859052925195985093965091945060019360a0808401949293601f19830193908390039091019190865af11580156108ff573d6000803e3d6000fd5b5050604051601f19015198975050505050505050565b600160a060020a03831660009081526020819052604081205482111561093a57600080fd5b600160a060020a038416600090815260026020908152604080832033845290915290205482111561096a57600080fd5b600160a060020a038316151561097f57600080fd5b600160a060020a0384166000908152602081905260409020546109a8908363ffffffff6116f916565b600160a060020a0380861660009081526020819052604080822093909355908516815220546109dd908363ffffffff61170b16565b600160a060020a03808516600090815260208181526040808320949094559187168152600282528281203382529091522054610a1f908363ffffffff6116f916565b600160a060020a0380861660008181526002602090815260408083203384528252918290209490945580518681529051928716939192600080516020611a42833981519152929181900390910190a35060019392505050565b600a5481565b60095481565b80516000906041900615610a99576000610aa0565b8151604190045b92915050565b6004805482908110610ab457fe5b600091825260209091200154600160a060020a0316905081565b610ad6610dcc565b1515610ae157600080fd5b600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b336000908152600260209081526040808320600160a060020a0386168452909152812054808310610b9457336000908152600260209081526040808320600160a060020a0388168452909152812055610bc9565b610ba4818463ffffffff6116f916565b336000908152600260209081526040808320600160a060020a03891684529091529020555b336000818152600260209081526040808320600160a060020a0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b600160a060020a031660009081526020819052604090205490565b610c52610dcc565b1515610c5d57600080fd5b600354604051600160a060020a03909116907ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482090600090a26003805473ffffffffffffffffffffffffffffffffffffffff19169055565b610cbc610dcc565b1515610cc757600080fd5b6005805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b604080517f8177cf3c00000000000000000000000000000000000000000000000000000000602080830191909152338284015260608201869052600160a060020a038516608083015260a08083018590528351808403909101815260c0909201928390528151600093918291908401908083835b60208310610d895780518252601f199092019160209182019101610d6a565b5181516020939093036101000a60001901801990911692169190911790526040519201829003909120979650505050505050565b600354600160a060020a031690565b600354600160a060020a0316331490565b6008805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156108185780601f106107ed57610100808354040283529160200191610818565b604080513381526020810183905281517fc6b9e46d1489b207d3057f60c8ac6b283467391239ee8e388c1583c20418f36d929181900390910190a1610e7c81611718565b50565b33600090815260208190526040812054821115610e9b57600080fd5b600160a060020a0383161515610eb057600080fd5b33600090815260208190526040902054610ed0908363ffffffff6116f916565b3360009081526020819052604080822092909255600160a060020a03851681522054610f02908363ffffffff61170b16565b600160a060020a03841660008181526020818152604091829020939093558051858152905191923392600080516020611a428339815191529281900390910190a350600192915050565b600554600160a060020a031681565b604180820283810160208101516040820151919093015160ff169291601b841015610f8757601b840193505b8360ff16601b1480610f9c57508360ff16601c145b1515610fa757600080fd5b509250925092565b336000908152600260209081526040808320600160a060020a0386168452909152812054610fe3908363ffffffff61170b16565b336000818152600260209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b60006110548251611404565b8260405160200180807f19457468657265756d205369676e6564204d6573736167653a0a000000000000815250601a0183805190602001908083835b602083106110af5780518252601f199092019160209182019101611090565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b602083106110f75780518252601f1990920191602091820191016110d8565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040526040518082805190602001908083835b6020831061115b5780518252601f19909201916020918201910161113c565b5181516020939093036101000a6000190180199091169216919091179052604051920182900390912095945050505050565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c80830185905283518084039091018152605c909201928390528151600093918291908401908083836020831061115b5780518252601f19909201916020918201910161113c565b6000606061123c86611722565b156112b7576040805160e560020a62461bcd02815260206004820152602e60248201527f466f726569676e207472616e73616374696f6e2068617320616c72656164792060448201527f6265656e2070726f636573736564000000000000000000000000000000000000606482015290519081900360840190fd5b6112ca6112c5878787610cf6565b6111b8565b91506112d682846115df565b90506112e181611737565b1515611337576040805160e560020a62461bcd02815260206004820152601e60248201527f56616c696461746f7220766572696669636174696f6e206661696c65642e0000604482015290519081900360640190fd5b600554600160a060020a0386811691161461139c576040805160e560020a62461bcd02815260206004820152601860248201527f496e76616c696420636f6e7472616374207461726765742e0000000000000000604482015290519081900360640190fd5b6113a6338561180a565b50600086815260066020908152604091829020805460ff19166001179055815133815290810186905281517f8fc406a425362a34b826c493c710d249c4006ec0fde54cebe73112447567b1a1929181900390910190a1505050505050565b6060816000828180808386151561143d577f30000000000000000000000000000000000000000000000000000000000000009550611475565b60008711156114755761010086049550600a870660300160f860020a0260010286179550600a8781151561146d57fe5b04965061143d565b604080516020808252818301909252908082016104008038833901905050945060009350600092505b602083101561152b576008830260020a860291507fff00000000000000000000000000000000000000000000000000000000000000821615611520578185858151811015156114e957fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506001909301925b60019092019161149e565b836040519080825280601f01601f191660200182016040528015611559578160200160208202803883390190505b509050600092505b838310156115d357848381518110151561157757fe5b90602001015160f860020a900460f860020a02818481518110151561159857fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600190920191611561565b98975050505050505050565b606060008060008060006115f287610a84565b91508160405190808252806020026020018201604052801561161e578160200160208202803883390190505b509550600090505b818110156116d2576116388782610f5b565b60408051600080825260208083018085528f905260ff87168385015260608301869052608083018590529251959a5093985091965060019360a0808401949293601f19830193908390039091019190865af115801561169b573d6000803e3d6000fd5b5050506020604051035186828151811015156116b357fe5b600160a060020a03909216602092830290910190910152600101611626565b505050505092915050565b6116e5610dcc565b15156116f057600080fd5b610e7c816118d4565b60008282111561170557fe5b50900390565b81810182811015610aa057fe5b610e7c3382611952565b60009081526006602052604090205460ff1690565b6004548151600091829114611796576040805160e560020a62461bcd02815260206004820152601c60248201527f496e76616c6964206e756d626572206f66207369676e61747572657300000000604482015290519081900360640190fd5b5060005b6004548110156117ff5782818151811015156117b257fe5b90602001906020020151600160a060020a03166004828154811015156117d457fe5b600091825260209091200154600160a060020a0316146117f75760009150611804565b60010161179a565b600191505b50919050565b600154600090611820908363ffffffff61170b16565b600155600160a060020a03831660009081526020819052604090205461184c908363ffffffff61170b16565b600160a060020a03841660008181526020818152604091829020939093558051858152905191927f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688592918290030190a2604080518381529051600160a060020a03851691600091600080516020611a428339815191529181900360200190a350600192915050565b600160a060020a03811615156118e957600080fd5b600354604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600160a060020a03821660009081526020819052604090205481111561197757600080fd5b600160a060020a0382166000908152602081905260409020546119a0908263ffffffff6116f916565b600160a060020a0383166000908152602081905260409020556001546119cc908263ffffffff6116f916565b600155604080518281529051600160a060020a038416917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a2604080518281529051600091600160a060020a03851691600080516020611a428339815191529181900360200190a350505600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a723058200652eea09cc2aeb1d35416f98d06623fb57e82aaef43400863d2dc16b370be6d0029
Deployed Bytecode
0x60806040526004361061017f5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610184578063095ea7b31461020e57806318160ddd146102465780631c2a15b81461026d57806323b872dd146102e95780632ff2e9dc14610313578063313ce5671461032857806333ae3ad01461033d57806335aa2e44146103965780634d238c8e146103ae57806366188463146103d157806370a08231146103f5578063715018a6146104165780637fb992f71461042b5780638177cf3c1461044c5780638da5cb5b146104735780638f32d59b1461048857806395d89b411461049d578063a59f3e0c146104b2578063a9059cbb146104ca578063abd4d716146104ee578063b31d63cc14610503578063d73dd62314610580578063d8a40f6b146105a4578063dd62ed3e146105fd578063e5990d2014610624578063e6bce1ae1461063c578063e9395679146106ab578063f0c8e969146106c3578063f2fde38b14610771575b600080fd5b34801561019057600080fd5b50610199610792565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101d35781810151838201526020016101bb565b50505050905090810190601f1680156102005780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561021a57600080fd5b50610232600160a060020a0360043516602435610820565b604080519115158252519081900360200190f35b34801561025257600080fd5b5061025b610886565b60408051918252519081900360200190f35b34801561027957600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526102cd958335953695604494919390910191908190840183828082843750949750509335945061088c9350505050565b60408051600160a060020a039092168252519081900360200190f35b3480156102f557600080fd5b50610232600160a060020a0360043581169060243516604435610915565b34801561031f57600080fd5b5061025b610a78565b34801561033457600080fd5b5061025b610a7e565b34801561034957600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261025b943694929360249392840191908190840183828082843750949750610a849650505050505050565b3480156103a257600080fd5b506102cd600435610aa6565b3480156103ba57600080fd5b506103cf600160a060020a0360043516610ace565b005b3480156103dd57600080fd5b50610232600160a060020a0360043516602435610b40565b34801561040157600080fd5b5061025b600160a060020a0360043516610c2f565b34801561042257600080fd5b506103cf610c4a565b34801561043757600080fd5b506103cf600160a060020a0360043516610cb4565b34801561045857600080fd5b5061025b600435600160a060020a0360243516604435610cf6565b34801561047f57600080fd5b506102cd610dbd565b34801561049457600080fd5b50610232610dcc565b3480156104a957600080fd5b50610199610ddd565b3480156104be57600080fd5b506103cf600435610e38565b3480156104d657600080fd5b50610232600160a060020a0360043516602435610e7f565b3480156104fa57600080fd5b506102cd610f4c565b34801561050f57600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261055e9436949293602493928401919081908401838280828437509497505093359450610f5b9350505050565b6040805160ff9094168452602084019290925282820152519081900360600190f35b34801561058c57600080fd5b50610232600160a060020a0360043516602435610faf565b3480156105b057600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261025b9436949293602493928401919081908401838280828437509497506110489650505050505050565b34801561060957600080fd5b5061025b600160a060020a036004358116906024351661118d565b34801561063057600080fd5b5061025b6004356111b8565b34801561064857600080fd5b50604080516020601f6064356004818101359283018490048402850184019095528184526103cf94803594600160a060020a03602480359190911695604435953695608494930191819084018382808284375094975061122f9650505050505050565b3480156106b757600080fd5b50610199600435611404565b3480156106cf57600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526107219583359536956044949193909101919081908401838280828437509497506115df9650505050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561075d578181015183820152602001610745565b505050509050019250505060405180910390f35b34801561077d57600080fd5b506103cf600160a060020a03600435166116dd565b6007805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156108185780601f106107ed57610100808354040283529160200191610818565b820191906000526020600020905b8154815290600101906020018083116107fb57829003601f168201915b505050505081565b336000818152600260209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b60015490565b60008060008061089c8686610f5b565b60408051600080825260208083018085528e905260ff8716838501526060830186905260808301859052925195985093965091945060019360a0808401949293601f19830193908390039091019190865af11580156108ff573d6000803e3d6000fd5b5050604051601f19015198975050505050505050565b600160a060020a03831660009081526020819052604081205482111561093a57600080fd5b600160a060020a038416600090815260026020908152604080832033845290915290205482111561096a57600080fd5b600160a060020a038316151561097f57600080fd5b600160a060020a0384166000908152602081905260409020546109a8908363ffffffff6116f916565b600160a060020a0380861660009081526020819052604080822093909355908516815220546109dd908363ffffffff61170b16565b600160a060020a03808516600090815260208181526040808320949094559187168152600282528281203382529091522054610a1f908363ffffffff6116f916565b600160a060020a0380861660008181526002602090815260408083203384528252918290209490945580518681529051928716939192600080516020611a42833981519152929181900390910190a35060019392505050565b600a5481565b60095481565b80516000906041900615610a99576000610aa0565b8151604190045b92915050565b6004805482908110610ab457fe5b600091825260209091200154600160a060020a0316905081565b610ad6610dcc565b1515610ae157600080fd5b600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b336000908152600260209081526040808320600160a060020a0386168452909152812054808310610b9457336000908152600260209081526040808320600160a060020a0388168452909152812055610bc9565b610ba4818463ffffffff6116f916565b336000908152600260209081526040808320600160a060020a03891684529091529020555b336000818152600260209081526040808320600160a060020a0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b600160a060020a031660009081526020819052604090205490565b610c52610dcc565b1515610c5d57600080fd5b600354604051600160a060020a03909116907ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482090600090a26003805473ffffffffffffffffffffffffffffffffffffffff19169055565b610cbc610dcc565b1515610cc757600080fd5b6005805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b604080517f8177cf3c00000000000000000000000000000000000000000000000000000000602080830191909152338284015260608201869052600160a060020a038516608083015260a08083018590528351808403909101815260c0909201928390528151600093918291908401908083835b60208310610d895780518252601f199092019160209182019101610d6a565b5181516020939093036101000a60001901801990911692169190911790526040519201829003909120979650505050505050565b600354600160a060020a031690565b600354600160a060020a0316331490565b6008805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156108185780601f106107ed57610100808354040283529160200191610818565b604080513381526020810183905281517fc6b9e46d1489b207d3057f60c8ac6b283467391239ee8e388c1583c20418f36d929181900390910190a1610e7c81611718565b50565b33600090815260208190526040812054821115610e9b57600080fd5b600160a060020a0383161515610eb057600080fd5b33600090815260208190526040902054610ed0908363ffffffff6116f916565b3360009081526020819052604080822092909255600160a060020a03851681522054610f02908363ffffffff61170b16565b600160a060020a03841660008181526020818152604091829020939093558051858152905191923392600080516020611a428339815191529281900390910190a350600192915050565b600554600160a060020a031681565b604180820283810160208101516040820151919093015160ff169291601b841015610f8757601b840193505b8360ff16601b1480610f9c57508360ff16601c145b1515610fa757600080fd5b509250925092565b336000908152600260209081526040808320600160a060020a0386168452909152812054610fe3908363ffffffff61170b16565b336000818152600260209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b60006110548251611404565b8260405160200180807f19457468657265756d205369676e6564204d6573736167653a0a000000000000815250601a0183805190602001908083835b602083106110af5780518252601f199092019160209182019101611090565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b602083106110f75780518252601f1990920191602091820191016110d8565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040526040518082805190602001908083835b6020831061115b5780518252601f19909201916020918201910161113c565b5181516020939093036101000a6000190180199091169216919091179052604051920182900390912095945050505050565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c80830185905283518084039091018152605c909201928390528151600093918291908401908083836020831061115b5780518252601f19909201916020918201910161113c565b6000606061123c86611722565b156112b7576040805160e560020a62461bcd02815260206004820152602e60248201527f466f726569676e207472616e73616374696f6e2068617320616c72656164792060448201527f6265656e2070726f636573736564000000000000000000000000000000000000606482015290519081900360840190fd5b6112ca6112c5878787610cf6565b6111b8565b91506112d682846115df565b90506112e181611737565b1515611337576040805160e560020a62461bcd02815260206004820152601e60248201527f56616c696461746f7220766572696669636174696f6e206661696c65642e0000604482015290519081900360640190fd5b600554600160a060020a0386811691161461139c576040805160e560020a62461bcd02815260206004820152601860248201527f496e76616c696420636f6e7472616374207461726765742e0000000000000000604482015290519081900360640190fd5b6113a6338561180a565b50600086815260066020908152604091829020805460ff19166001179055815133815290810186905281517f8fc406a425362a34b826c493c710d249c4006ec0fde54cebe73112447567b1a1929181900390910190a1505050505050565b6060816000828180808386151561143d577f30000000000000000000000000000000000000000000000000000000000000009550611475565b60008711156114755761010086049550600a870660300160f860020a0260010286179550600a8781151561146d57fe5b04965061143d565b604080516020808252818301909252908082016104008038833901905050945060009350600092505b602083101561152b576008830260020a860291507fff00000000000000000000000000000000000000000000000000000000000000821615611520578185858151811015156114e957fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506001909301925b60019092019161149e565b836040519080825280601f01601f191660200182016040528015611559578160200160208202803883390190505b509050600092505b838310156115d357848381518110151561157757fe5b90602001015160f860020a900460f860020a02818481518110151561159857fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600190920191611561565b98975050505050505050565b606060008060008060006115f287610a84565b91508160405190808252806020026020018201604052801561161e578160200160208202803883390190505b509550600090505b818110156116d2576116388782610f5b565b60408051600080825260208083018085528f905260ff87168385015260608301869052608083018590529251959a5093985091965060019360a0808401949293601f19830193908390039091019190865af115801561169b573d6000803e3d6000fd5b5050506020604051035186828151811015156116b357fe5b600160a060020a03909216602092830290910190910152600101611626565b505050505092915050565b6116e5610dcc565b15156116f057600080fd5b610e7c816118d4565b60008282111561170557fe5b50900390565b81810182811015610aa057fe5b610e7c3382611952565b60009081526006602052604090205460ff1690565b6004548151600091829114611796576040805160e560020a62461bcd02815260206004820152601c60248201527f496e76616c6964206e756d626572206f66207369676e61747572657300000000604482015290519081900360640190fd5b5060005b6004548110156117ff5782818151811015156117b257fe5b90602001906020020151600160a060020a03166004828154811015156117d457fe5b600091825260209091200154600160a060020a0316146117f75760009150611804565b60010161179a565b600191505b50919050565b600154600090611820908363ffffffff61170b16565b600155600160a060020a03831660009081526020819052604090205461184c908363ffffffff61170b16565b600160a060020a03841660008181526020818152604091829020939093558051858152905191927f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688592918290030190a2604080518381529051600160a060020a03851691600091600080516020611a428339815191529181900360200190a350600192915050565b600160a060020a03811615156118e957600080fd5b600354604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600160a060020a03821660009081526020819052604090205481111561197757600080fd5b600160a060020a0382166000908152602081905260409020546119a0908263ffffffff6116f916565b600160a060020a0383166000908152602081905260409020556001546119cc908263ffffffff6116f916565b600155604080518281529051600160a060020a038416917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a2604080518281529051600091600160a060020a03851691600080516020611a428339815191529181900360200190a350505600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a723058200652eea09cc2aeb1d35416f98d06623fb57e82aaef43400863d2dc16b370be6d0029
Deployed Bytecode Sourcemap
18900:287:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18940:38;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18940:38: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;18940:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5686:192;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5686:192:0;-1:-1:-1;;;;;5686:192:0;;;;;;;;;;;;;;;;;;;;;;;;;2367:85;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2367:85:0;;;;;;;;;;;;;;;;;;;;12385:330;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;12385:330:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12385:330:0;;-1:-1:-1;;12385:330:0;;;-1:-1:-1;12385:330:0;;-1:-1:-1;;;;12385:330:0;;;;;-1:-1:-1;;;;;12385:330:0;;;;;;;;;;;;;;4570:487;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4570:487:0;-1:-1:-1;;;;;4570:487:0;;;;;;;;;;;;19054:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19054:30:0;;;;19022:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19022:25:0;;;;11904:203;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;11904:203:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11904:203:0;;-1:-1:-1;11904:203:0;;-1:-1:-1;;;;;;;11904:203:0;15565:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;15565:27:0;;;;;15908:105;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;15908:105:0;-1:-1:-1;;;;;15908:105:0;;;;;;;7605:447;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7605:447:0;-1:-1:-1;;;;;7605:447:0;;;;;;;3151:101;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3151:101:0;-1:-1:-1;;;;;3151:101:0;;;;;14756:116;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14756:116:0;;;;16021:107;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;16021:107:0;-1:-1:-1;;;;;16021:107:0;;;;;18562:293;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;18562:293:0;;;-1:-1:-1;;;;;18562:293:0;;;;;;;14097:72;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14097:72:0;;;;14399:85;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14399:85:0;;;;18986:29;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18986:29:0;;;;16144:124;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;16144:124:0;;;;;2613:329;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2613:329:0;-1:-1:-1;;;;;2613:329:0;;;;;;;15596:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15596:30:0;;;;10681:979;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;10681:979:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10681:979:0;;-1:-1:-1;;10681:979:0;;;-1:-1:-1;10681:979:0;;-1:-1:-1;;;;10681:979:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6830:307;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6830:307:0;-1:-1:-1;;;;;6830:307:0;;;;;;;8926:263;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;8926:263:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8926:263:0;;-1:-1:-1;8926:263:0;;-1:-1:-1;;;;;;;8926:263:0;6205:162;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6205:162:0;-1:-1:-1;;;;;6205:162:0;;;;;;;;;;8491:239;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;8491:239:0;;;;;16280:688;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;16280:688:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16280:688:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16280:688:0;;-1:-1:-1;16280:688:0;;-1:-1:-1;;;;;;;16280:688:0;9306:932;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9306:932:0;;;;;12923:487;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;12923:487:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12923:487:0;;-1:-1:-1;12923:487:0;;-1:-1:-1;;;;;;;12923:487: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;12923:487:0;;;;;;;;;;;;;;;;;15039:103;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;15039:103:0;-1:-1:-1;;;;;15039:103:0;;;;;18940:38;;;;;;;;;;;;;;;-1:-1:-1;;18940:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5686:192::-;5774:10;5753:4;5766:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;5766:29:0;;;;;;;;;;;:38;;;5816;;;;;;;5753:4;;5766:29;;5774:10;;5816:38;;;;;;;;-1:-1:-1;5868:4:0;5686:192;;;;:::o;2367:85::-;2434:12;;2367:85;:::o;12385:330::-;12536:7;12561;12579:9;12599;12631:33;12646:11;12659:4;12631:14;:33::i;:::-;12682:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12619:45;;-1:-1:-1;12619:45:0;;-1:-1:-1;12619:45:0;;-1:-1:-1;12682:25:0;;;;;;;;;-1:-1:-1;;12682:25:0;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;12682:25:0;;-1:-1:-1;;12682:25:0;;;12385:330;-1:-1:-1;;;;;;;;12385:330:0:o;4570:487::-;-1:-1:-1;;;;;4716:15:0;;4682:4;4716:15;;;;;;;;;;;4706:25;;;4698:34;;;;;;-1:-1:-1;;;;;4757:14:0;;;;;;:7;:14;;;;;;;;4772:10;4757:26;;;;;;;;4747:36;;;4739:45;;;;;;-1:-1:-1;;;;;4799:17:0;;;;4791:26;;;;;;-1:-1:-1;;;;;4844:15:0;;:8;:15;;;;;;;;;;;:27;;4864:6;4844:27;:19;:27;:::i;:::-;-1:-1:-1;;;;;4826:15:0;;;:8;:15;;;;;;;;;;;:45;;;;4894:13;;;;;;;:25;;4912:6;4894:25;:17;:25;:::i;:::-;-1:-1:-1;;;;;4878:13:0;;;:8;:13;;;;;;;;;;;:41;;;;4955:14;;;;;:7;:14;;;;;4970:10;4955:26;;;;;;;:38;;4986:6;4955:38;:30;:38;:::i;:::-;-1:-1:-1;;;;;4926:14:0;;;;;;;:7;:14;;;;;;;;4941:10;4926:26;;;;;;;;:67;;;;5005:28;;;;;;;;;;;4926:14;;-1:-1:-1;;;;;;;;;;;5005:28:0;;;;;;;;;;-1:-1:-1;5047:4:0;4570:487;;;;;:::o;19054:30::-;;;;:::o;19022:25::-;;;;:::o;11904:203::-;12041:18;;12012:4;;12062:2;;12041:23;:28;:58;;12098:1;12041:58;;;12072:18;;12093:2;;12072:23;12041:58;12034:65;11904:203;-1:-1:-1;;11904:203:0:o;15565:27::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15565:27:0;;-1:-1:-1;15565:27:0;:::o;15908:105::-;14290:9;:7;:9::i;:::-;14282:18;;;;;;;;15978:10;27::-1;;39:1;23:18;;45:23;;-1:-1;15978:27:0;;;;;;;;-1:-1:-1;;15978:27:0;-1:-1:-1;;;;;15978:27:0;;;;;;;;;;15908:105::o;7605:447::-;7759:10;7716:4;7751:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;7751:29:0;;;;;;;;;;7791:28;;;7787:169;;7838:10;7862:1;7830:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;7830:29:0;;;;;;;;;:33;7787:169;;;7918:30;:8;7931:16;7918:30;:12;:30;:::i;:::-;7894:10;7886:19;;;;:7;:19;;;;;;;;-1:-1:-1;;;;;7886:29:0;;;;;;;;;:62;7787:169;7976:10;7998:19;;;;:7;:19;;;;;;;;-1:-1:-1;;;;;7967:61:0;;7998:29;;;;;;;;;;;7967:61;;;;;;;;;7976:10;7967:61;;;;;;;;;;;-1:-1:-1;8042:4:0;;7605:447;-1:-1:-1;;;7605:447:0:o;3151:101::-;-1:-1:-1;;;;;3230:16:0;3207:7;3230:16;;;;;;;;;;;;3151:101::o;14756:116::-;14290:9;:7;:9::i;:::-;14282:18;;;;;;;;14833:6;;14814:26;;-1:-1:-1;;;;;14833:6:0;;;;14814:26;;14833:6;;14814:26;14847:6;:19;;-1:-1:-1;;14847:19:0;;;14756:116::o;16021:107::-;14290:9;:7;:9::i;:::-;14282:18;;;;;;;;16086:15;:34;;-1:-1:-1;;16086:34:0;-1:-1:-1;;;;;16086:34:0;;;;;;;;;;16021:107::o;18562:293::-;18767:79;;;18779:18;18767:79;;;;;;;;18799:10;18767:79;;;;;;;;;;-1:-1:-1;;;;;18767:79:0;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;18767:79:0;;;;;;;;18757:90;;18665:7;;18767:79;;;18757:90;;;;;18767:79;18757:90;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;;;;365:33;;18757:90:0;;;;;;;;;;;;-1:-1:-1;;;;;;;18562:293:0:o;14097:72::-;14157:6;;-1:-1:-1;;;;;14157:6:0;14097:72;:::o;14399:85::-;14472:6;;-1:-1:-1;;;;;14472:6:0;14458:10;:20;;14399:85::o;18986:29::-;;;;;;;;;;;;;;;-1:-1:-1;;18986:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16144:124;16199:37;;;16216:10;16199:37;;;;;;;;;;;;;;;;;;;;;16247:13;16252:7;16247:4;:13::i;:::-;16144:124;:::o;2613:329::-;2716:10;2676:4;2707:20;;;;;;;;;;;2697:30;;;2689:39;;;;;;-1:-1:-1;;;;;2743:17:0;;;;2735:26;;;;;;2802:10;2793:8;:20;;;;;;;;;;;:32;;2818:6;2793:32;:24;:32;:::i;:::-;2779:10;2770:8;:20;;;;;;;;;;;:55;;;;-1:-1:-1;;;;;2848:13:0;;;;;;:25;;2866:6;2848:25;:17;:25;:::i;:::-;-1:-1:-1;;;;;2832:13:0;;:8;:13;;;;;;;;;;;;:41;;;;2885:33;;;;;;;2832:13;;2894:10;;-1:-1:-1;;;;;;;;;;;2885:33:0;;;;;;;;;-1:-1:-1;2932:4:0;2613:329;;;;:::o;15596:30::-;;;-1:-1:-1;;;;;15596:30:0;;:::o;10681:979::-;10876:2;10869:9;;;11136:33;;;11157:2;11136:33;;11130:40;11216:2;11195:33;;11189:40;11529:33;;;;11523:40;11565:4;11519:51;;11130:40;11601:2;11597:6;;11593:19;;;11610:2;11605:7;;;;11593:19;11633:1;:7;;11638:2;11633:7;:18;;;;11644:1;:7;;11649:2;11644:7;11633:18;11625:27;;;;;;;;10681:979;;;;;;:::o;6830:307::-;7001:10;6936:4;6993:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;6993:29:0;;;;;;;;;;:46;;7027:11;6993:46;:33;:46;:::i;:::-;6960:10;6952:19;;;;:7;:19;;;;;;;;-1:-1:-1;;;;;6952:29:0;;;;;;;;;;;;:88;;;7052:61;;;;;;6952:29;;7052:61;;;;;;;;;;;-1:-1:-1;7127:4:0;6830:307;;;;:::o;8926:263::-;9042:16;9148:25;9161:4;:11;9148:12;:25::i;:::-;9175:4;9097:83;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;9097:83:0;;;;;;;;;;-1:-1:-1;9097:83: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;;;9097:83:0;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;9097:83:0;;;9087:94;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;;;;365:33;;9087:94:0;;;;;;;;;;;;-1:-1:-1;;;;;8926:263:0:o;6205:162::-;-1:-1:-1;;;;;6336:15:0;;;6310:7;6336:15;;;:7;:15;;;;;;;;:25;;;;;;;;;;;;;6205:162::o;8491:239::-;8663:58;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;8663:58:0;;;;;;;;8653:69;;8608:16;;8663:58;;;8653:69;;;;;8663:58;8653:69;66:2:-1;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;16280:688:0;16486:12;16591:26;16397:18;16406:8;16397;:18::i;:::-;:27;16389:86;;;;;-1:-1:-1;;;;;16389:86:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16501:79;16531:48;16544:8;16553:16;16571:7;16531:12;:48::i;:::-;16501:29;:79::i;:::-;16486:94;;16620:35;16637:4;16643:11;16620:16;:35::i;:::-;16591:64;;16674:27;16691:9;16674:16;:27::i;:::-;16666:70;;;;;;;-1:-1:-1;;;;;16666:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;16775:15;;-1:-1:-1;;;;;16755:35:0;;;16775:15;;16755:35;16747:72;;;;;-1:-1:-1;;;;;16747:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;16830:25;16835:10;16847:7;16830:4;:25::i;:::-;-1:-1:-1;16866:29:0;;;;:19;:29;;;;;;;;;:36;;-1:-1:-1;;16866:36:0;16898:4;16866:36;;;16918;;16934:10;16918:36;;;;;;;;;;;;;;;;;;;;;16280:688;;;;;;:::o;9306:932::-;9400:6;9433:1;9424:6;9400;9424;;;9400;9469;;9465:248;;;9492:7;;;9465:248;;;9543:1;9539;:5;9532:170;;;9588:6;9582:1;9577:18;;-1:-1:-1;9634:2:0;9630:1;:6;9640:2;9629:13;-1:-1:-1;;;9628:31:0;9620:40;;9615:45;;;;9684:2;9679:7;;;;;;;;;;;9532:170;;;9752:13;;;9762:2;9752:13;;;;;;;;;;;;;17:15:-1;;105:10;9752:13:0;88:34:-1;136:17;;-1:-1;9752:13:0;9725:40;;9793:1;9776:18;;9819:1;9810:10;;9805:229;9826:2;9822:1;:6;9805:229;;;9891:1;:5;;9885:1;:12;9875:22;;;-1:-1:-1;9918:9:0;;;;9914:109;;9973:4;9948:11;9960:9;9948:22;;;;;;;;;;;;;;:29;;;;;;;;;;-1:-1:-1;9996:11:0;;;;;9914:109;9830:3;;;;;9805:229;;;10081:9;10071:20;;;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;10071:20:0;;10044:47;;10111:1;10107:5;;10102:90;10118:9;10114:1;:13;10102:90;;;10166:11;10178:1;10166:14;;;;;;;;;;;;;;;-1:-1:-1;;;10166:14:0;;-1:-1:-1;;;10166:14:0;10149:11;10161:1;10149:14;;;;;;;;;;;;;;:31;;;;;;;;;;-1:-1:-1;10129:3:0;;;;;10102:90;;;10218:11;9306:932;-1:-1:-1;;;;;;;;9306:932:0:o;12923:487::-;13056:19;13093:7;13111:9;13131;13151:10;13251:6;13164:28;13180:11;13164:15;:28::i;:::-;13151:41;;13229:5;13215:20;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;13215:20:0;;13203:32;;13260:1;13251:10;;13246:157;13267:5;13263:1;:9;13246:157;;;13306:30;13321:11;13334:1;13306:14;:30::i;:::-;13366:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13294:42;;-1:-1:-1;13294:42:0;;-1:-1:-1;13294:42:0;;-1:-1:-1;13366:25:0;;;;;;;;;-1:-1:-1;;13366:25:0;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13366:25:0;;;;;;;;13351:9;13361:1;13351:12;;;;;;;;;;-1:-1:-1;;;;;13351:40:0;;;:12;;;;;;;;;;:40;13274:3;;13246:157;;;12923:487;;;;;;;;;:::o;15039:103::-;14290:9;:7;:9::i;:::-;14282:18;;;;;;;;15108:28;15127:8;15108:18;:28::i;1658:119::-;1718:7;1741:8;;;;1734:16;;;;-1:-1:-1;1764:7:0;;;1658:119::o;1844:132::-;1926:7;;;1947;;;;1940:15;;;17856:74;17900:25;17906:10;17918:6;17900:5;:25::i;16976:119::-;17035:4;17058:29;;;:19;:29;;;;;;;;;16976:119::o;17103:357::-;17218:10;:17;17198:16;;17173:4;;;;17198:37;17190:78;;;;;-1:-1:-1;;;;;17190:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17292:1:0;17279:152;17300:10;:17;17296:21;;17279:152;;;17359:9;17369:1;17359:12;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17342:29:0;:10;17353:1;17342:13;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17342:13:0;:29;17339:81;;17399:5;17392:12;;;;17339:81;17319:3;;17279:152;;;17448:4;17441:11;;17103:357;;;;;:::o;17468:276::-;17567:12;;17538:4;;17567:25;;17584:7;17567:25;:16;:25;:::i;:::-;17552:12;:40;-1:-1:-1;;;;;17616:13:0;;:8;:13;;;;;;;;;;;:26;;17634:7;17616:26;:17;:26;:::i;:::-;-1:-1:-1;;;;;17600:13:0;;:8;:13;;;;;;;;;;;;:42;;;;17655:18;;;;;;;17600:13;;17655:18;;;;;;;;;17686:34;;;;;;;;-1:-1:-1;;;;;17686:34:0;;;17703:1;;-1:-1:-1;;;;;;;;;;;17686:34:0;;;;;;;;-1:-1:-1;17735:4:0;17468:276;;;;:::o;15282:173::-;-1:-1:-1;;;;;15352:22:0;;;;15344:31;;;;;;15408:6;;15387:38;;-1:-1:-1;;;;;15387:38:0;;;;15408:6;;15387:38;;15408:6;;15387:38;15432:6;:17;;-1:-1:-1;;15432:17:0;-1:-1:-1;;;;;15432:17:0;;;;;;;;;;15282:173::o;17935:432::-;-1:-1:-1;;;;;18012:14:0;;:8;:14;;;;;;;;;;;18002:24;;;17994:33;;;;;;-1:-1:-1;;;;;18220:14:0;;:8;:14;;;;;;;;;;;:26;;18239:6;18220:26;:18;:26;:::i;:::-;-1:-1:-1;;;;;18203:14:0;;:8;:14;;;;;;;;;;:43;18266:12;;:24;;18283:6;18266:24;:16;:24;:::i;:::-;18251:12;:39;18300:18;;;;;;;;-1:-1:-1;;;;;18300:18:0;;;;;;;;;;;;;18328:34;;;;;;;;18351:1;;-1:-1:-1;;;;;18328:34:0;;;-1:-1:-1;;;;;;;;;;;18328:34:0;;;;;;;;17935:432;;:::o
Swarm Source
bzzr://0652eea09cc2aeb1d35416f98d06623fb57e82aaef43400863d2dc16b370be6d
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
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.