Token LexiconBaseSet

 

Overview ERC-1155

Total Supply:
0 LEXICON

Holders:
234 addresses

Transfers:
-

Loading
[ Download CSV Export  ] 
Loading
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
LexiconProxyBase

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-02-17
*/

// ▄█          ▄████████ ▀████    ▐████▀  ▄█   ▄████████  ▄██████▄  ███▄▄▄▄   
//███         ███    ███   ███▌   ████▀  ███  ███    ███ ███    ███ ███▀▀▀██▄ 
//███         ███    █▀     ███  ▐███    ███▌ ███    █▀  ███    ███ ███   ███ 
//███        ▄███▄▄▄        ▀███▄███▀    ███▌ ███        ███    ███ ███   ███ 
//███       ▀▀███▀▀▀        ████▀██▄     ███▌ ███        ███    ███ ███   ███ 
//███         ███    █▄    ▐███  ▀███    ███  ███    █▄  ███    ███ ███   ███ 
//███▌    ▄   ███    ███  ▄███     ███▄  ███  ███    ███ ███    ███ ███   ███ 
//█████▄▄██   ██████████ ████       ███▄ █▀   ████████▀   ▀██████▀   ▀█   █▀  
//▀     
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.11;

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

interface IERC165 {

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

interface IERC1155Receiver is IERC165 {

    function onERC1155Received(
        address operator,
        address from,
        uint256 id,
        uint256 value,
        bytes calldata data
    ) external returns (bytes4);

    function onERC1155BatchReceived(
        address operator,
        address from,
        uint256[] calldata ids,
        uint256[] calldata values,
        bytes calldata data
    ) external returns (bytes4);
}

interface IERC1155 is IERC165 {

    event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);

    event TransferBatch(
        address indexed operator,
        address indexed from,
        address indexed to,
        uint256[] ids,
        uint256[] values
    );

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

    event URI(string value, uint256 indexed id);

    function balanceOf(address account, uint256 id) external view returns (uint256);

    function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids)
        external
        view
        returns (uint256[] memory);

    function setApprovalForAll(address operator, bool approved) external;

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

    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes calldata data
    ) external;

    function safeBatchTransferFrom(
        address from,
        address to,
        uint256[] calldata ids,
        uint256[] calldata amounts,
        bytes calldata data
    ) external;
}

interface IERC1155MetadataURI is IERC1155 {

    function uri(uint256 id) external view returns (string memory);
}

interface IControllable {

    event ControllerAdded(
        address indexed contractAddress,
        address indexed controllerAddress
    );

    event ControllerRemoved(
        address indexed contractAddress,
        address indexed controllerAddress
    );

    function addController(address controller) external;

    function isController(address controller) external view returns (bool);

    function relinquishControl() external;
}

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

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

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_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 {
        _transferOwnership(address(0));
    }

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

abstract contract Controllable is Ownable {
    mapping(address => bool) internal _controllers;

    modifier onlyController() {
        require(
            _controllers[msg.sender] == true || address(this) == msg.sender,
            "Controllable: caller is not a controller"
        );
        _;
    }

    function addController(address _controller)
        external
        onlyOwner
    {
        _controllers[_controller] = true;
    }

    function delController(address _controller)
        external
        onlyOwner
    {
        delete _controllers[_controller];
    }

    function disableController(address _controller)
        external
        onlyOwner
    {
        _controllers[_controller] = false;
    }

    function isController(address _address)
        external
        view
        returns (bool allowed)
    {
        allowed = _controllers[_address];
    }

    function relinquishControl() external onlyController {
        delete _controllers[msg.sender];
    }
}


abstract contract ERC165 is IERC165 {

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

contract ERC1155 is Context, ERC165, IERC1155, IERC1155MetadataURI {
    using Address for address;

    mapping(uint256 => mapping(address => uint256)) private _balances;

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

    string private _uri;

    constructor(string memory uri_) {
        _setURI(uri_);
    }

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

    function uri(uint256) public view virtual override returns (string memory) {
        return _uri;
    }

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

    function balanceOfBatch(address[] memory accounts, uint256[] memory ids)
        public
        view
        virtual
        override
        returns (uint256[] memory)
    {
        require(accounts.length == ids.length, "ERC1155: accounts and ids length mismatch");

        uint256[] memory batchBalances = new uint256[](accounts.length);

        for (uint256 i = 0; i < accounts.length; ++i) {
            batchBalances[i] = balanceOf(accounts[i], ids[i]);
        }

        return batchBalances;
    }

    function setApprovalForAll(address operator, bool approved) public virtual override {
        _setApprovalForAll(_msgSender(), operator, approved);
    }

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

    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) public virtual override {
        require(
            from == _msgSender() || isApprovedForAll(from, _msgSender()),
            "ERC1155: caller is not owner nor approved"
        );
        _safeTransferFrom(from, to, id, amount, data);
    }

    function safeBatchTransferFrom(
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) public virtual override {
        require(
            from == _msgSender() || isApprovedForAll(from, _msgSender()),
            "ERC1155: transfer caller is not owner nor approved"
        );
        _safeBatchTransferFrom(from, to, ids, amounts, data);
    }

    function _safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) internal virtual {
        require(to != address(0), "ERC1155: transfer to the zero address");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, from, to, _asSingletonArray(id), _asSingletonArray(amount), data);

        uint256 fromBalance = _balances[id][from];
        require(fromBalance >= amount, "ERC1155: insufficient balance for transfer");
        unchecked {
            _balances[id][from] = fromBalance - amount;
        }
        _balances[id][to] += amount;

        emit TransferSingle(operator, from, to, id, amount);

        _doSafeTransferAcceptanceCheck(operator, from, to, id, amount, data);
    }

    function _safeBatchTransferFrom(
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) internal virtual {
        require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");
        require(to != address(0), "ERC1155: transfer to the zero address");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, from, to, ids, amounts, data);

        for (uint256 i = 0; i < ids.length; ++i) {
            uint256 id = ids[i];
            uint256 amount = amounts[i];

            uint256 fromBalance = _balances[id][from];
            require(fromBalance >= amount, "ERC1155: insufficient balance for transfer");
            unchecked {
                _balances[id][from] = fromBalance - amount;
            }
            _balances[id][to] += amount;
        }

        emit TransferBatch(operator, from, to, ids, amounts);

        _doSafeBatchTransferAcceptanceCheck(operator, from, to, ids, amounts, data);
    }

    function _setURI(string memory newuri) internal virtual {
        _uri = newuri;
    }

    function _mint(
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) internal virtual {
        require(to != address(0), "ERC1155: mint to the zero address");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, address(0), to, _asSingletonArray(id), _asSingletonArray(amount), data);

        _balances[id][to] += amount;
        emit TransferSingle(operator, address(0), to, id, amount);

        _doSafeTransferAcceptanceCheck(operator, address(0), to, id, amount, data);
    }

    function _mintBatch(
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) internal virtual {
        require(to != address(0), "ERC1155: mint to the zero address");
        require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, address(0), to, ids, amounts, data);

        for (uint256 i = 0; i < ids.length; i++) {
            _balances[ids[i]][to] += amounts[i];
        }

        emit TransferBatch(operator, address(0), to, ids, amounts);

        _doSafeBatchTransferAcceptanceCheck(operator, address(0), to, ids, amounts, data);
    }

    function _burn(
        address from,
        uint256 id,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC1155: burn from the zero address");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, from, address(0), _asSingletonArray(id), _asSingletonArray(amount), "");

        uint256 fromBalance = _balances[id][from];
        require(fromBalance >= amount, "ERC1155: burn amount exceeds balance");
        unchecked {
            _balances[id][from] = fromBalance - amount;
        }

        emit TransferSingle(operator, from, address(0), id, amount);
    }


    function _burnBatch(
        address from,
        uint256[] memory ids,
        uint256[] memory amounts
    ) internal virtual {
        require(from != address(0), "ERC1155: burn from the zero address");
        require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, from, address(0), ids, amounts, "");

        for (uint256 i = 0; i < ids.length; i++) {
            uint256 id = ids[i];
            uint256 amount = amounts[i];

            uint256 fromBalance = _balances[id][from];
            require(fromBalance >= amount, "ERC1155: burn amount exceeds balance");
            unchecked {
                _balances[id][from] = fromBalance - amount;
            }
        }

        emit TransferBatch(operator, from, address(0), ids, amounts);
    }

    function _setApprovalForAll(
        address owner,
        address operator,
        bool approved
    ) internal virtual {
        require(owner != operator, "ERC1155: setting approval status for self");
        _operatorApprovals[owner][operator] = approved;
        emit ApprovalForAll(owner, operator, approved);
    }

    function _beforeTokenTransfer(
        address operator,
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) internal virtual {}

    function _doSafeTransferAcceptanceCheck(
        address operator,
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) private {
        if (to.isContract()) {
            try IERC1155Receiver(to).onERC1155Received(operator, from, id, amount, data) returns (bytes4 response) {
                if (response != IERC1155Receiver.onERC1155Received.selector) {
                    revert("ERC1155: ERC1155Receiver rejected tokens");
                }
            } catch Error(string memory reason) {
                revert(reason);
            } catch {
                revert("ERC1155: transfer to non ERC1155Receiver implementer");
            }
        }
    }

    function _doSafeBatchTransferAcceptanceCheck(
        address operator,
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) private {
        if (to.isContract()) {
            try IERC1155Receiver(to).onERC1155BatchReceived(operator, from, ids, amounts, data) returns (
                bytes4 response
            ) {
                if (response != IERC1155Receiver.onERC1155BatchReceived.selector) {
                    revert("ERC1155: ERC1155Receiver rejected tokens");
                }
            } catch Error(string memory reason) {
                revert(reason);
            } catch {
                revert("ERC1155: transfer to non ERC1155Receiver implementer");
            }
        }
    }

    function _asSingletonArray(uint256 element) private pure returns (uint256[] memory) {
        uint256[] memory array = new uint256[](1);
        array[0] = element;

        return array;
    }
}

abstract contract ERC1155Supply is ERC1155 {
    mapping(uint256 => uint256) private _totalSupply;

    function totalSupply(uint256 id) public view virtual returns (uint256) {
        return _totalSupply[id];
    }

    function exists(uint256 id) public view virtual returns (bool) {
        return ERC1155Supply.totalSupply(id) > 0;
    }

    function _beforeTokenTransfer(
        address operator,
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) internal virtual override {
        super._beforeTokenTransfer(operator, from, to, ids, amounts, data);

        if (from == address(0)) {
            for (uint256 i = 0; i < ids.length; ++i) {
                _totalSupply[ids[i]] += amounts[i];
            }
        }

        if (to == address(0)) {
            for (uint256 i = 0; i < ids.length; ++i) {
                uint256 id = ids[i];
                uint256 amount = amounts[i];
                uint256 supply = _totalSupply[id];
                require(supply >= amount, "ERC1155: burn amount exceeds totalSupply");
                unchecked {
                    _totalSupply[id] = supply - amount;
                }
            }
        }
    }
}

contract LexiconProxyBase is ERC1155Supply, Controllable {
    
  string public name;
  string public symbol;

  mapping(uint => string) public tokenURI;

  constructor() ERC1155("") {
    name = "LexiconBaseSet";
    symbol = "LEXICON";
  }

  function mint(address _to, uint _id, uint _amount) external onlyController {
    _mint(_to, _id, _amount, "");
  }

  function mintBatch(address _to, uint[] memory _ids, uint[] memory _amounts) external onlyController {
    _mintBatch(_to, _ids, _amounts, "");
  }

  function burn(uint _id, uint _amount) external onlyController {
    _burn(msg.sender, _id, _amount);
  }

  function burnBatch(uint[] memory _ids, uint[] memory _amounts) external onlyController {
    _burnBatch(msg.sender, _ids, _amounts);
  }

  function burnForMint(address _from, uint[] memory _burnIds, uint[] memory _burnAmounts, uint[] memory _mintIds, uint[] memory _mintAmounts) external onlyController {
    _burnBatch(_from, _burnIds, _burnAmounts);
    _mintBatch(_from, _mintIds, _mintAmounts, "");
  }

  function setURI(uint _id, string memory _uri) external onlyController {
    tokenURI[_id] = _uri;
    emit URI(_uri, _id);
  }

  function uri(uint _id) public override view returns (string memory) {
    return tokenURI[_id];
  }
}
//                                             &
//                                            &&                                  
//                                          &#B&                                
//                                       &BP5G&                                 
//                                     &G555G                                   
//                                   &G5Y55P&                                   
//                           &G     B5Y5555B                                    
//                          &YY    GYYY5555#                                    
//                          P?JG  BJYYY5555&                                    
//                          YJJJP#YJYYY5555#                                    
//                          YJJJJJJYYYY5555B         &                          
//                          G?JJJJJYYYY5555P         #P#                        
//                   B&      5JJJJJYYYY55555#         GYG                       
//                  #PG       GJJJJYYYY55555P&        &55P&                     
//                  GPPP&      &PYJJYY5555555G         G55P                     
//                 &GPP55B       &G5YYY5555555#        B555B                    
//                 &GPP555PB        #PYY555555G        B555P                    
//                  GPP55555PB&       #P555555P&       B55PP&                   
//                  #PP555555Y5G&       #55555P#       P555G                    
//                   BP5555555YYYPB&     &P555PB      #5555B                    
//                    #P5555555YYYJYP#     P55P#      P555G                     
//                     &G555555YYYYJJJ5#   &55G      GY55P                      
//                       &G5555YYYYJJJJJP   GB      GYYYG                       
//                         &BPYYYYYJJJJJ?5   &     GJY5#                        
//                            #GYYYJJJJJJ?G      &PJ5B                          
//                              &GYJJJJJJJY&    &PG#                            
//                                &GYJJJJJJ#     &&                               
//                                  &GJJJJJ#     &                              
//                                    #YJJJ#                                    
//                                     #JJY                                     
//                                      G?G                                     
//                                      BY                                      
//                                      &&                                      
//                                                                               
//

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"_controller","type":"address"}],"name":"addController","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_ids","type":"uint256[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"name":"burnBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256[]","name":"_burnIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_burnAmounts","type":"uint256[]"},{"internalType":"uint256[]","name":"_mintIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_mintAmounts","type":"uint256[]"}],"name":"burnForMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_controller","type":"address"}],"name":"delController","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_controller","type":"address"}],"name":"disableController","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"exists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"isController","outputs":[{"internalType":"bool","name":"allowed","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256[]","name":"_ids","type":"uint256[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"name":"mintBatch","outputs":[],"stateMutability":"nonpayable","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":[],"name":"relinquishControl","outputs":[],"stateMutability":"nonpayable","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":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","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":"uint256","name":"_id","type":"uint256"},{"internalType":"string","name":"_uri","type":"string"}],"name":"setURI","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":"","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]

60806040523480156200001157600080fd5b506040805160208101909152600081526200002c81620000a5565b506200003833620000be565b60408051808201909152600e8082526d13195e1a58dbdb90985cd954d95d60921b60209092019182526200006f9160069162000110565b50604080518082019091526007808252662622ac24a1a7a760c91b60209092019182526200009e918162000110565b50620001f3565b8051620000ba90600290602084019062000110565b5050565b600480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8280546200011e90620001b6565b90600052602060002090601f0160209004810192826200014257600085556200018d565b82601f106200015d57805160ff19168380011785556200018d565b828001600101855582156200018d579182015b828111156200018d57825182559160200191906001019062000170565b506200019b9291506200019f565b5090565b5b808211156200019b5760008155600101620001a0565b600181811c90821680620001cb57607f821691505b60208210811415620001ed57634e487b7160e01b600052602260045260246000fd5b50919050565b6125c080620002036000396000f3fe608060405234801561001057600080fd5b50600436106101a85760003560e01c80638da5cb5b116100f9578063c87b56dd11610097578063e985e9c511610071578063e985e9c5146103b2578063f242432a146103ee578063f2fde38b14610401578063f4fc35701461029b57600080fd5b8063c87b56dd14610384578063d81d0a1514610397578063e1c28bef146103aa57600080fd5b8063a7fc7a07116100d3578063a7fc7a0714610312578063b390c0ab14610325578063b429afeb14610338578063bd85b0391461036457600080fd5b80638da5cb5b146102dc57806395d89b41146102f7578063a22cb465146102ff57600080fd5b80634e1273f41161016657806366a87e121161014057806366a87e121461029b578063715018a6146102ae57806383ca4b6f146102b6578063862440e2146102c957600080fd5b80634e1273f4146102465780634f558e7914610266578063510f41041461028857600080fd5b8062fdd58e146101ad57806301ffc9a7146101d357806306fdde03146101f65780630e89341c1461020b578063156e29f61461021e5780632eb2c2d614610233575b600080fd5b6101c06101bb3660046119fb565b610414565b6040519081526020015b60405180910390f35b6101e66101e1366004611a3b565b6104ab565b60405190151581526020016101ca565b6101fe6104fd565b6040516101ca9190611aac565b6101fe610219366004611abf565b61058b565b61023161022c366004611ad8565b61062d565b005b610231610241366004611c61565b61068b565b610259610254366004611d0b565b610722565b6040516101ca9190611e11565b6101e6610274366004611abf565b600090815260036020526040902054151590565b610231610296366004611e24565b61084c565b6102316102a9366004611ed5565b6108b0565b6102316108fb565b6102316102c4366004611ef0565b610931565b6102316102d7366004611f3d565b61097e565b6004546040516001600160a01b0390911681526020016101ca565b6101fe610a18565b61023161030d366004611f8e565b610a25565b610231610320366004611ed5565b610a30565b610231610333366004611fca565b610a7e565b6101e6610346366004611ed5565b6001600160a01b031660009081526005602052604090205460ff1690565b6101c0610372366004611abf565b60009081526003602052604090205490565b6101fe610392366004611abf565b610ac7565b6102316103a5366004611fec565b610ae0565b610231610b39565b6101e66103c0366004612060565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b6102316103fc366004612093565b610b90565b61023161040f366004611ed5565b610c17565b60006001600160a01b0383166104855760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b60648201526084015b60405180910390fd5b506000908152602081815260408083206001600160a01b03949094168352929052205490565b60006001600160e01b03198216636cdb3d1360e11b14806104dc57506001600160e01b031982166303a24d0760e21b145b806104f757506301ffc9a760e01b6001600160e01b03198316145b92915050565b6006805461050a906120f8565b80601f0160208091040260200160405190810160405280929190818152602001828054610536906120f8565b80156105835780601f1061055857610100808354040283529160200191610583565b820191906000526020600020905b81548152906001019060200180831161056657829003601f168201915b505050505081565b60008181526008602052604090208054606091906105a8906120f8565b80601f01602080910402602001604051908101604052809291908181526020018280546105d4906120f8565b80156106215780601f106105f657610100808354040283529160200191610621565b820191906000526020600020905b81548152906001019060200180831161060457829003601f168201915b50505050509050919050565b3360009081526005602052604090205460ff1615156001148061064f57503033145b61066b5760405162461bcd60e51b815260040161047c90612133565b61068683838360405180602001604052806000815250610cb2565b505050565b6001600160a01b0385163314806106a757506106a785336103c0565b61070e5760405162461bcd60e51b815260206004820152603260248201527f455243313135353a207472616e736665722063616c6c6572206973206e6f74206044820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b606482015260840161047c565b61071b8585858585610d88565b5050505050565b606081518351146107875760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b606482015260840161047c565b6000835167ffffffffffffffff8111156107a3576107a3611b0b565b6040519080825280602002602001820160405280156107cc578160200160208202803683370190505b50905060005b8451811015610844576108178582815181106107f0576107f061217b565b602002602001015185838151811061080a5761080a61217b565b6020026020010151610414565b8282815181106108295761082961217b565b602090810291909101015261083d816121a7565b90506107d2565b509392505050565b3360009081526005602052604090205460ff1615156001148061086e57503033145b61088a5760405162461bcd60e51b815260040161047c90612133565b610895858585610f32565b61071b858383604051806020016040528060008152506110c0565b6004546001600160a01b031633146108da5760405162461bcd60e51b815260040161047c906121c2565b6001600160a01b03166000908152600560205260409020805460ff19169055565b6004546001600160a01b031633146109255760405162461bcd60e51b815260040161047c906121c2565b61092f600061121a565b565b3360009081526005602052604090205460ff1615156001148061095357503033145b61096f5760405162461bcd60e51b815260040161047c90612133565b61097a338383610f32565b5050565b3360009081526005602052604090205460ff161515600114806109a057503033145b6109bc5760405162461bcd60e51b815260040161047c90612133565b600082815260086020908152604090912082516109db92840190611946565b50817f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b82604051610a0c9190611aac565b60405180910390a25050565b6007805461050a906120f8565b61097a33838361126c565b6004546001600160a01b03163314610a5a5760405162461bcd60e51b815260040161047c906121c2565b6001600160a01b03166000908152600560205260409020805460ff19166001179055565b3360009081526005602052604090205460ff16151560011480610aa057503033145b610abc5760405162461bcd60e51b815260040161047c90612133565b61097a33838361134d565b6008602052600090815260409020805461050a906120f8565b3360009081526005602052604090205460ff16151560011480610b0257503033145b610b1e5760405162461bcd60e51b815260040161047c90612133565b610686838383604051806020016040528060008152506110c0565b3360009081526005602052604090205460ff16151560011480610b5b57503033145b610b775760405162461bcd60e51b815260040161047c90612133565b336000908152600560205260409020805460ff19169055565b6001600160a01b038516331480610bac5750610bac85336103c0565b610c0a5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b606482015260840161047c565b61071b858585858561144e565b6004546001600160a01b03163314610c415760405162461bcd60e51b815260040161047c906121c2565b6001600160a01b038116610ca65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161047c565b610caf8161121a565b50565b6001600160a01b038416610cd85760405162461bcd60e51b815260040161047c906121f7565b33610cf881600087610ce98861156b565b610cf28861156b565b876115b6565b6000848152602081815260408083206001600160a01b038916845290915281208054859290610d28908490612238565b909155505060408051858152602081018590526001600160a01b0380881692600092918516917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461071b8160008787878761172f565b8151835114610da95760405162461bcd60e51b815260040161047c90612250565b6001600160a01b038416610dcf5760405162461bcd60e51b815260040161047c90612298565b33610dde8187878787876115b6565b60005b8451811015610ec4576000858281518110610dfe57610dfe61217b565b602002602001015190506000858381518110610e1c57610e1c61217b565b602090810291909101810151600084815280835260408082206001600160a01b038e168352909352919091205490915081811015610e6c5760405162461bcd60e51b815260040161047c906122dd565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290610ea9908490612238565b9250508190555050505080610ebd906121a7565b9050610de1565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610f14929190612327565b60405180910390a4610f2a81878787878761188b565b505050505050565b6001600160a01b038316610f585760405162461bcd60e51b815260040161047c90612355565b8051825114610f795760405162461bcd60e51b815260040161047c90612250565b6000339050610f9c818560008686604051806020016040528060008152506115b6565b60005b8351811015611061576000848281518110610fbc57610fbc61217b565b602002602001015190506000848381518110610fda57610fda61217b565b602090810291909101810151600084815280835260408082206001600160a01b038c16835290935291909120549091508181101561102a5760405162461bcd60e51b815260040161047c90612398565b6000928352602083815260408085206001600160a01b038b1686529091529092209103905580611059816121a7565b915050610f9f565b5060006001600160a01b0316846001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb86866040516110b2929190612327565b60405180910390a450505050565b6001600160a01b0384166110e65760405162461bcd60e51b815260040161047c906121f7565b81518351146111075760405162461bcd60e51b815260040161047c90612250565b33611117816000878787876115b6565b60005b84518110156111b2578381815181106111355761113561217b565b60200260200101516000808784815181106111525761115261217b565b602002602001015181526020019081526020016000206000886001600160a01b03166001600160a01b03168152602001908152602001600020600082825461119a9190612238565b909155508190506111aa816121a7565b91505061111a565b50846001600160a01b031660006001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611203929190612327565b60405180910390a461071b8160008787878761188b565b600480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031614156112e05760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b606482015260840161047c565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383166113735760405162461bcd60e51b815260040161047c90612355565b336113a2818560006113848761156b565b61138d8761156b565b604051806020016040528060008152506115b6565b6000838152602081815260408083206001600160a01b0388168452909152902054828110156113e35760405162461bcd60e51b815260040161047c90612398565b6000848152602081815260408083206001600160a01b03898116808652918452828520888703905582518981529384018890529092908616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a45050505050565b6001600160a01b0384166114745760405162461bcd60e51b815260040161047c90612298565b33611484818787610ce98861156b565b6000848152602081815260408083206001600160a01b038a168452909152902054838110156114c55760405162461bcd60e51b815260040161047c906122dd565b6000858152602081815260408083206001600160a01b038b8116855292528083208785039055908816825281208054869290611502908490612238565b909155505060408051868152602081018690526001600160a01b03808916928a821692918616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461156282888888888861172f565b50505050505050565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106115a5576115a561217b565b602090810291909101015292915050565b6001600160a01b03851661163d5760005b835181101561163b578281815181106115e2576115e261217b565b6020026020010151600360008684815181106116005761160061217b565b6020026020010151815260200190815260200160002060008282546116259190612238565b909155506116349050816121a7565b90506115c7565b505b6001600160a01b038416610f2a5760005b835181101561156257600084828151811061166b5761166b61217b565b6020026020010151905060008483815181106116895761168961217b565b602002602001015190506000600360008481526020019081526020016000205490508181101561170c5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a206275726e20616d6f756e74206578636565647320746f74604482015267616c537570706c7960c01b606482015260840161047c565b60009283526003602052604090922091039055611728816121a7565b905061164e565b6001600160a01b0384163b15610f2a5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e619061177390899089908890889088906004016123dc565b6020604051808303816000875af19250505080156117ae575060408051601f3d908101601f191682019092526117ab91810190612421565b60015b61185b576117ba61243e565b806308c379a014156117f457506117cf61245a565b806117da57506117f6565b8060405162461bcd60e51b815260040161047c9190611aac565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e20455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b606482015260840161047c565b6001600160e01b0319811663f23a6e6160e01b146115625760405162461bcd60e51b815260040161047c906124e4565b6001600160a01b0384163b15610f2a5760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906118cf908990899088908890889060040161252c565b6020604051808303816000875af192505050801561190a575060408051601f3d908101601f1916820190925261190791810190612421565b60015b611916576117ba61243e565b6001600160e01b0319811663bc197c8160e01b146115625760405162461bcd60e51b815260040161047c906124e4565b828054611952906120f8565b90600052602060002090601f01602090048101928261197457600085556119ba565b82601f1061198d57805160ff19168380011785556119ba565b828001600101855582156119ba579182015b828111156119ba57825182559160200191906001019061199f565b506119c69291506119ca565b5090565b5b808211156119c657600081556001016119cb565b80356001600160a01b03811681146119f657600080fd5b919050565b60008060408385031215611a0e57600080fd5b611a17836119df565b946020939093013593505050565b6001600160e01b031981168114610caf57600080fd5b600060208284031215611a4d57600080fd5b8135611a5881611a25565b9392505050565b6000815180845260005b81811015611a8557602081850181015186830182015201611a69565b81811115611a97576000602083870101525b50601f01601f19169290920160200192915050565b602081526000611a586020830184611a5f565b600060208284031215611ad157600080fd5b5035919050565b600080600060608486031215611aed57600080fd5b611af6846119df565b95602085013595506040909401359392505050565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff81118282101715611b4757611b47611b0b565b6040525050565b600067ffffffffffffffff821115611b6857611b68611b0b565b5060051b60200190565b600082601f830112611b8357600080fd5b81356020611b9082611b4e565b604051611b9d8282611b21565b83815260059390931b8501820192828101915086841115611bbd57600080fd5b8286015b84811015611bd85780358352918301918301611bc1565b509695505050505050565b600067ffffffffffffffff831115611bfd57611bfd611b0b565b604051611c14601f8501601f191660200182611b21565b809150838152848484011115611c2957600080fd5b83836020830137600060208583010152509392505050565b600082601f830112611c5257600080fd5b611a5883833560208501611be3565b600080600080600060a08688031215611c7957600080fd5b611c82866119df565b9450611c90602087016119df565b9350604086013567ffffffffffffffff80821115611cad57600080fd5b611cb989838a01611b72565b94506060880135915080821115611ccf57600080fd5b611cdb89838a01611b72565b93506080880135915080821115611cf157600080fd5b50611cfe88828901611c41565b9150509295509295909350565b60008060408385031215611d1e57600080fd5b823567ffffffffffffffff80821115611d3657600080fd5b818501915085601f830112611d4a57600080fd5b81356020611d5782611b4e565b604051611d648282611b21565b83815260059390931b8501820192828101915089841115611d8457600080fd5b948201945b83861015611da957611d9a866119df565b82529482019490820190611d89565b96505086013592505080821115611dbf57600080fd5b50611dcc85828601611b72565b9150509250929050565b600081518084526020808501945080840160005b83811015611e0657815187529582019590820190600101611dea565b509495945050505050565b602081526000611a586020830184611dd6565b600080600080600060a08688031215611e3c57600080fd5b611e45866119df565b9450602086013567ffffffffffffffff80821115611e6257600080fd5b611e6e89838a01611b72565b95506040880135915080821115611e8457600080fd5b611e9089838a01611b72565b94506060880135915080821115611ea657600080fd5b611eb289838a01611b72565b93506080880135915080821115611ec857600080fd5b50611cfe88828901611b72565b600060208284031215611ee757600080fd5b611a58826119df565b60008060408385031215611f0357600080fd5b823567ffffffffffffffff80821115611f1b57600080fd5b611f2786838701611b72565b93506020850135915080821115611dbf57600080fd5b60008060408385031215611f5057600080fd5b82359150602083013567ffffffffffffffff811115611f6e57600080fd5b8301601f81018513611f7f57600080fd5b611dcc85823560208401611be3565b60008060408385031215611fa157600080fd5b611faa836119df565b915060208301358015158114611fbf57600080fd5b809150509250929050565b60008060408385031215611fdd57600080fd5b50508035926020909101359150565b60008060006060848603121561200157600080fd5b61200a846119df565b9250602084013567ffffffffffffffff8082111561202757600080fd5b61203387838801611b72565b9350604086013591508082111561204957600080fd5b5061205686828701611b72565b9150509250925092565b6000806040838503121561207357600080fd5b61207c836119df565b915061208a602084016119df565b90509250929050565b600080600080600060a086880312156120ab57600080fd5b6120b4866119df565b94506120c2602087016119df565b93506040860135925060608601359150608086013567ffffffffffffffff8111156120ec57600080fd5b611cfe88828901611c41565b600181811c9082168061210c57607f821691505b6020821081141561212d57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526028908201527f436f6e74726f6c6c61626c653a2063616c6c6572206973206e6f74206120636f604082015267373a3937b63632b960c11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156121bb576121bb612191565b5060010190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526021908201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736040820152607360f81b606082015260800190565b6000821982111561224b5761224b612191565b500190565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b60408152600061233a6040830185611dd6565b828103602084015261234c8185611dd6565b95945050505050565b60208082526023908201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526024908201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604082015263616e636560e01b606082015260800190565b6001600160a01b03868116825285166020820152604081018490526060810183905260a06080820181905260009061241690830184611a5f565b979650505050505050565b60006020828403121561243357600080fd5b8151611a5881611a25565b600060033d11156124575760046000803e5060005160e01c5b90565b600060443d10156124685790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561249857505050505090565b82850191508151818111156124b05750505050505090565b843d87010160208285010111156124ca5750505050505090565b6124d960208286010187611b21565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b6001600160a01b0386811682528516602082015260a06040820181905260009061255890830186611dd6565b828103606084015261256a8186611dd6565b9050828103608084015261257e8185611a5f565b9897505050505050505056fea2646970667358221220103588c9a260dccbf0c974f9ee87b610e9ab3df226e0e1dd0fa4fc988853ac6464736f6c634300080b0033

Deployed ByteCode Sourcemap

21108:1304:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10614:231;;;;;;:::i;:::-;;:::i;:::-;;;597:25:1;;;585:2;570:18;10614:231:0;;;;;;;;10183:310;;;;;;:::i;:::-;;:::i;:::-;;;1184:14:1;;1177:22;1159:41;;1147:2;1132:18;10183:310:0;1019:187:1;21176:18:0;;;:::i;:::-;;;;;;;:::i;22308:101::-;;;;;;:::i;:::-;;:::i;21365:116::-;;;;;;:::i;:::-;;:::i;:::-;;12133:442;;;;;;:::i;:::-;;:::i;10853:524::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;20040:122::-;;;;;;:::i;:::-;20097:4;20008:16;;;:12;:16;;;;;;-1:-1:-1;;;20040:122:0;21897:270;;;;;;:::i;:::-;;:::i;9037:137::-;;;;;;:::i;:::-;;:::i;8052:103::-;;;:::i;21753:138::-;;;;;;:::i;:::-;;:::i;22173:129::-;;;;;;:::i;:::-;;:::i;7829:87::-;7902:6;;7829:87;;-1:-1:-1;;;;;7902:6:0;;;9881:51:1;;9869:2;9854:18;7829:87:0;9735:203:1;21199:20:0;;;:::i;11385:155::-;;;;;;:::i;:::-;;:::i;8892:137::-;;;;;;:::i;:::-;;:::i;21641:106::-;;;;;;:::i;:::-;;:::i;9332:160::-;;;;;;:::i;:::-;-1:-1:-1;;;;;9462:22:0;9422:12;9462:22;;;:12;:22;;;;;;;;;9332:160;19919:113;;;;;;:::i;:::-;19981:7;20008:16;;;:12;:16;;;;;;;19919:113;21226:39;;;;;;:::i;:::-;;:::i;21487:148::-;;;;;;:::i;:::-;;:::i;9500:103::-;;;:::i;11548:168::-;;;;;;:::i;:::-;-1:-1:-1;;;;;11671:27:0;;;11647:4;11671:27;;;:18;:27;;;;;;;;:37;;;;;;;;;;;;;;;11548:168;11724:401;;;;;;:::i;:::-;;:::i;8163:201::-;;;;;;:::i;:::-;;:::i;10614:231::-;10700:7;-1:-1:-1;;;;;10728:21:0;;10720:77;;;;-1:-1:-1;;;10720:77:0;;12300:2:1;10720:77:0;;;12282:21:1;12339:2;12319:18;;;12312:30;12378:34;12358:18;;;12351:62;-1:-1:-1;;;12429:18:1;;;12422:41;12480:19;;10720:77:0;;;;;;;;;-1:-1:-1;10815:9:0;:13;;;;;;;;;;;-1:-1:-1;;;;;10815:22:0;;;;;;;;;;;;10614:231::o;10183:310::-;10285:4;-1:-1:-1;;;;;;10322:41:0;;-1:-1:-1;;;10322:41:0;;:110;;-1:-1:-1;;;;;;;10380:52:0;;-1:-1:-1;;;10380:52:0;10322:110;:163;;;-1:-1:-1;;;;;;;;;;9766:40:0;;;10449:36;10302:183;10183:310;-1:-1:-1;;10183:310:0:o;21176:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;22308:101::-;22390:13;;;;:8;:13;;;;;22383:20;;22361:13;;22390;22383:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22308:101;;;:::o;21365:116::-;8746:10;8733:24;;;;:12;:24;;;;;;;;:32;;:24;:32;;:63;;-1:-1:-1;8777:4:0;8786:10;8769:27;8733:63;8711:153;;;;-1:-1:-1;;;8711:153:0;;;;;;;:::i;:::-;21447:28:::1;21453:3;21458;21463:7;21447:28;;;;;;;;;;;::::0;:5:::1;:28::i;:::-;21365:116:::0;;;:::o;12133:442::-;-1:-1:-1;;;;;12366:20:0;;7455:10;12366:20;;:60;;-1:-1:-1;12390:36:0;12407:4;7455:10;11548:168;:::i;12390:36::-;12344:160;;;;-1:-1:-1;;;12344:160:0;;13506:2:1;12344:160:0;;;13488:21:1;13545:2;13525:18;;;13518:30;13584:34;13564:18;;;13557:62;-1:-1:-1;;;13635:18:1;;;13628:48;13693:19;;12344:160:0;13304:414:1;12344:160:0;12515:52;12538:4;12544:2;12548:3;12553:7;12562:4;12515:22;:52::i;:::-;12133:442;;;;;:::o;10853:524::-;11009:16;11070:3;:10;11051:8;:15;:29;11043:83;;;;-1:-1:-1;;;11043:83:0;;13925:2:1;11043:83:0;;;13907:21:1;13964:2;13944:18;;;13937:30;14003:34;13983:18;;;13976:62;-1:-1:-1;;;14054:18:1;;;14047:39;14103:19;;11043:83:0;13723:405:1;11043:83:0;11139:30;11186:8;:15;11172:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11172:30:0;;11139:63;;11220:9;11215:122;11239:8;:15;11235:1;:19;11215:122;;;11295:30;11305:8;11314:1;11305:11;;;;;;;;:::i;:::-;;;;;;;11318:3;11322:1;11318:6;;;;;;;;:::i;:::-;;;;;;;11295:9;:30::i;:::-;11276:13;11290:1;11276:16;;;;;;;;:::i;:::-;;;;;;;;;;:49;11256:3;;;:::i;:::-;;;11215:122;;;-1:-1:-1;11356:13:0;10853:524;-1:-1:-1;;;10853:524:0:o;21897:270::-;8746:10;8733:24;;;;:12;:24;;;;;;;;:32;;:24;:32;;:63;;-1:-1:-1;8777:4:0;8786:10;8769:27;8733:63;8711:153;;;;-1:-1:-1;;;8711:153:0;;;;;;;:::i;:::-;22068:41:::1;22079:5;22086:8;22096:12;22068:10;:41::i;:::-;22116:45;22127:5;22134:8;22144:12;22116:45;;;;;;;;;;;::::0;:10:::1;:45::i;9037:137::-:0;7902:6;;-1:-1:-1;;;;;7902:6:0;7455:10;7964:23;7956:68;;;;-1:-1:-1;;;7956:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9141:25:0::1;;::::0;;;:12:::1;:25;::::0;;;;9134:32;;-1:-1:-1;;9134:32:0::1;::::0;;9037:137::o;8052:103::-;7902:6;;-1:-1:-1;;;;;7902:6:0;7455:10;7964:23;7956:68;;;;-1:-1:-1;;;7956:68:0;;;;;;;:::i;:::-;8117:30:::1;8144:1;8117:18;:30::i;:::-;8052:103::o:0;21753:138::-;8746:10;8733:24;;;;:12;:24;;;;;;;;:32;;:24;:32;;:63;;-1:-1:-1;8777:4:0;8786:10;8769:27;8733:63;8711:153;;;;-1:-1:-1;;;8711:153:0;;;;;;;:::i;:::-;21847:38:::1;21858:10;21870:4;21876:8;21847:10;:38::i;:::-;21753:138:::0;;:::o;22173:129::-;8746:10;8733:24;;;;:12;:24;;;;;;;;:32;;:24;:32;;:63;;-1:-1:-1;8777:4:0;8786:10;8769:27;8733:63;8711:153;;;;-1:-1:-1;;;8711:153:0;;;;;;;:::i;:::-;22250:13:::1;::::0;;;:8:::1;:13;::::0;;;;;;;:20;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;22292:3;22282:14;22286:4;22282:14;;;;;;:::i;:::-;;;;;;;;22173:129:::0;;:::o;21199:20::-;;;;;;;:::i;11385:155::-;11480:52;7455:10;11513:8;11523;11480:18;:52::i;8892:137::-;7902:6;;-1:-1:-1;;;;;7902:6:0;7455:10;7964:23;7956:68;;;;-1:-1:-1;;;7956:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8989:25:0::1;;::::0;;;:12:::1;:25;::::0;;;;:32;;-1:-1:-1;;8989:32:0::1;9017:4;8989:32;::::0;;8892:137::o;21641:106::-;8746:10;8733:24;;;;:12;:24;;;;;;;;:32;;:24;:32;;:63;;-1:-1:-1;8777:4:0;8786:10;8769:27;8733:63;8711:153;;;;-1:-1:-1;;;8711:153:0;;;;;;;:::i;:::-;21710:31:::1;21716:10;21728:3;21733:7;21710:5;:31::i;21226:39::-:0;;;;;;;;;;;;;;;;:::i;21487:148::-;8746:10;8733:24;;;;:12;:24;;;;;;;;:32;;:24;:32;;:63;;-1:-1:-1;8777:4:0;8786:10;8769:27;8733:63;8711:153;;;;-1:-1:-1;;;8711:153:0;;;;;;;:::i;:::-;21594:35:::1;21605:3;21610:4;21616:8;21594:35;;;;;;;;;;;::::0;:10:::1;:35::i;9500:103::-:0;8746:10;8733:24;;;;:12;:24;;;;;;;;:32;;:24;:32;;:63;;-1:-1:-1;8777:4:0;8786:10;8769:27;8733:63;8711:153;;;;-1:-1:-1;;;8711:153:0;;;;;;;:::i;:::-;9584:10:::1;9571:24;::::0;;;:12:::1;:24;::::0;;;;9564:31;;-1:-1:-1;;9564:31:0::1;::::0;;9500:103::o;11724:401::-;-1:-1:-1;;;;;11932:20:0;;7455:10;11932:20;;:60;;-1:-1:-1;11956:36:0;11973:4;7455:10;11548:168;:::i;11956:36::-;11910:151;;;;-1:-1:-1;;;11910:151:0;;15100:2:1;11910:151:0;;;15082:21:1;15139:2;15119:18;;;15112:30;15178:34;15158:18;;;15151:62;-1:-1:-1;;;15229:18:1;;;15222:39;15278:19;;11910:151:0;14898:405:1;11910:151:0;12072:45;12090:4;12096:2;12100;12104:6;12112:4;12072:17;:45::i;8163:201::-;7902:6;;-1:-1:-1;;;;;7902:6:0;7455:10;7964:23;7956:68;;;;-1:-1:-1;;;7956:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8252:22:0;::::1;8244:73;;;::::0;-1:-1:-1;;;8244:73:0;;15510:2:1;8244:73:0::1;::::0;::::1;15492:21:1::0;15549:2;15529:18;;;15522:30;15588:34;15568:18;;;15561:62;-1:-1:-1;;;15639:18:1;;;15632:36;15685:19;;8244:73:0::1;15308:402:1::0;8244:73:0::1;8328:28;8347:8;8328:18;:28::i;:::-;8163:201:::0;:::o;14589:569::-;-1:-1:-1;;;;;14742:16:0;;14734:62;;;;-1:-1:-1;;;14734:62:0;;;;;;;:::i;:::-;7455:10;14853:102;7455:10;14809:16;14896:2;14900:21;14918:2;14900:17;:21::i;:::-;14923:25;14941:6;14923:17;:25::i;:::-;14950:4;14853:20;:102::i;:::-;14968:9;:13;;;;;;;;;;;-1:-1:-1;;;;;14968:17:0;;;;;;;;;:27;;14989:6;;14968:9;:27;;14989:6;;14968:27;:::i;:::-;;;;-1:-1:-1;;15011:52:0;;;16424:25:1;;;16480:2;16465:18;;16458:34;;;-1:-1:-1;;;;;15011:52:0;;;;15044:1;;15011:52;;;;;;16397:18:1;15011:52:0;;;;;;;15076:74;15107:8;15125:1;15129:2;15133;15137:6;15145:4;15076:30;:74::i;13411:1074::-;13638:7;:14;13624:3;:10;:28;13616:81;;;;-1:-1:-1;;;13616:81:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13716:16:0;;13708:66;;;;-1:-1:-1;;;13708:66:0;;;;;;;:::i;:::-;7455:10;13831:60;7455:10;13862:4;13868:2;13872:3;13877:7;13886:4;13831:20;:60::i;:::-;13909:9;13904:421;13928:3;:10;13924:1;:14;13904:421;;;13960:10;13973:3;13977:1;13973:6;;;;;;;;:::i;:::-;;;;;;;13960:19;;13994:14;14011:7;14019:1;14011:10;;;;;;;;:::i;:::-;;;;;;;;;;;;14038:19;14060:13;;;;;;;;;;-1:-1:-1;;;;;14060:19:0;;;;;;;;;;;;14011:10;;-1:-1:-1;14102:21:0;;;;14094:76;;;;-1:-1:-1;;;14094:76:0;;;;;;;:::i;:::-;14214:9;:13;;;;;;;;;;;-1:-1:-1;;;;;14214:19:0;;;;;;;;;;14236:20;;;14214:42;;14286:17;;;;;;;:27;;14236:20;;14214:9;14286:27;;14236:20;;14286:27;:::i;:::-;;;;;;;;13945:380;;;13940:3;;;;:::i;:::-;;;13904:421;;;;14372:2;-1:-1:-1;;;;;14342:47:0;14366:4;-1:-1:-1;;;;;14342:47:0;14356:8;-1:-1:-1;;;;;14342:47:0;;14376:3;14381:7;14342:47;;;;;;;:::i;:::-;;;;;;;;14402:75;14438:8;14448:4;14454:2;14458:3;14463:7;14472:4;14402:35;:75::i;:::-;13605:880;13411:1074;;;;;:::o;16567:891::-;-1:-1:-1;;;;;16719:18:0;;16711:66;;;;-1:-1:-1;;;16711:66:0;;;;;;;:::i;:::-;16810:7;:14;16796:3;:10;:28;16788:81;;;;-1:-1:-1;;;16788:81:0;;;;;;;:::i;:::-;16882:16;7455:10;16882:31;;16926:66;16947:8;16957:4;16971:1;16975:3;16980:7;16926:66;;;;;;;;;;;;:20;:66::i;:::-;17010:9;17005:373;17029:3;:10;17025:1;:14;17005:373;;;17061:10;17074:3;17078:1;17074:6;;;;;;;;:::i;:::-;;;;;;;17061:19;;17095:14;17112:7;17120:1;17112:10;;;;;;;;:::i;:::-;;;;;;;;;;;;17139:19;17161:13;;;;;;;;;;-1:-1:-1;;;;;17161:19:0;;;;;;;;;;;;17112:10;;-1:-1:-1;17203:21:0;;;;17195:70;;;;-1:-1:-1;;;17195:70:0;;;;;;;:::i;:::-;17309:9;:13;;;;;;;;;;;-1:-1:-1;;;;;17309:19:0;;;;;;;;;;17331:20;;17309:42;;17041:3;;;;:::i;:::-;;;;17005:373;;;;17433:1;-1:-1:-1;;;;;17395:55:0;17419:4;-1:-1:-1;;;;;17395:55:0;17409:8;-1:-1:-1;;;;;17395:55:0;;17437:3;17442:7;17395:55;;;;;;;:::i;:::-;;;;;;;;16700:758;16567:891;;;:::o;15166:735::-;-1:-1:-1;;;;;15344:16:0;;15336:62;;;;-1:-1:-1;;;15336:62:0;;;;;;;:::i;:::-;15431:7;:14;15417:3;:10;:28;15409:81;;;;-1:-1:-1;;;15409:81:0;;;;;;;:::i;:::-;7455:10;15547:66;7455:10;15503:16;15590:2;15594:3;15599:7;15608:4;15547:20;:66::i;:::-;15631:9;15626:103;15650:3;:10;15646:1;:14;15626:103;;;15707:7;15715:1;15707:10;;;;;;;;:::i;:::-;;;;;;;15682:9;:17;15692:3;15696:1;15692:6;;;;;;;;:::i;:::-;;;;;;;15682:17;;;;;;;;;;;:21;15700:2;-1:-1:-1;;;;;15682:21:0;-1:-1:-1;;;;;15682:21:0;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;-1:-1:-1;15662:3:0;;-1:-1:-1;15662:3:0;;;:::i;:::-;;;;15626:103;;;;15782:2;-1:-1:-1;;;;;15746:53:0;15778:1;-1:-1:-1;;;;;15746:53:0;15760:8;-1:-1:-1;;;;;15746:53:0;;15786:3;15791:7;15746:53;;;;;;;:::i;:::-;;;;;;;;15812:81;15848:8;15866:1;15870:2;15874:3;15879:7;15888:4;15812:35;:81::i;8372:191::-;8465:6;;;-1:-1:-1;;;;;8482:17:0;;;-1:-1:-1;;;;;;8482:17:0;;;;;;;8515:40;;8465:6;;;8482:17;8465:6;;8515:40;;8446:16;;8515:40;8435:128;8372:191;:::o;17466:331::-;17621:8;-1:-1:-1;;;;;17612:17:0;:5;-1:-1:-1;;;;;17612:17:0;;;17604:71;;;;-1:-1:-1;;;17604:71:0;;19210:2:1;17604:71:0;;;19192:21:1;19249:2;19229:18;;;19222:30;19288:34;19268:18;;;19261:62;-1:-1:-1;;;19339:18:1;;;19332:39;19388:19;;17604:71:0;19008:405:1;17604:71:0;-1:-1:-1;;;;;17686:25:0;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;17686:46:0;;;;;;;;;;17748:41;;1159::1;;;17748::0;;1132:18:1;17748:41:0;;;;;;;17466:331;;;:::o;15909:648::-;-1:-1:-1;;;;;16036:18:0;;16028:66;;;;-1:-1:-1;;;16028:66:0;;;;;;;:::i;:::-;7455:10;16151:102;7455:10;16182:4;16107:16;16200:21;16218:2;16200:17;:21::i;:::-;16223:25;16241:6;16223:17;:25::i;:::-;16151:102;;;;;;;;;;;;:20;:102::i;:::-;16266:19;16288:13;;;;;;;;;;;-1:-1:-1;;;;;16288:19:0;;;;;;;;;;16326:21;;;;16318:70;;;;-1:-1:-1;;;16318:70:0;;;;;;;:::i;:::-;16424:9;:13;;;;;;;;;;;-1:-1:-1;;;;;16424:19:0;;;;;;;;;;;;16446:20;;;16424:42;;16495:54;;16424:25:1;;;16465:18;;;16458:34;;;16424:19:0;;16495:54;;;;;;16397:18:1;16495:54:0;;;;;;;16017:540;;15909:648;;;:::o;12583:820::-;-1:-1:-1;;;;;12771:16:0;;12763:66;;;;-1:-1:-1;;;12763:66:0;;;;;;;:::i;:::-;7455:10;12886:96;7455:10;12917:4;12923:2;12927:21;12945:2;12927:17;:21::i;12886:96::-;12995:19;13017:13;;;;;;;;;;;-1:-1:-1;;;;;13017:19:0;;;;;;;;;;13055:21;;;;13047:76;;;;-1:-1:-1;;;13047:76:0;;;;;;;:::i;:::-;13159:9;:13;;;;;;;;;;;-1:-1:-1;;;;;13159:19:0;;;;;;;;;;13181:20;;;13159:42;;13223:17;;;;;;;:27;;13181:20;;13159:9;13223:27;;13181:20;;13223:27;:::i;:::-;;;;-1:-1:-1;;13268:46:0;;;16424:25:1;;;16480:2;16465:18;;16458:34;;;-1:-1:-1;;;;;13268:46:0;;;;;;;;;;;;;;16397:18:1;13268:46:0;;;;;;;13327:68;13358:8;13368:4;13374:2;13378;13382:6;13390:4;13327:30;:68::i;:::-;12752:651;;12583:820;;;;;:::o;19607:198::-;19727:16;;;19741:1;19727:16;;;;;;;;;19673;;19702:22;;19727:16;;;;;;;;;;;;-1:-1:-1;19727:16:0;19702:41;;19765:7;19754:5;19760:1;19754:8;;;;;;;;:::i;:::-;;;;;;;;;;:18;19792:5;19607:198;-1:-1:-1;;19607:198:0:o;20170:931::-;-1:-1:-1;;;;;20492:18:0;;20488:160;;20532:9;20527:110;20551:3;:10;20547:1;:14;20527:110;;;20611:7;20619:1;20611:10;;;;;;;;:::i;:::-;;;;;;;20587:12;:20;20600:3;20604:1;20600:6;;;;;;;;:::i;:::-;;;;;;;20587:20;;;;;;;;;;;;:34;;;;;;;:::i;:::-;;;;-1:-1:-1;20563:3:0;;-1:-1:-1;20563:3:0;;:::i;:::-;;;20527:110;;;;20488:160;-1:-1:-1;;;;;20664:16:0;;20660:434;;20702:9;20697:386;20721:3;:10;20717:1;:14;20697:386;;;20757:10;20770:3;20774:1;20770:6;;;;;;;;:::i;:::-;;;;;;;20757:19;;20795:14;20812:7;20820:1;20812:10;;;;;;;;:::i;:::-;;;;;;;20795:27;;20841:14;20858:12;:16;20871:2;20858:16;;;;;;;;;;;;20841:33;;20911:6;20901;:16;;20893:69;;;;-1:-1:-1;;;20893:69:0;;19620:2:1;20893:69:0;;;19602:21:1;19659:2;19639:18;;;19632:30;19698:34;19678:18;;;19671:62;-1:-1:-1;;;19749:18:1;;;19742:38;19797:19;;20893:69:0;19418:404:1;20893:69:0;21014:16;;;;:12;:16;;;;;;21033:15;;21014:34;;20733:3;;;:::i;:::-;;;20697:386;;18034:744;-1:-1:-1;;;;;18249:13:0;;1528:20;1576:8;18245:526;;18285:72;;-1:-1:-1;;;18285:72:0;;-1:-1:-1;;;;;18285:38:0;;;;;:72;;18324:8;;18334:4;;18340:2;;18344:6;;18352:4;;18285:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18285:72:0;;;;;;;;-1:-1:-1;;18285:72:0;;;;;;;;;;;;:::i;:::-;;;18281:479;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;18633:6;18626:14;;-1:-1:-1;;;18626:14:0;;;;;;;;:::i;18281:479::-;;;18682:62;;-1:-1:-1;;;18682:62:0;;21709:2:1;18682:62:0;;;21691:21:1;21748:2;21728:18;;;21721:30;21787:34;21767:18;;;21760:62;-1:-1:-1;;;21838:18:1;;;21831:50;21898:19;;18682:62:0;21507:416:1;18281:479:0;-1:-1:-1;;;;;;18407:55:0;;-1:-1:-1;;;18407:55:0;18403:154;;18487:50;;-1:-1:-1;;;18487:50:0;;;;;;;:::i;18786:813::-;-1:-1:-1;;;;;19026:13:0;;1528:20;1576:8;19022:570;;19062:79;;-1:-1:-1;;;19062:79:0;;-1:-1:-1;;;;;19062:43:0;;;;;:79;;19106:8;;19116:4;;19122:3;;19127:7;;19136:4;;19062:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19062:79:0;;;;;;;;-1:-1:-1;;19062:79:0;;;;;;;;;;;;:::i;:::-;;;19058:523;;;;:::i;:::-;-1:-1:-1;;;;;;19223:60:0;;-1:-1:-1;;;19223:60:0;19219:159;;19308:50;;-1:-1:-1;;;19308:50:0;;;;;;;:::i;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:173:1;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:254::-;260:6;268;321:2;309:9;300:7;296:23;292:32;289:52;;;337:1;334;327:12;289:52;360:29;379:9;360:29;:::i;:::-;350:39;436:2;421:18;;;;408:32;;-1:-1:-1;;;192:254:1:o;633:131::-;-1:-1:-1;;;;;;707:32:1;;697:43;;687:71;;754:1;751;744:12;769:245;827:6;880:2;868:9;859:7;855:23;851:32;848:52;;;896:1;893;886:12;848:52;935:9;922:23;954:30;978:5;954:30;:::i;:::-;1003:5;769:245;-1:-1:-1;;;769:245:1:o;1211:472::-;1253:3;1291:5;1285:12;1318:6;1313:3;1306:19;1343:1;1353:162;1367:6;1364:1;1361:13;1353:162;;;1429:4;1485:13;;;1481:22;;1475:29;1457:11;;;1453:20;;1446:59;1382:12;1353:162;;;1533:6;1530:1;1527:13;1524:87;;;1599:1;1592:4;1583:6;1578:3;1574:16;1570:27;1563:38;1524:87;-1:-1:-1;1665:2:1;1644:15;-1:-1:-1;;1640:29:1;1631:39;;;;1672:4;1627:50;;1211:472;-1:-1:-1;;1211:472:1:o;1688:220::-;1837:2;1826:9;1819:21;1800:4;1857:45;1898:2;1887:9;1883:18;1875:6;1857:45;:::i;1913:180::-;1972:6;2025:2;2013:9;2004:7;2000:23;1996:32;1993:52;;;2041:1;2038;2031:12;1993:52;-1:-1:-1;2064:23:1;;1913:180;-1:-1:-1;1913:180:1:o;2098:322::-;2175:6;2183;2191;2244:2;2232:9;2223:7;2219:23;2215:32;2212:52;;;2260:1;2257;2250:12;2212:52;2283:29;2302:9;2283:29;:::i;:::-;2273:39;2359:2;2344:18;;2331:32;;-1:-1:-1;2410:2:1;2395:18;;;2382:32;;2098:322;-1:-1:-1;;;2098:322:1:o;2425:127::-;2486:10;2481:3;2477:20;2474:1;2467:31;2517:4;2514:1;2507:15;2541:4;2538:1;2531:15;2557:249;2667:2;2648:13;;-1:-1:-1;;2644:27:1;2632:40;;2702:18;2687:34;;2723:22;;;2684:62;2681:88;;;2749:18;;:::i;:::-;2785:2;2778:22;-1:-1:-1;;2557:249:1:o;2811:183::-;2871:4;2904:18;2896:6;2893:30;2890:56;;;2926:18;;:::i;:::-;-1:-1:-1;2971:1:1;2967:14;2983:4;2963:25;;2811:183::o;2999:724::-;3053:5;3106:3;3099:4;3091:6;3087:17;3083:27;3073:55;;3124:1;3121;3114:12;3073:55;3160:6;3147:20;3186:4;3209:43;3249:2;3209:43;:::i;:::-;3281:2;3275:9;3293:31;3321:2;3313:6;3293:31;:::i;:::-;3359:18;;;3451:1;3447:10;;;;3435:23;;3431:32;;;3393:15;;;;-1:-1:-1;3475:15:1;;;3472:35;;;3503:1;3500;3493:12;3472:35;3539:2;3531:6;3527:15;3551:142;3567:6;3562:3;3559:15;3551:142;;;3633:17;;3621:30;;3671:12;;;;3584;;3551:142;;;-1:-1:-1;3711:6:1;2999:724;-1:-1:-1;;;;;;2999:724:1:o;3728:468::-;3792:5;3826:18;3818:6;3815:30;3812:56;;;3848:18;;:::i;:::-;3897:2;3891:9;3909:69;3966:2;3945:15;;-1:-1:-1;;3941:29:1;3972:4;3937:40;3891:9;3909:69;:::i;:::-;3996:6;3987:15;;4026:6;4018;4011:22;4066:3;4057:6;4052:3;4048:16;4045:25;4042:45;;;4083:1;4080;4073:12;4042:45;4133:6;4128:3;4121:4;4113:6;4109:17;4096:44;4188:1;4181:4;4172:6;4164;4160:19;4156:30;4149:41;;3728:468;;;;;:::o;4201:220::-;4243:5;4296:3;4289:4;4281:6;4277:17;4273:27;4263:55;;4314:1;4311;4304:12;4263:55;4336:79;4411:3;4402:6;4389:20;4382:4;4374:6;4370:17;4336:79;:::i;4426:943::-;4580:6;4588;4596;4604;4612;4665:3;4653:9;4644:7;4640:23;4636:33;4633:53;;;4682:1;4679;4672:12;4633:53;4705:29;4724:9;4705:29;:::i;:::-;4695:39;;4753:38;4787:2;4776:9;4772:18;4753:38;:::i;:::-;4743:48;;4842:2;4831:9;4827:18;4814:32;4865:18;4906:2;4898:6;4895:14;4892:34;;;4922:1;4919;4912:12;4892:34;4945:61;4998:7;4989:6;4978:9;4974:22;4945:61;:::i;:::-;4935:71;;5059:2;5048:9;5044:18;5031:32;5015:48;;5088:2;5078:8;5075:16;5072:36;;;5104:1;5101;5094:12;5072:36;5127:63;5182:7;5171:8;5160:9;5156:24;5127:63;:::i;:::-;5117:73;;5243:3;5232:9;5228:19;5215:33;5199:49;;5273:2;5263:8;5260:16;5257:36;;;5289:1;5286;5279:12;5257:36;;5312:51;5355:7;5344:8;5333:9;5329:24;5312:51;:::i;:::-;5302:61;;;4426:943;;;;;;;;:::o;5374:1208::-;5492:6;5500;5553:2;5541:9;5532:7;5528:23;5524:32;5521:52;;;5569:1;5566;5559:12;5521:52;5609:9;5596:23;5638:18;5679:2;5671:6;5668:14;5665:34;;;5695:1;5692;5685:12;5665:34;5733:6;5722:9;5718:22;5708:32;;5778:7;5771:4;5767:2;5763:13;5759:27;5749:55;;5800:1;5797;5790:12;5749:55;5836:2;5823:16;5858:4;5881:43;5921:2;5881:43;:::i;:::-;5953:2;5947:9;5965:31;5993:2;5985:6;5965:31;:::i;:::-;6031:18;;;6119:1;6115:10;;;;6107:19;;6103:28;;;6065:15;;;;-1:-1:-1;6143:19:1;;;6140:39;;;6175:1;6172;6165:12;6140:39;6199:11;;;;6219:148;6235:6;6230:3;6227:15;6219:148;;;6301:23;6320:3;6301:23;:::i;:::-;6289:36;;6252:12;;;;6345;;;;6219:148;;;6386:6;-1:-1:-1;;6430:18:1;;6417:32;;-1:-1:-1;;6461:16:1;;;6458:36;;;6490:1;6487;6480:12;6458:36;;6513:63;6568:7;6557:8;6546:9;6542:24;6513:63;:::i;:::-;6503:73;;;5374:1208;;;;;:::o;6587:435::-;6640:3;6678:5;6672:12;6705:6;6700:3;6693:19;6731:4;6760:2;6755:3;6751:12;6744:19;;6797:2;6790:5;6786:14;6818:1;6828:169;6842:6;6839:1;6836:13;6828:169;;;6903:13;;6891:26;;6937:12;;;;6972:15;;;;6864:1;6857:9;6828:169;;;-1:-1:-1;7013:3:1;;6587:435;-1:-1:-1;;;;;6587:435:1:o;7027:261::-;7206:2;7195:9;7188:21;7169:4;7226:56;7278:2;7267:9;7263:18;7255:6;7226:56;:::i;7293:1123::-;7488:6;7496;7504;7512;7520;7573:3;7561:9;7552:7;7548:23;7544:33;7541:53;;;7590:1;7587;7580:12;7541:53;7613:29;7632:9;7613:29;:::i;:::-;7603:39;;7693:2;7682:9;7678:18;7665:32;7716:18;7757:2;7749:6;7746:14;7743:34;;;7773:1;7770;7763:12;7743:34;7796:61;7849:7;7840:6;7829:9;7825:22;7796:61;:::i;:::-;7786:71;;7910:2;7899:9;7895:18;7882:32;7866:48;;7939:2;7929:8;7926:16;7923:36;;;7955:1;7952;7945:12;7923:36;7978:63;8033:7;8022:8;8011:9;8007:24;7978:63;:::i;:::-;7968:73;;8094:2;8083:9;8079:18;8066:32;8050:48;;8123:2;8113:8;8110:16;8107:36;;;8139:1;8136;8129:12;8107:36;8162:63;8217:7;8206:8;8195:9;8191:24;8162:63;:::i;:::-;8152:73;;8278:3;8267:9;8263:19;8250:33;8234:49;;8308:2;8298:8;8295:16;8292:36;;;8324:1;8321;8314:12;8292:36;;8347:63;8402:7;8391:8;8380:9;8376:24;8347:63;:::i;8421:186::-;8480:6;8533:2;8521:9;8512:7;8508:23;8504:32;8501:52;;;8549:1;8546;8539:12;8501:52;8572:29;8591:9;8572:29;:::i;8612:595::-;8730:6;8738;8791:2;8779:9;8770:7;8766:23;8762:32;8759:52;;;8807:1;8804;8797:12;8759:52;8847:9;8834:23;8876:18;8917:2;8909:6;8906:14;8903:34;;;8933:1;8930;8923:12;8903:34;8956:61;9009:7;9000:6;8989:9;8985:22;8956:61;:::i;:::-;8946:71;;9070:2;9059:9;9055:18;9042:32;9026:48;;9099:2;9089:8;9086:16;9083:36;;;9115:1;9112;9105:12;9212:518;9290:6;9298;9351:2;9339:9;9330:7;9326:23;9322:32;9319:52;;;9367:1;9364;9357:12;9319:52;9403:9;9390:23;9380:33;;9464:2;9453:9;9449:18;9436:32;9491:18;9483:6;9480:30;9477:50;;;9523:1;9520;9513:12;9477:50;9546:22;;9599:4;9591:13;;9587:27;-1:-1:-1;9577:55:1;;9628:1;9625;9618:12;9577:55;9651:73;9716:7;9711:2;9698:16;9693:2;9689;9685:11;9651:73;:::i;9943:347::-;10008:6;10016;10069:2;10057:9;10048:7;10044:23;10040:32;10037:52;;;10085:1;10082;10075:12;10037:52;10108:29;10127:9;10108:29;:::i;:::-;10098:39;;10187:2;10176:9;10172:18;10159:32;10234:5;10227:13;10220:21;10213:5;10210:32;10200:60;;10256:1;10253;10246:12;10200:60;10279:5;10269:15;;;9943:347;;;;;:::o;10295:248::-;10363:6;10371;10424:2;10412:9;10403:7;10399:23;10395:32;10392:52;;;10440:1;10437;10430:12;10392:52;-1:-1:-1;;10463:23:1;;;10533:2;10518:18;;;10505:32;;-1:-1:-1;10295:248:1:o;10548:669::-;10675:6;10683;10691;10744:2;10732:9;10723:7;10719:23;10715:32;10712:52;;;10760:1;10757;10750:12;10712:52;10783:29;10802:9;10783:29;:::i;:::-;10773:39;;10863:2;10852:9;10848:18;10835:32;10886:18;10927:2;10919:6;10916:14;10913:34;;;10943:1;10940;10933:12;10913:34;10966:61;11019:7;11010:6;10999:9;10995:22;10966:61;:::i;:::-;10956:71;;11080:2;11069:9;11065:18;11052:32;11036:48;;11109:2;11099:8;11096:16;11093:36;;;11125:1;11122;11115:12;11093:36;;11148:63;11203:7;11192:8;11181:9;11177:24;11148:63;:::i;:::-;11138:73;;;10548:669;;;;;:::o;11222:260::-;11290:6;11298;11351:2;11339:9;11330:7;11326:23;11322:32;11319:52;;;11367:1;11364;11357:12;11319:52;11390:29;11409:9;11390:29;:::i;:::-;11380:39;;11438:38;11472:2;11461:9;11457:18;11438:38;:::i;:::-;11428:48;;11222:260;;;;;:::o;11487:606::-;11591:6;11599;11607;11615;11623;11676:3;11664:9;11655:7;11651:23;11647:33;11644:53;;;11693:1;11690;11683:12;11644:53;11716:29;11735:9;11716:29;:::i;:::-;11706:39;;11764:38;11798:2;11787:9;11783:18;11764:38;:::i;:::-;11754:48;;11849:2;11838:9;11834:18;11821:32;11811:42;;11900:2;11889:9;11885:18;11872:32;11862:42;;11955:3;11944:9;11940:19;11927:33;11983:18;11975:6;11972:30;11969:50;;;12015:1;12012;12005:12;11969:50;12038:49;12079:7;12070:6;12059:9;12055:22;12038:49;:::i;12510:380::-;12589:1;12585:12;;;;12632;;;12653:61;;12707:4;12699:6;12695:17;12685:27;;12653:61;12760:2;12752:6;12749:14;12729:18;12726:38;12723:161;;;12806:10;12801:3;12797:20;12794:1;12787:31;12841:4;12838:1;12831:15;12869:4;12866:1;12859:15;12723:161;;12510:380;;;:::o;12895:404::-;13097:2;13079:21;;;13136:2;13116:18;;;13109:30;13175:34;13170:2;13155:18;;13148:62;-1:-1:-1;;;13241:2:1;13226:18;;13219:38;13289:3;13274:19;;12895:404::o;14133:127::-;14194:10;14189:3;14185:20;14182:1;14175:31;14225:4;14222:1;14215:15;14249:4;14246:1;14239:15;14265:127;14326:10;14321:3;14317:20;14314:1;14307:31;14357:4;14354:1;14347:15;14381:4;14378:1;14371:15;14397:135;14436:3;-1:-1:-1;;14457:17:1;;14454:43;;;14477:18;;:::i;:::-;-1:-1:-1;14524:1:1;14513:13;;14397:135::o;14537:356::-;14739:2;14721:21;;;14758:18;;;14751:30;14817:34;14812:2;14797:18;;14790:62;14884:2;14869:18;;14537:356::o;15715:397::-;15917:2;15899:21;;;15956:2;15936:18;;;15929:30;15995:34;15990:2;15975:18;;15968:62;-1:-1:-1;;;16061:2:1;16046:18;;16039:31;16102:3;16087:19;;15715:397::o;16117:128::-;16157:3;16188:1;16184:6;16181:1;16178:13;16175:39;;;16194:18;;:::i;:::-;-1:-1:-1;16230:9:1;;16117:128::o;16503:404::-;16705:2;16687:21;;;16744:2;16724:18;;;16717:30;16783:34;16778:2;16763:18;;16756:62;-1:-1:-1;;;16849:2:1;16834:18;;16827:38;16897:3;16882:19;;16503:404::o;16912:401::-;17114:2;17096:21;;;17153:2;17133:18;;;17126:30;17192:34;17187:2;17172:18;;17165:62;-1:-1:-1;;;17258:2:1;17243:18;;17236:35;17303:3;17288:19;;16912:401::o;17318:406::-;17520:2;17502:21;;;17559:2;17539:18;;;17532:30;17598:34;17593:2;17578:18;;17571:62;-1:-1:-1;;;17664:2:1;17649:18;;17642:40;17714:3;17699:19;;17318:406::o;17729:465::-;17986:2;17975:9;17968:21;17949:4;18012:56;18064:2;18053:9;18049:18;18041:6;18012:56;:::i;:::-;18116:9;18108:6;18104:22;18099:2;18088:9;18084:18;18077:50;18144:44;18181:6;18173;18144:44;:::i;:::-;18136:52;17729:465;-1:-1:-1;;;;;17729:465:1:o;18199:399::-;18401:2;18383:21;;;18440:2;18420:18;;;18413:30;18479:34;18474:2;18459:18;;18452:62;-1:-1:-1;;;18545:2:1;18530:18;;18523:33;18588:3;18573:19;;18199:399::o;18603:400::-;18805:2;18787:21;;;18844:2;18824:18;;;18817:30;18883:34;18878:2;18863:18;;18856:62;-1:-1:-1;;;18949:2:1;18934:18;;18927:34;18993:3;18978:19;;18603:400::o;19827:561::-;-1:-1:-1;;;;;20124:15:1;;;20106:34;;20176:15;;20171:2;20156:18;;20149:43;20223:2;20208:18;;20201:34;;;20266:2;20251:18;;20244:34;;;20086:3;20309;20294:19;;20287:32;;;20049:4;;20336:46;;20362:19;;20354:6;20336:46;:::i;:::-;20328:54;19827:561;-1:-1:-1;;;;;;;19827:561:1:o;20393:249::-;20462:6;20515:2;20503:9;20494:7;20490:23;20486:32;20483:52;;;20531:1;20528;20521:12;20483:52;20563:9;20557:16;20582:30;20606:5;20582:30;:::i;20647:179::-;20682:3;20724:1;20706:16;20703:23;20700:120;;;20770:1;20767;20764;20749:23;-1:-1:-1;20807:1:1;20801:8;20796:3;20792:18;20700:120;20647:179;:::o;20831:671::-;20870:3;20912:4;20894:16;20891:26;20888:39;;;20831:671;:::o;20888:39::-;20954:2;20948:9;-1:-1:-1;;21019:16:1;21015:25;;21012:1;20948:9;20991:50;21070:4;21064:11;21094:16;21129:18;21200:2;21193:4;21185:6;21181:17;21178:25;21173:2;21165:6;21162:14;21159:45;21156:58;;;21207:5;;;;;20831:671;:::o;21156:58::-;21244:6;21238:4;21234:17;21223:28;;21280:3;21274:10;21307:2;21299:6;21296:14;21293:27;;;21313:5;;;;;;20831:671;:::o;21293:27::-;21397:2;21378:16;21372:4;21368:27;21364:36;21357:4;21348:6;21343:3;21339:16;21335:27;21332:69;21329:82;;;21404:5;;;;;;20831:671;:::o;21329:82::-;21420:57;21471:4;21462:6;21454;21450:19;21446:30;21440:4;21420:57;:::i;:::-;-1:-1:-1;21493:3:1;;20831:671;-1:-1:-1;;;;;20831:671:1:o;21928:404::-;22130:2;22112:21;;;22169:2;22149:18;;;22142:30;22208:34;22203:2;22188:18;;22181:62;-1:-1:-1;;;22274:2:1;22259:18;;22252:38;22322:3;22307:19;;21928:404::o;22337:827::-;-1:-1:-1;;;;;22734:15:1;;;22716:34;;22786:15;;22781:2;22766:18;;22759:43;22696:3;22833:2;22818:18;;22811:31;;;22659:4;;22865:57;;22902:19;;22894:6;22865:57;:::i;:::-;22970:9;22962:6;22958:22;22953:2;22942:9;22938:18;22931:50;23004:44;23041:6;23033;23004:44;:::i;:::-;22990:58;;23097:9;23089:6;23085:22;23079:3;23068:9;23064:19;23057:51;23125:33;23151:6;23143;23125:33;:::i;:::-;23117:41;22337:827;-1:-1:-1;;;;;;;;22337:827:1:o

Swarm Source

ipfs://103588c9a260dccbf0c974f9ee87b610e9ab3df226e0e1dd0fa4fc988853ac64
Loading