ETH Price: $3,227.49 (-3.82%)

Token

Floyd Mayweather - Comics Collection (FMWCC)
 

Overview

Max Total Supply

1,951 FMWCC

Holders

1,887

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Filtered by Token Holder
akiboi.eth
Balance
1 FMWCC
0xb32f35deA4AD87d25D1FA11483Dce922b6316FC6
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
FloydComicsCollection

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 99999 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-10-10
*/

//SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;


interface IERC165 {
    
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

interface IERC721 is IERC165 {
    
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);

    
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);

    
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    
    function balanceOf(address owner) external view returns (uint256 balance);

    
    function ownerOf(uint256 tokenId) external view returns (address owner);

    
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    
    function approve(address to, uint256 tokenId) external;

    
    function getApproved(uint256 tokenId) external view returns (address operator);

    
    function setApprovalForAll(address operator, bool _approved) external;

    
    function isApprovedForAll(address owner, address operator) external view returns (bool);

    
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes calldata data
    ) external;
}

interface IERC721Receiver {
    
    function onERC721Received(
        address operator,
        address from,
        uint256 tokenId,
        bytes calldata data
    ) external returns (bytes4);
}

interface IERC721Metadata is IERC721 {
    
    function name() external view returns (string memory);

    
    function symbol() external view returns (string memory);

    
    function tokenURI(uint256 tokenId) external view returns (string memory);
}

library Address {
    
    function isContract(address account) internal view returns (bool) {
        
        
        

        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) private pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            
            if (returndata.length > 0) {
                

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";

    
    function toString(uint256 value) internal pure returns (string memory) {
        
        

        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }

    
    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }

    
    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}

abstract contract ERC165 is IERC165 {
    
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}

contract ERC721 is Context, ERC165, IERC721, IERC721Metadata {
    using Address for address;
    using Strings for uint256;

    
    string private _name;

    
    string private _symbol;

    
    mapping(uint256 => address) private _owners;

    
    mapping(address => uint256) private _balances;

    
    mapping(uint256 => address) private _tokenApprovals;

    
    mapping(address => mapping(address => bool)) private _operatorApprovals;

    
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    
    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
        return
            interfaceId == type(IERC721).interfaceId ||
            interfaceId == type(IERC721Metadata).interfaceId ||
            super.supportsInterface(interfaceId);
    }

    
    function balanceOf(address owner) public view virtual override returns (uint256) {
        require(owner != address(0), "ERC721: balance query for the zero address");
        return _balances[owner];
    }

    
    function ownerOf(uint256 tokenId) public view virtual override returns (address) {
        address owner = _owners[tokenId];
        require(owner != address(0), "ERC721: owner query for nonexistent token");
        return owner;
    }

    
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    
    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
        require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token");

        string memory baseURI = _baseURI();
        return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : "";
    }

    
    function _baseURI() internal view virtual returns (string memory) {
        return "";
    }

    
    function approve(address to, uint256 tokenId) public virtual override {
        address owner = ERC721.ownerOf(tokenId);
        require(to != owner, "ERC721: approval to current owner");

        require(
            _msgSender() == owner || isApprovedForAll(owner, _msgSender()),
            "ERC721: approve caller is not owner nor approved for all"
        );

        _approve(to, tokenId);
    }

    
    function getApproved(uint256 tokenId) public view virtual override returns (address) {
        require(_exists(tokenId), "ERC721: approved query for nonexistent token");

        return _tokenApprovals[tokenId];
    }

    
    function setApprovalForAll(address operator, bool approved) public virtual override {
        require(operator != _msgSender(), "ERC721: approve to caller");

        _operatorApprovals[_msgSender()][operator] = approved;
        emit ApprovalForAll(_msgSender(), operator, approved);
    }

    
    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {
        return _operatorApprovals[owner][operator];
    }

    
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual override {
        
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");

        _transfer(from, to, tokenId);
    }

    
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual override {
        safeTransferFrom(from, to, tokenId, "");
    }

    
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) public virtual override {
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");
        _safeTransfer(from, to, tokenId, _data);
    }

    
    function _safeTransfer(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) internal virtual {
        _transfer(from, to, tokenId);
        require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer");
    }

    
    function _exists(uint256 tokenId) internal view virtual returns (bool) {
        return _owners[tokenId] != address(0);
    }

    
    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {
        require(_exists(tokenId), "ERC721: operator query for nonexistent token");
        address owner = ERC721.ownerOf(tokenId);
        return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender));
    }

    
    function _safeMint(address to, uint256 tokenId) internal virtual {
        _safeMint(to, tokenId, "");
    }

    
    function _safeMint(
        address to,
        uint256 tokenId,
        bytes memory _data
    ) internal virtual {
        _mint(to, tokenId);
        require(
            _checkOnERC721Received(address(0), to, tokenId, _data),
            "ERC721: transfer to non ERC721Receiver implementer"
        );
    }

    
    function _mint(address to, uint256 tokenId) internal virtual {
        require(to != address(0), "ERC721: mint to the zero address");
        require(!_exists(tokenId), "ERC721: token already minted");

        _beforeTokenTransfer(address(0), to, tokenId);

        _balances[to] += 1;
        _owners[tokenId] = to;

        emit Transfer(address(0), to, tokenId);
    }

    
    function _burn(uint256 tokenId) internal virtual {
        address owner = ERC721.ownerOf(tokenId);

        _beforeTokenTransfer(owner, address(0), tokenId);

        
        _approve(address(0), tokenId);

        _balances[owner] -= 1;
        delete _owners[tokenId];

        emit Transfer(owner, address(0), tokenId);
    }

    
    function _transfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual {
        require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own");
        require(to != address(0), "ERC721: transfer to the zero address");

        _beforeTokenTransfer(from, to, tokenId);

        
        _approve(address(0), tokenId);

        _balances[from] -= 1;
        _balances[to] += 1;
        _owners[tokenId] = to;

        emit Transfer(from, to, tokenId);
    }

    
    function _approve(address to, uint256 tokenId) internal virtual {
        _tokenApprovals[tokenId] = to;
        emit Approval(ERC721.ownerOf(tokenId), to, tokenId);
    }

    
    function _checkOnERC721Received(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) private returns (bool) {
        if (to.isContract()) {
            try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) {
                return retval == IERC721Receiver(to).onERC721Received.selector;
            } catch (bytes memory reason) {
                if (reason.length == 0) {
                    revert("ERC721: transfer to non ERC721Receiver implementer");
                } else {
                    assembly {
                        revert(add(32, reason), mload(reason))
                    }
                }
            }
        } else {
            return true;
        }
    }

    
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual {}
}

abstract contract ReentrancyGuard {
    
    
    
    
    

    
    
    
    
    
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    
    modifier nonReentrant() {
        
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        
        _status = _ENTERED;

        _;

        
        
        _status = _NOT_ENTERED;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    
    constructor() {
        _setOwner(_msgSender());
    }

    
    function owner() public view virtual returns (address) {
        return _owner;
    }

    
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    
    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

contract FloydComicsCollection is Ownable, ERC721 {

  string public baseURI = "https://floydnft.com/comics-nft/";
  uint public totalSupply;
  bool public isMintingOpen = true;

  constructor() ERC721("Floyd Mayweather - Comics Collection", "FMWCC") {}

  function _baseURI() internal view override returns (string memory) {
    return baseURI;
  }

  function setBaseURI(string memory newURI) external onlyOwner {
    baseURI = newURI;
  }

  function batchMint(address[] calldata destinations, uint expectedFinalSupply) onlyOwner external {

    uint supply = totalSupply;
    uint batchSize = destinations.length;

    require(isMintingOpen, "Minting has been closed");
    require(supply + batchSize == expectedFinalSupply, "Supply check failed");

    for (uint i = 0; i < batchSize; i++) {
      _safeMint(destinations[i], supply++);
    }

    totalSupply = supply;
  }

  function closeMinting() onlyOwner external {
    isMintingOpen = false;
  }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"destinations","type":"address[]"},{"internalType":"uint256","name":"expectedFinalSupply","type":"uint256"}],"name":"batchMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"closeMinting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isMintingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60c0604052602060808190527f68747470733a2f2f666c6f79646e66742e636f6d2f636f6d6963732d6e66742f60a090815262000040916007919062000121565b506009805460ff191660011790553480156200005b57600080fd5b506040518060600160405280602481526020016200263d60249139604080518082019091526005815264464d57434360d81b60208201526200009d33620000d1565b8151620000b290600190602085019062000121565b508051620000c890600290602084019062000121565b50505062000204565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280546200012f90620001c7565b90600052602060002090601f0160209004810192826200015357600085556200019e565b82601f106200016e57805160ff19168380011785556200019e565b828001600101855582156200019e579182015b828111156200019e57825182559160200191906001019062000181565b50620001ac929150620001b0565b5090565b5b80821115620001ac5760008155600101620001b1565b600181811c90821680620001dc57607f821691505b60208210811415620001fe57634e487b7160e01b600052602260045260246000fd5b50919050565b61242980620002146000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c806370a08231116100d857806395d89b411161008c578063c87b56dd11610066578063c87b56dd1461030b578063e985e9c51461031e578063f2fde38b1461036757600080fd5b806395d89b41146102dd578063a22cb465146102e5578063b88d4fde146102f857600080fd5b806383b74baa116100bd57806383b74baa146102a457806387491c60146102b75780638da5cb5b146102bf57600080fd5b806370a0823114610289578063715018a61461029c57600080fd5b80631a2069101161013a57806355f804b31161011457806355f804b31461025b5780636352211e1461026e5780636c0360eb1461028157600080fd5b80631a2069101461022857806323b872dd1461023557806342842e0e1461024857600080fd5b8063081812fc1161016b578063081812fc146101c4578063095ea7b3146101fc57806318160ddd1461021157600080fd5b806301ffc9a71461018757806306fdde03146101af575b600080fd5b61019a6101953660046120bd565b61037a565b60405190151581526020015b60405180910390f35b6101b761045f565b6040516101a69190612215565b6101d76101d236600461213b565b6104f1565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a6565b61020f61020a36600461201e565b6105d0565b005b61021a60085481565b6040519081526020016101a6565b60095461019a9060ff1681565b61020f610243366004611f30565b61075d565b61020f610256366004611f30565b6107fe565b61020f6102693660046120f5565b610819565b6101d761027c36600461213b565b6108b1565b6101b7610963565b61021a610297366004611ee4565b6109f1565b61020f610abf565b61020f6102b2366004612047565b610b4c565b61020f610d39565b60005473ffffffffffffffffffffffffffffffffffffffff166101d7565b6101b7610de4565b61020f6102f3366004611fe4565b610df3565b61020f610306366004611f6b565b610f0a565b6101b761031936600461213b565b610fb2565b61019a61032c366004611efe565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260066020908152604080832093909416825291909152205460ff1690565b61020f610375366004611ee4565b6110c2565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000148061040d57507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061045957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606001805461046e90612297565b80601f016020809104026020016040519081016040528092919081815260200182805461049a90612297565b80156104e75780601f106104bc576101008083540402835291602001916104e7565b820191906000526020600020905b8154815290600101906020018083116104ca57829003601f168201915b5050505050905090565b60008181526003602052604081205473ffffffffffffffffffffffffffffffffffffffff166105a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060009081526005602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60006105db826108b1565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610699576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f7200000000000000000000000000000000000000000000000000000000000000606482015260840161059e565b3373ffffffffffffffffffffffffffffffffffffffff821614806106c257506106c2813361032c565b61074e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606482015260840161059e565b61075883836111f2565b505050565b6107673382611292565b6107f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f766564000000000000000000000000000000606482015260840161059e565b610758838383611402565b61075883838360405180602001604052806000815250610f0a565b60005473ffffffffffffffffffffffffffffffffffffffff16331461089a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161059e565b80516108ad906007906020840190611d8e565b5050565b60008181526003602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610459576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e0000000000000000000000000000000000000000000000606482015260840161059e565b6007805461097090612297565b80601f016020809104026020016040519081016040528092919081815260200182805461099c90612297565b80156109e95780601f106109be576101008083540402835291602001916109e9565b820191906000526020600020905b8154815290600101906020018083116109cc57829003601f168201915b505050505081565b600073ffffffffffffffffffffffffffffffffffffffff8216610a96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f206164647265737300000000000000000000000000000000000000000000606482015260840161059e565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b60005473ffffffffffffffffffffffffffffffffffffffff163314610b40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161059e565b610b4a6000611669565b565b60005473ffffffffffffffffffffffffffffffffffffffff163314610bcd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161059e565b600854600954839060ff16610c3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4d696e74696e6720686173206265656e20636c6f736564000000000000000000604482015260640161059e565b82610c498284612228565b14610cb0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f537570706c7920636865636b206661696c656400000000000000000000000000604482015260640161059e565b60005b81811015610d2f57610d1d868683818110610cf7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002016020810190610d0c9190611ee4565b84610d16816122eb565b95506116de565b80610d27816122eb565b915050610cb3565b5050600855505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610dba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161059e565b600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60606002805461046e90612297565b73ffffffffffffffffffffffffffffffffffffffff8216331415610e73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161059e565b33600081815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610f143383611292565b610fa0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f766564000000000000000000000000000000606482015260840161059e565b610fac848484846116f8565b50505050565b60008181526003602052604090205460609073ffffffffffffffffffffffffffffffffffffffff16611066576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000606482015260840161059e565b600061107061179b565b9050600081511161109057604051806020016040528060008152506110bb565b8061109a846117aa565b6040516020016110ab92919061219d565b6040516020818303038152906040525b9392505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611143576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161059e565b73ffffffffffffffffffffffffffffffffffffffff81166111e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161059e565b6111ef81611669565b50565b600081815260056020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416908117909155819061124c826108b1565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008181526003602052604081205473ffffffffffffffffffffffffffffffffffffffff16611343576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e0000000000000000000000000000000000000000606482015260840161059e565b600061134e836108b1565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806113bd57508373ffffffffffffffffffffffffffffffffffffffff166113a5846104f1565b73ffffffffffffffffffffffffffffffffffffffff16145b806113fa575073ffffffffffffffffffffffffffffffffffffffff80821660009081526006602090815260408083209388168352929052205460ff165b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff16611422826108b1565b73ffffffffffffffffffffffffffffffffffffffff16146114c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201527f73206e6f74206f776e0000000000000000000000000000000000000000000000606482015260840161059e565b73ffffffffffffffffffffffffffffffffffffffff8216611567576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161059e565b6115726000826111f2565b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604081208054600192906115a8908490612254565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604081208054600192906115e3908490612228565b909155505060008181526003602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6108ad82826040518060200160405280600081525061192a565b611703848484611402565b61170f848484846119cd565b610fac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840161059e565b60606007805461046e90612297565b6060816117ea57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561181457806117fe816122eb565b915061180d9050600a83612240565b91506117ee565b60008167ffffffffffffffff811115611856577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611880576020820181803683370190505b5090505b84156113fa57611895600183612254565b91506118a2600a86612324565b6118ad906030612228565b60f81b8183815181106118e9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611923600a86612240565b9450611884565b6119348383611bcc565b61194160008484846119cd565b610758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840161059e565b600073ffffffffffffffffffffffffffffffffffffffff84163b15611bc1576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290611a449033908990889088906004016121cc565b602060405180830381600087803b158015611a5e57600080fd5b505af1925050508015611aac575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611aa9918101906120d9565b60015b611b76573d808015611ada576040519150601f19603f3d011682016040523d82523d6000602084013e611adf565b606091505b508051611b6e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840161059e565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a02000000000000000000000000000000000000000000000000000000001490506113fa565b506001949350505050565b73ffffffffffffffffffffffffffffffffffffffff8216611c49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161059e565b60008181526003602052604090205473ffffffffffffffffffffffffffffffffffffffff1615611cd5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161059e565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600460205260408120805460019290611d0b908490612228565b909155505060008181526003602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b828054611d9a90612297565b90600052602060002090601f016020900481019282611dbc5760008555611e02565b82601f10611dd557805160ff1916838001178555611e02565b82800160010185558215611e02579182015b82811115611e02578251825591602001919060010190611de7565b50611e0e929150611e12565b5090565b5b80821115611e0e5760008155600101611e13565b600067ffffffffffffffff80841115611e4257611e42612396565b604051601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715611e8857611e88612396565b81604052809350858152868686011115611ea157600080fd5b858560208301376000602087830101525050509392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611edf57600080fd5b919050565b600060208284031215611ef5578081fd5b6110bb82611ebb565b60008060408385031215611f10578081fd5b611f1983611ebb565b9150611f2760208401611ebb565b90509250929050565b600080600060608486031215611f44578081fd5b611f4d84611ebb565b9250611f5b60208501611ebb565b9150604084013590509250925092565b60008060008060808587031215611f80578081fd5b611f8985611ebb565b9350611f9760208601611ebb565b925060408501359150606085013567ffffffffffffffff811115611fb9578182fd5b8501601f81018713611fc9578182fd5b611fd887823560208401611e27565b91505092959194509250565b60008060408385031215611ff6578182fd5b611fff83611ebb565b915060208301358015158114612013578182fd5b809150509250929050565b60008060408385031215612030578182fd5b61203983611ebb565b946020939093013593505050565b60008060006040848603121561205b578283fd5b833567ffffffffffffffff80821115612072578485fd5b818601915086601f830112612085578485fd5b813581811115612093578586fd5b8760208260051b85010111156120a7578586fd5b6020928301989097509590910135949350505050565b6000602082840312156120ce578081fd5b81356110bb816123c5565b6000602082840312156120ea578081fd5b81516110bb816123c5565b600060208284031215612106578081fd5b813567ffffffffffffffff81111561211c578182fd5b8201601f8101841361212c578182fd5b6113fa84823560208401611e27565b60006020828403121561214c578081fd5b5035919050565b6000815180845261216b81602086016020860161226b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600083516121af81846020880161226b565b8351908301906121c381836020880161226b565b01949350505050565b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152508360408301526080606083015261220b6080830184612153565b9695505050505050565b6020815260006110bb6020830184612153565b6000821982111561223b5761223b612338565b500190565b60008261224f5761224f612367565b500490565b60008282101561226657612266612338565b500390565b60005b8381101561228657818101518382015260200161226e565b83811115610fac5750506000910152565b600181811c908216806122ab57607f821691505b602082108114156122e5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561231d5761231d612338565b5060010190565b60008261233357612333612367565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffff00000000000000000000000000000000000000000000000000000000811681146111ef57600080fdfea264697066735822122080e505d241a569789e71e42088d838b4f34297880d0cd6a7c26d81206066b21464736f6c63430008040033466c6f7964204d617977656174686572202d20436f6d69637320436f6c6c656374696f6e

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101825760003560e01c806370a08231116100d857806395d89b411161008c578063c87b56dd11610066578063c87b56dd1461030b578063e985e9c51461031e578063f2fde38b1461036757600080fd5b806395d89b41146102dd578063a22cb465146102e5578063b88d4fde146102f857600080fd5b806383b74baa116100bd57806383b74baa146102a457806387491c60146102b75780638da5cb5b146102bf57600080fd5b806370a0823114610289578063715018a61461029c57600080fd5b80631a2069101161013a57806355f804b31161011457806355f804b31461025b5780636352211e1461026e5780636c0360eb1461028157600080fd5b80631a2069101461022857806323b872dd1461023557806342842e0e1461024857600080fd5b8063081812fc1161016b578063081812fc146101c4578063095ea7b3146101fc57806318160ddd1461021157600080fd5b806301ffc9a71461018757806306fdde03146101af575b600080fd5b61019a6101953660046120bd565b61037a565b60405190151581526020015b60405180910390f35b6101b761045f565b6040516101a69190612215565b6101d76101d236600461213b565b6104f1565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a6565b61020f61020a36600461201e565b6105d0565b005b61021a60085481565b6040519081526020016101a6565b60095461019a9060ff1681565b61020f610243366004611f30565b61075d565b61020f610256366004611f30565b6107fe565b61020f6102693660046120f5565b610819565b6101d761027c36600461213b565b6108b1565b6101b7610963565b61021a610297366004611ee4565b6109f1565b61020f610abf565b61020f6102b2366004612047565b610b4c565b61020f610d39565b60005473ffffffffffffffffffffffffffffffffffffffff166101d7565b6101b7610de4565b61020f6102f3366004611fe4565b610df3565b61020f610306366004611f6b565b610f0a565b6101b761031936600461213b565b610fb2565b61019a61032c366004611efe565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260066020908152604080832093909416825291909152205460ff1690565b61020f610375366004611ee4565b6110c2565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000148061040d57507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061045957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606001805461046e90612297565b80601f016020809104026020016040519081016040528092919081815260200182805461049a90612297565b80156104e75780601f106104bc576101008083540402835291602001916104e7565b820191906000526020600020905b8154815290600101906020018083116104ca57829003601f168201915b5050505050905090565b60008181526003602052604081205473ffffffffffffffffffffffffffffffffffffffff166105a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060009081526005602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60006105db826108b1565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610699576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f7200000000000000000000000000000000000000000000000000000000000000606482015260840161059e565b3373ffffffffffffffffffffffffffffffffffffffff821614806106c257506106c2813361032c565b61074e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606482015260840161059e565b61075883836111f2565b505050565b6107673382611292565b6107f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f766564000000000000000000000000000000606482015260840161059e565b610758838383611402565b61075883838360405180602001604052806000815250610f0a565b60005473ffffffffffffffffffffffffffffffffffffffff16331461089a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161059e565b80516108ad906007906020840190611d8e565b5050565b60008181526003602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610459576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e0000000000000000000000000000000000000000000000606482015260840161059e565b6007805461097090612297565b80601f016020809104026020016040519081016040528092919081815260200182805461099c90612297565b80156109e95780601f106109be576101008083540402835291602001916109e9565b820191906000526020600020905b8154815290600101906020018083116109cc57829003601f168201915b505050505081565b600073ffffffffffffffffffffffffffffffffffffffff8216610a96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f206164647265737300000000000000000000000000000000000000000000606482015260840161059e565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b60005473ffffffffffffffffffffffffffffffffffffffff163314610b40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161059e565b610b4a6000611669565b565b60005473ffffffffffffffffffffffffffffffffffffffff163314610bcd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161059e565b600854600954839060ff16610c3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4d696e74696e6720686173206265656e20636c6f736564000000000000000000604482015260640161059e565b82610c498284612228565b14610cb0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f537570706c7920636865636b206661696c656400000000000000000000000000604482015260640161059e565b60005b81811015610d2f57610d1d868683818110610cf7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002016020810190610d0c9190611ee4565b84610d16816122eb565b95506116de565b80610d27816122eb565b915050610cb3565b5050600855505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610dba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161059e565b600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60606002805461046e90612297565b73ffffffffffffffffffffffffffffffffffffffff8216331415610e73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161059e565b33600081815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610f143383611292565b610fa0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f766564000000000000000000000000000000606482015260840161059e565b610fac848484846116f8565b50505050565b60008181526003602052604090205460609073ffffffffffffffffffffffffffffffffffffffff16611066576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000606482015260840161059e565b600061107061179b565b9050600081511161109057604051806020016040528060008152506110bb565b8061109a846117aa565b6040516020016110ab92919061219d565b6040516020818303038152906040525b9392505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611143576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161059e565b73ffffffffffffffffffffffffffffffffffffffff81166111e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161059e565b6111ef81611669565b50565b600081815260056020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416908117909155819061124c826108b1565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008181526003602052604081205473ffffffffffffffffffffffffffffffffffffffff16611343576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e0000000000000000000000000000000000000000606482015260840161059e565b600061134e836108b1565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806113bd57508373ffffffffffffffffffffffffffffffffffffffff166113a5846104f1565b73ffffffffffffffffffffffffffffffffffffffff16145b806113fa575073ffffffffffffffffffffffffffffffffffffffff80821660009081526006602090815260408083209388168352929052205460ff165b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff16611422826108b1565b73ffffffffffffffffffffffffffffffffffffffff16146114c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201527f73206e6f74206f776e0000000000000000000000000000000000000000000000606482015260840161059e565b73ffffffffffffffffffffffffffffffffffffffff8216611567576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161059e565b6115726000826111f2565b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604081208054600192906115a8908490612254565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604081208054600192906115e3908490612228565b909155505060008181526003602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6108ad82826040518060200160405280600081525061192a565b611703848484611402565b61170f848484846119cd565b610fac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840161059e565b60606007805461046e90612297565b6060816117ea57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561181457806117fe816122eb565b915061180d9050600a83612240565b91506117ee565b60008167ffffffffffffffff811115611856577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611880576020820181803683370190505b5090505b84156113fa57611895600183612254565b91506118a2600a86612324565b6118ad906030612228565b60f81b8183815181106118e9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611923600a86612240565b9450611884565b6119348383611bcc565b61194160008484846119cd565b610758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840161059e565b600073ffffffffffffffffffffffffffffffffffffffff84163b15611bc1576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290611a449033908990889088906004016121cc565b602060405180830381600087803b158015611a5e57600080fd5b505af1925050508015611aac575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611aa9918101906120d9565b60015b611b76573d808015611ada576040519150601f19603f3d011682016040523d82523d6000602084013e611adf565b606091505b508051611b6e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840161059e565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a02000000000000000000000000000000000000000000000000000000001490506113fa565b506001949350505050565b73ffffffffffffffffffffffffffffffffffffffff8216611c49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161059e565b60008181526003602052604090205473ffffffffffffffffffffffffffffffffffffffff1615611cd5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161059e565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600460205260408120805460019290611d0b908490612228565b909155505060008181526003602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b828054611d9a90612297565b90600052602060002090601f016020900481019282611dbc5760008555611e02565b82601f10611dd557805160ff1916838001178555611e02565b82800160010185558215611e02579182015b82811115611e02578251825591602001919060010190611de7565b50611e0e929150611e12565b5090565b5b80821115611e0e5760008155600101611e13565b600067ffffffffffffffff80841115611e4257611e42612396565b604051601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715611e8857611e88612396565b81604052809350858152868686011115611ea157600080fd5b858560208301376000602087830101525050509392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611edf57600080fd5b919050565b600060208284031215611ef5578081fd5b6110bb82611ebb565b60008060408385031215611f10578081fd5b611f1983611ebb565b9150611f2760208401611ebb565b90509250929050565b600080600060608486031215611f44578081fd5b611f4d84611ebb565b9250611f5b60208501611ebb565b9150604084013590509250925092565b60008060008060808587031215611f80578081fd5b611f8985611ebb565b9350611f9760208601611ebb565b925060408501359150606085013567ffffffffffffffff811115611fb9578182fd5b8501601f81018713611fc9578182fd5b611fd887823560208401611e27565b91505092959194509250565b60008060408385031215611ff6578182fd5b611fff83611ebb565b915060208301358015158114612013578182fd5b809150509250929050565b60008060408385031215612030578182fd5b61203983611ebb565b946020939093013593505050565b60008060006040848603121561205b578283fd5b833567ffffffffffffffff80821115612072578485fd5b818601915086601f830112612085578485fd5b813581811115612093578586fd5b8760208260051b85010111156120a7578586fd5b6020928301989097509590910135949350505050565b6000602082840312156120ce578081fd5b81356110bb816123c5565b6000602082840312156120ea578081fd5b81516110bb816123c5565b600060208284031215612106578081fd5b813567ffffffffffffffff81111561211c578182fd5b8201601f8101841361212c578182fd5b6113fa84823560208401611e27565b60006020828403121561214c578081fd5b5035919050565b6000815180845261216b81602086016020860161226b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600083516121af81846020880161226b565b8351908301906121c381836020880161226b565b01949350505050565b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152508360408301526080606083015261220b6080830184612153565b9695505050505050565b6020815260006110bb6020830184612153565b6000821982111561223b5761223b612338565b500190565b60008261224f5761224f612367565b500490565b60008282101561226657612266612338565b500390565b60005b8381101561228657818101518382015260200161226e565b83811115610fac5750506000910152565b600181811c908216806122ab57607f821691505b602082108114156122e5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561231d5761231d612338565b5060010190565b60008261233357612333612367565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffff00000000000000000000000000000000000000000000000000000000811681146111ef57600080fdfea264697066735822122080e505d241a569789e71e42088d838b4f34297880d0cd6a7c26d81206066b21464736f6c63430008040033

Deployed Bytecode Sourcemap

16835:994:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8127:305;;;;;;:::i;:::-;;:::i;:::-;;;6727:14:1;;6720:22;6702:41;;6690:2;6675:18;8127:305:0;;;;;;;;8921:100;;;:::i;:::-;;;;;;;:::i;10034:221::-;;;;;;:::i;:::-;;:::i;:::-;;;5991:42:1;5979:55;;;5961:74;;5949:2;5934:18;10034:221:0;5916:125:1;9609:411:0;;;;;;:::i;:::-;;:::i;:::-;;16955:23;;;;;;;;;14206:25:1;;;14194:2;14179:18;16955:23:0;14161:76:1;16983:32:0;;;;;;;;;10756:296;;;;;;:::i;:::-;;:::i;11066:185::-;;;;;;:::i;:::-;;:::i;17200:90::-;;;;;;:::i;:::-;;:::i;8668:239::-;;;;;;:::i;:::-;;:::i;16892:58::-;;;:::i;8446:208::-;;;;;;:::i;:::-;;:::i;16347:94::-;;;:::i;17296:445::-;;;;;;:::i;:::-;;:::i;17747:77::-;;;:::i;16112:87::-;16158:7;16185:6;;;16112:87;;9035:104;;;:::i;10269:295::-;;;;;;:::i;:::-;;:::i;11265:328::-;;;;;;:::i;:::-;;:::i;9153:334::-;;;;;;:::i;:::-;;:::i;10578:164::-;;;;;;:::i;:::-;10699:25;;;;10675:4;10699:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;10578:164;16455:192;;;;;;:::i;:::-;;:::i;8127:305::-;8229:4;8266:40;;;8281:25;8266:40;;:105;;-1:-1:-1;8323:48:0;;;8338:33;8323:48;8266:105;:158;;;-1:-1:-1;7475:25:0;7460:40;;;;8388:36;8246:178;8127:305;-1:-1:-1;;8127:305:0:o;8921:100::-;8975:13;9008:5;9001:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8921:100;:::o;10034:221::-;10110:7;12025:16;;;:7;:16;;;;;;:30;:16;10130:73;;;;;;;11494:2:1;10130:73:0;;;11476:21:1;11533:2;11513:18;;;11506:30;11572:34;11552:18;;;11545:62;11643:14;11623:18;;;11616:42;11675:19;;10130:73:0;;;;;;;;;-1:-1:-1;10223:24:0;;;;:15;:24;;;;;;;;;10034:221::o;9609:411::-;9690:13;9706:23;9721:7;9706:14;:23::i;:::-;9690:39;;9754:5;9748:11;;:2;:11;;;;9740:57;;;;;;;13442:2:1;9740:57:0;;;13424:21:1;13481:2;13461:18;;;13454:30;13520:34;13500:18;;;13493:62;13591:3;13571:18;;;13564:31;13612:19;;9740:57:0;13414:223:1;9740:57:0;5692:10;9832:21;;;;;:62;;-1:-1:-1;9857:37:0;9874:5;5692:10;10578:164;:::i;9857:37::-;9810:168;;;;;;;9887:2:1;9810:168:0;;;9869:21:1;9926:2;9906:18;;;9899:30;9965:34;9945:18;;;9938:62;10036:26;10016:18;;;10009:54;10080:19;;9810:168:0;9859:246:1;9810:168:0;9991:21;10000:2;10004:7;9991:8;:21::i;:::-;9609:411;;;:::o;10756:296::-;10908:41;5692:10;10941:7;10908:18;:41::i;:::-;10900:103;;;;;;;13844:2:1;10900:103:0;;;13826:21:1;13883:2;13863:18;;;13856:30;13922:34;13902:18;;;13895:62;13993:19;13973:18;;;13966:47;14030:19;;10900:103:0;13816:239:1;10900:103:0;11016:28;11026:4;11032:2;11036:7;11016:9;:28::i;11066:185::-;11204:39;11221:4;11227:2;11231:7;11204:39;;;;;;;;;;;;:16;:39::i;17200:90::-;16158:7;16185:6;16253:23;16185:6;5692:10;16253:23;16245:68;;;;;;;11907:2:1;16245:68:0;;;11889:21:1;;;11926:18;;;11919:30;11985:34;11965:18;;;11958:62;12037:18;;16245:68:0;11879:182:1;16245:68:0;17268:16;;::::1;::::0;:7:::1;::::0;:16:::1;::::0;::::1;::::0;::::1;:::i;:::-;;17200:90:::0;:::o;8668:239::-;8740:7;8776:16;;;:7;:16;;;;;;;;8811:19;8803:73;;;;;;;10723:2:1;8803:73:0;;;10705:21:1;10762:2;10742:18;;;10735:30;10801:34;10781:18;;;10774:62;10872:11;10852:18;;;10845:39;10901:19;;8803:73:0;10695:231:1;16892:58:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8446:208::-;8518:7;8546:19;;;8538:74;;;;;;;10312:2:1;8538:74:0;;;10294:21:1;10351:2;10331:18;;;10324:30;10390:34;10370:18;;;10363:62;10461:12;10441:18;;;10434:40;10491:19;;8538:74:0;10284:232:1;8538:74:0;-1:-1:-1;8630:16:0;;;;;;:9;:16;;;;;;;8446:208::o;16347:94::-;16158:7;16185:6;16253:23;16185:6;5692:10;16253:23;16245:68;;;;;;;11907:2:1;16245:68:0;;;11889:21:1;;;11926:18;;;11919:30;11985:34;11965:18;;;11958:62;12037:18;;16245:68:0;11879:182:1;16245:68:0;16412:21:::1;16430:1;16412:9;:21::i;:::-;16347:94::o:0;17296:445::-;16158:7;16185:6;16253:23;16185:6;5692:10;16253:23;16245:68;;;;;;;11907:2:1;16245:68:0;;;11889:21:1;;;11926:18;;;11919:30;11985:34;11965:18;;;11958:62;12037:18;;16245:68:0;11879:182:1;16245:68:0;17416:11:::1;::::0;17487:13:::1;::::0;17451:12;;17487:13:::1;;17479:49;;;::::0;::::1;::::0;;8768:2:1;17479:49:0::1;::::0;::::1;8750:21:1::0;8807:2;8787:18;;;8780:30;8846:25;8826:18;;;8819:53;8889:18;;17479:49:0::1;8740:173:1::0;17479:49:0::1;17565:19:::0;17543:18:::1;17552:9:::0;17543:6;:18:::1;:::i;:::-;:41;17535:73;;;::::0;::::1;::::0;;13094:2:1;17535:73:0::1;::::0;::::1;13076:21:1::0;13133:2;13113:18;;;13106:30;13172:21;13152:18;;;13145:49;13211:18;;17535:73:0::1;13066:169:1::0;17535:73:0::1;17622:6;17617:90;17638:9;17634:1;:13;17617:90;;;17663:36;17673:12;;17686:1;17673:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17690:8:::0;::::1;::::0;::::1;:::i;:::-;;;17663:9;:36::i;:::-;17649:3:::0;::::1;::::0;::::1;:::i;:::-;;;;17617:90;;;-1:-1:-1::0;;17715:11:0::1;:20:::0;-1:-1:-1;;;17296:445:0:o;17747:77::-;16158:7;16185:6;16253:23;16185:6;5692:10;16253:23;16245:68;;;;;;;11907:2:1;16245:68:0;;;11889:21:1;;;11926:18;;;11919:30;11985:34;11965:18;;;11958:62;12037:18;;16245:68:0;11879:182:1;16245:68:0;17797:13:::1;:21:::0;;;::::1;::::0;;17747:77::o;9035:104::-;9091:13;9124:7;9117:14;;;;;:::i;10269:295::-;10372:24;;;5692:10;10372:24;;10364:62;;;;;;;9120:2:1;10364:62:0;;;9102:21:1;9159:2;9139:18;;;9132:30;9198:27;9178:18;;;9171:55;9243:18;;10364:62:0;9092:175:1;10364:62:0;5692:10;10439:32;;;;:18;:32;;;;;;;;;:42;;;;;;;;;;;;:53;;;;;;;;;;;;;10508:48;;6702:41:1;;;10439:42:0;;5692:10;10508:48;;6675:18:1;10508:48:0;;;;;;;10269:295;;:::o;11265:328::-;11440:41;5692:10;11473:7;11440:18;:41::i;:::-;11432:103;;;;;;;13844:2:1;11432:103:0;;;13826:21:1;13883:2;13863:18;;;13856:30;13922:34;13902:18;;;13895:62;13993:19;13973:18;;;13966:47;14030:19;;11432:103:0;13816:239:1;11432:103:0;11546:39;11560:4;11566:2;11570:7;11579:5;11546:13;:39::i;:::-;11265:328;;;;:::o;9153:334::-;12001:4;12025:16;;;:7;:16;;;;;;9226:13;;12025:30;:16;9252:76;;;;;;;12678:2:1;9252:76:0;;;12660:21:1;12717:2;12697:18;;;12690:30;12756:34;12736:18;;;12729:62;12827:17;12807:18;;;12800:45;12862:19;;9252:76:0;12650:237:1;9252:76:0;9341:21;9365:10;:8;:10::i;:::-;9341:34;;9417:1;9399:7;9393:21;:25;:86;;;;;;;;;;;;;;;;;9445:7;9454:18;:7;:16;:18::i;:::-;9428:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;9393:86;9386:93;9153:334;-1:-1:-1;;;9153:334:0:o;16455:192::-;16158:7;16185:6;16253:23;16185:6;5692:10;16253:23;16245:68;;;;;;;11907:2:1;16245:68:0;;;11889:21:1;;;11926:18;;;11919:30;11985:34;11965:18;;;11958:62;12037:18;;16245:68:0;11879:182:1;16245:68:0;16544:22:::1;::::0;::::1;16536:73;;;::::0;::::1;::::0;;7599:2:1;16536:73:0::1;::::0;::::1;7581:21:1::0;7638:2;7618:18;;;7611:30;7677:34;7657:18;;;7650:62;7748:8;7728:18;;;7721:36;7774:19;;16536:73:0::1;7571:228:1::0;16536:73:0::1;16620:19;16630:8;16620:9;:19::i;:::-;16455:192:::0;:::o;14200:174::-;14275:24;;;;:15;:24;;;;;:29;;;;;;;;;;;;;:24;;14329:23;14275:24;14329:14;:23::i;:::-;14320:46;;;;;;;;;;;;14200:174;;:::o;12077:348::-;12170:4;12025:16;;;:7;:16;;;;;;:30;:16;12187:73;;;;;;;9474:2:1;12187:73:0;;;9456:21:1;9513:2;9493:18;;;9486:30;9552:34;9532:18;;;9525:62;9623:14;9603:18;;;9596:42;9655:19;;12187:73:0;9446:234:1;12187:73:0;12271:13;12287:23;12302:7;12287:14;:23::i;:::-;12271:39;;12340:5;12329:16;;:7;:16;;;:51;;;;12373:7;12349:31;;:20;12361:7;12349:11;:20::i;:::-;:31;;;12329:51;:87;;;-1:-1:-1;10699:25:0;;;;10675:4;10699:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;12384:32;12321:96;12077:348;-1:-1:-1;;;;12077:348:0:o;13650:536::-;13809:4;13782:31;;:23;13797:7;13782:14;:23::i;:::-;:31;;;13774:85;;;;;;;12268:2:1;13774:85:0;;;12250:21:1;12307:2;12287:18;;;12280:30;12346:34;12326:18;;;12319:62;12417:11;12397:18;;;12390:39;12446:19;;13774:85:0;12240:231:1;13774:85:0;13878:16;;;13870:65;;;;;;;8363:2:1;13870:65:0;;;8345:21:1;8402:2;8382:18;;;8375:30;8441:34;8421:18;;;8414:62;8512:6;8492:18;;;8485:34;8536:19;;13870:65:0;8335:226:1;13870:65:0;14010:29;14027:1;14031:7;14010:8;:29::i;:::-;14052:15;;;;;;;:9;:15;;;;;:20;;14071:1;;14052:15;:20;;14071:1;;14052:20;:::i;:::-;;;;-1:-1:-1;;14083:13:0;;;;;;;:9;:13;;;;;:18;;14100:1;;14083:13;:18;;14100:1;;14083:18;:::i;:::-;;;;-1:-1:-1;;14112:16:0;;;;:7;:16;;;;;;:21;;;;;;;;;;;;;;14151:27;;14112:16;;14151:27;;;;;;;13650:536;;;:::o;16655:173::-;16711:16;16730:6;;;16747:17;;;;;;;;;;16780:40;;16730:6;;;;;;;16780:40;;16711:16;16780:40;16655:173;;:::o;12439:110::-;12515:26;12525:2;12529:7;12515:26;;;;;;;;;;;;:9;:26::i;11607:315::-;11764:28;11774:4;11780:2;11784:7;11764:9;:28::i;:::-;11811:48;11834:4;11840:2;11844:7;11853:5;11811:22;:48::i;:::-;11803:111;;;;;;;7180:2:1;11803:111:0;;;7162:21:1;7219:2;7199:18;;;7192:30;7258:34;7238:18;;;7231:62;7329:20;7309:18;;;7302:48;7367:19;;11803:111:0;7152:240:1;17100:94:0;17152:13;17181:7;17174:14;;;;;:::i;5922:554::-;5978:13;6030:10;6026:53;;-1:-1:-1;;6057:10:0;;;;;;;;;;;;;;;;;;5922:554::o;6026:53::-;6104:5;6089:12;6145:78;6152:9;;6145:78;;6178:8;;;;:::i;:::-;;-1:-1:-1;6201:10:0;;-1:-1:-1;6209:2:0;6201:10;;:::i;:::-;;;6145:78;;;6233:19;6265:6;6255:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6255:17:0;;6233:39;;6283:154;6290:10;;6283:154;;6317:11;6327:1;6317:11;;:::i;:::-;;-1:-1:-1;6386:10:0;6394:2;6386:5;:10;:::i;:::-;6373:24;;:2;:24;:::i;:::-;6360:39;;6343:6;6350;6343:14;;;;;;;;;;;;;;;;;;;:56;;;;;;;;;;-1:-1:-1;6414:11:0;6423:2;6414:11;;:::i;:::-;;;6283:154;;12563:321;12693:18;12699:2;12703:7;12693:5;:18::i;:::-;12744:54;12775:1;12779:2;12783:7;12792:5;12744:22;:54::i;:::-;12722:154;;;;;;;7180:2:1;12722:154:0;;;7162:21:1;7219:2;7199:18;;;7192:30;7258:34;7238:18;;;7231:62;7329:20;7309:18;;;7302:48;7367:19;;12722:154:0;7152:240:1;14388:803:0;14543:4;14564:13;;;2106:20;2154:8;14560:624;;14600:72;;;;;:36;;;;;;:72;;5692:10;;14651:4;;14657:7;;14666:5;;14600:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14600:72:0;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;14596:533;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14846:13:0;;14842:272;;14889:60;;;;;7180:2:1;14889:60:0;;;7162:21:1;7219:2;7199:18;;;7192:30;7258:34;7238:18;;;7231:62;7329:20;7309:18;;;7302:48;7367:19;;14889:60:0;7152:240:1;14842:272:0;15064:6;15058:13;15049:6;15045:2;15041:15;15034:38;14596:533;14723:55;;14733:45;14723:55;;-1:-1:-1;14716:62:0;;14560:624;-1:-1:-1;15168:4:0;14388:803;;;;;;:::o;12898:382::-;12978:16;;;12970:61;;;;;;;11133:2:1;12970:61:0;;;11115:21:1;;;11152:18;;;11145:30;11211:34;11191:18;;;11184:62;11263:18;;12970:61:0;11105:182:1;12970:61:0;12001:4;12025:16;;;:7;:16;;;;;;:30;:16;:30;13042:58;;;;;;;8006:2:1;13042:58:0;;;7988:21:1;8045:2;8025:18;;;8018:30;8084;8064:18;;;8057:58;8132:18;;13042:58:0;7978:178:1;13042:58:0;13171:13;;;;;;;:9;:13;;;;;:18;;13188:1;;13171:13;:18;;13188:1;;13171:18;:::i;:::-;;;;-1:-1:-1;;13200:16:0;;;;:7;:16;;;;;;:21;;;;;;;;;;;;;13239:33;;13200:16;;;13239:33;;13200:16;;13239:33;12898:382;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:690:1;78:5;108:18;149:2;141:6;138:14;135:2;;;155:18;;:::i;:::-;289:2;283:9;355:2;343:15;;194:66;339:24;;;365:2;335:33;331:42;319:55;;;389:18;;;409:22;;;386:46;383:2;;;435:18;;:::i;:::-;475:10;471:2;464:22;504:6;495:15;;534:6;526;519:22;574:3;565:6;560:3;556:16;553:25;550:2;;;591:1;588;581:12;550:2;641:6;636:3;629:4;621:6;617:17;604:44;696:1;689:4;680:6;672;668:19;664:30;657:41;;;;88:616;;;;;:::o;709:196::-;777:20;;837:42;826:54;;816:65;;806:2;;895:1;892;885:12;806:2;758:147;;;:::o;910:196::-;969:6;1022:2;1010:9;1001:7;997:23;993:32;990:2;;;1043:6;1035;1028:22;990:2;1071:29;1090:9;1071:29;:::i;1111:270::-;1179:6;1187;1240:2;1228:9;1219:7;1215:23;1211:32;1208:2;;;1261:6;1253;1246:22;1208:2;1289:29;1308:9;1289:29;:::i;:::-;1279:39;;1337:38;1371:2;1360:9;1356:18;1337:38;:::i;:::-;1327:48;;1198:183;;;;;:::o;1386:338::-;1463:6;1471;1479;1532:2;1520:9;1511:7;1507:23;1503:32;1500:2;;;1553:6;1545;1538:22;1500:2;1581:29;1600:9;1581:29;:::i;:::-;1571:39;;1629:38;1663:2;1652:9;1648:18;1629:38;:::i;:::-;1619:48;;1714:2;1703:9;1699:18;1686:32;1676:42;;1490:234;;;;;:::o;1729:696::-;1824:6;1832;1840;1848;1901:3;1889:9;1880:7;1876:23;1872:33;1869:2;;;1923:6;1915;1908:22;1869:2;1951:29;1970:9;1951:29;:::i;:::-;1941:39;;1999:38;2033:2;2022:9;2018:18;1999:38;:::i;:::-;1989:48;;2084:2;2073:9;2069:18;2056:32;2046:42;;2139:2;2128:9;2124:18;2111:32;2166:18;2158:6;2155:30;2152:2;;;2203:6;2195;2188:22;2152:2;2231:22;;2284:4;2276:13;;2272:27;-1:-1:-1;2262:2:1;;2318:6;2310;2303:22;2262:2;2346:73;2411:7;2406:2;2393:16;2388:2;2384;2380:11;2346:73;:::i;:::-;2336:83;;;1859:566;;;;;;;:::o;2430:367::-;2495:6;2503;2556:2;2544:9;2535:7;2531:23;2527:32;2524:2;;;2577:6;2569;2562:22;2524:2;2605:29;2624:9;2605:29;:::i;:::-;2595:39;;2684:2;2673:9;2669:18;2656:32;2731:5;2724:13;2717:21;2710:5;2707:32;2697:2;;2758:6;2750;2743:22;2697:2;2786:5;2776:15;;;2514:283;;;;;:::o;2802:264::-;2870:6;2878;2931:2;2919:9;2910:7;2906:23;2902:32;2899:2;;;2952:6;2944;2937:22;2899:2;2980:29;2999:9;2980:29;:::i;:::-;2970:39;3056:2;3041:18;;;;3028:32;;-1:-1:-1;;;2889:177:1:o;3071:739::-;3166:6;3174;3182;3235:2;3223:9;3214:7;3210:23;3206:32;3203:2;;;3256:6;3248;3241:22;3203:2;3301:9;3288:23;3330:18;3371:2;3363:6;3360:14;3357:2;;;3392:6;3384;3377:22;3357:2;3435:6;3424:9;3420:22;3410:32;;3480:7;3473:4;3469:2;3465:13;3461:27;3451:2;;3507:6;3499;3492:22;3451:2;3552;3539:16;3578:2;3570:6;3567:14;3564:2;;;3599:6;3591;3584:22;3564:2;3659:7;3652:4;3642:6;3639:1;3635:14;3631:2;3627:23;3623:34;3620:47;3617:2;;;3685:6;3677;3670:22;3617:2;3721:4;3713:13;;;;3745:6;;-1:-1:-1;3783:20:1;;;;3770:34;;3193:617;-1:-1:-1;;;;3193:617:1:o;3815:255::-;3873:6;3926:2;3914:9;3905:7;3901:23;3897:32;3894:2;;;3947:6;3939;3932:22;3894:2;3991:9;3978:23;4010:30;4034:5;4010:30;:::i;4075:259::-;4144:6;4197:2;4185:9;4176:7;4172:23;4168:32;4165:2;;;4218:6;4210;4203:22;4165:2;4255:9;4249:16;4274:30;4298:5;4274:30;:::i;4339:480::-;4408:6;4461:2;4449:9;4440:7;4436:23;4432:32;4429:2;;;4482:6;4474;4467:22;4429:2;4527:9;4514:23;4560:18;4552:6;4549:30;4546:2;;;4597:6;4589;4582:22;4546:2;4625:22;;4678:4;4670:13;;4666:27;-1:-1:-1;4656:2:1;;4712:6;4704;4697:22;4656:2;4740:73;4805:7;4800:2;4787:16;4782:2;4778;4774:11;4740:73;:::i;4824:190::-;4883:6;4936:2;4924:9;4915:7;4911:23;4907:32;4904:2;;;4957:6;4949;4942:22;4904:2;-1:-1:-1;4985:23:1;;4894:120;-1:-1:-1;4894:120:1:o;5019:316::-;5060:3;5098:5;5092:12;5125:6;5120:3;5113:19;5141:63;5197:6;5190:4;5185:3;5181:14;5174:4;5167:5;5163:16;5141:63;:::i;:::-;5249:2;5237:15;5254:66;5233:88;5224:98;;;;5324:4;5220:109;;5068:267;-1:-1:-1;;5068:267:1:o;5340:470::-;5519:3;5557:6;5551:13;5573:53;5619:6;5614:3;5607:4;5599:6;5595:17;5573:53;:::i;:::-;5689:13;;5648:16;;;;5711:57;5689:13;5648:16;5745:4;5733:17;;5711:57;:::i;:::-;5784:20;;5527:283;-1:-1:-1;;;;5527:283:1:o;6046:511::-;6240:4;6269:42;6350:2;6342:6;6338:15;6327:9;6320:34;6402:2;6394:6;6390:15;6385:2;6374:9;6370:18;6363:43;;6442:6;6437:2;6426:9;6422:18;6415:34;6485:3;6480:2;6469:9;6465:18;6458:31;6506:45;6546:3;6535:9;6531:19;6523:6;6506:45;:::i;:::-;6498:53;6249:308;-1:-1:-1;;;;;;6249:308:1:o;6754:219::-;6903:2;6892:9;6885:21;6866:4;6923:44;6963:2;6952:9;6948:18;6940:6;6923:44;:::i;14242:128::-;14282:3;14313:1;14309:6;14306:1;14303:13;14300:2;;;14319:18;;:::i;:::-;-1:-1:-1;14355:9:1;;14290:80::o;14375:120::-;14415:1;14441;14431:2;;14446:18;;:::i;:::-;-1:-1:-1;14480:9:1;;14421:74::o;14500:125::-;14540:4;14568:1;14565;14562:8;14559:2;;;14573:18;;:::i;:::-;-1:-1:-1;14610:9:1;;14549:76::o;14630:258::-;14702:1;14712:113;14726:6;14723:1;14720:13;14712:113;;;14802:11;;;14796:18;14783:11;;;14776:39;14748:2;14741:10;14712:113;;;14843:6;14840:1;14837:13;14834:2;;;-1:-1:-1;;14878:1:1;14860:16;;14853:27;14683:205::o;14893:437::-;14972:1;14968:12;;;;15015;;;15036:2;;15090:4;15082:6;15078:17;15068:27;;15036:2;15143;15135:6;15132:14;15112:18;15109:38;15106:2;;;15180:77;15177:1;15170:88;15281:4;15278:1;15271:15;15309:4;15306:1;15299:15;15106:2;;14948:382;;;:::o;15335:195::-;15374:3;15405:66;15398:5;15395:77;15392:2;;;15475:18;;:::i;:::-;-1:-1:-1;15522:1:1;15511:13;;15382:148::o;15535:112::-;15567:1;15593;15583:2;;15598:18;;:::i;:::-;-1:-1:-1;15632:9:1;;15573:74::o;15652:184::-;15704:77;15701:1;15694:88;15801:4;15798:1;15791:15;15825:4;15822:1;15815:15;15841:184;15893:77;15890:1;15883:88;15990:4;15987:1;15980:15;16014:4;16011:1;16004:15;16030:184;16082:77;16079:1;16072:88;16179:4;16176:1;16169:15;16203:4;16200:1;16193:15;16219:177;16304:66;16297:5;16293:78;16286:5;16283:89;16273:2;;16386:1;16383;16376:12

Swarm Source

ipfs://80e505d241a569789e71e42088d838b4f34297880d0cd6a7c26d81206066b214
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.