ETH Price: $3,270.46 (-2.54%)

Token

Trippy Gelato Creamery (TGC)
 

Overview

Max Total Supply

3,037 TGC

Holders

1,111

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Balance
2 TGC
0xbfcE231A2BcC016b6fB23FDc934ef5530B2A115e
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:
TrippyGelatoCreamery

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-01-29
*/

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

library Counters {
    struct Counter {
        uint256 _value;
    }

    function current(Counter storage counter) internal view returns (uint256) {
        return counter._value;
    }

    function increment(Counter storage counter) internal {
    unchecked {
        counter._value += 1;
    }
    }

    function decrement(Counter storage counter) internal {
        uint256 value = counter._value;
        require(value > 0, "Counter: decrement overflow");
    unchecked {
        counter._value = value - 1;
    }
    }

    function reset(Counter storage counter) internal {
        counter._value = 0;
    }
}

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

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

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

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

interface IERC721Enumerable is IERC721 {
    function totalSupply() external view returns (uint256);

    function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId);

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

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.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 ERC721Enumerable is ERC721, IERC721Enumerable {
    uint256[] private _allTokens;
    mapping(uint256 => uint256) private _allTokensIndex;
    mapping(uint256 => uint256) private _ownedTokensIndex;
    mapping(address => mapping(uint256 => uint256)) private _ownedTokens;

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

    function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) {
        require(index < ERC721.balanceOf(owner), "ERC721Enumerable: owner index out of bounds");
        return _ownedTokens[owner][index];
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _allTokens.length;
    }

    function tokenByIndex(uint256 index) public view virtual override returns (uint256) {
        require(index < ERC721Enumerable.totalSupply(), "ERC721Enumerable: global index out of bounds");
        return _allTokens[index];
    }

    function _beforeTokenTransfer(address from, address to, uint256 tokenId) internal virtual override {
        super._beforeTokenTransfer(from, to, tokenId);
        if (from == address(0)) {
            _addTokenToAllTokensEnumeration(tokenId);
        } else if (from != to) {
            _removeTokenFromOwnerEnumeration(from, tokenId);
        }
        if (to == address(0)) {
            _removeTokenFromAllTokensEnumeration(tokenId);
        } else if (to != from) {
            _addTokenToOwnerEnumeration(to, tokenId);
        }
    }

    function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private {
        uint256 length = ERC721.balanceOf(to);
        _ownedTokens[to][length] = tokenId;
        _ownedTokensIndex[tokenId] = length;
    }

    function _addTokenToAllTokensEnumeration(uint256 tokenId) private {
        _allTokensIndex[tokenId] = _allTokens.length;
        _allTokens.push(tokenId);
    }

    function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private {
        uint256 lastTokenIndex = ERC721.balanceOf(from) - 1;
        uint256 tokenIndex = _ownedTokensIndex[tokenId];
        if (tokenIndex != lastTokenIndex) {
            uint256 lastTokenId = _ownedTokens[from][lastTokenIndex];
            _ownedTokens[from][tokenIndex] = lastTokenId;
            _ownedTokensIndex[lastTokenId] = tokenIndex;
        }
        delete _ownedTokensIndex[tokenId];
        delete _ownedTokens[from][lastTokenIndex];
    }

    function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private {
        uint256 lastTokenIndex = _allTokens.length - 1;
        uint256 tokenIndex = _allTokensIndex[tokenId];
        uint256 lastTokenId = _allTokens[lastTokenIndex];
        _allTokens[tokenIndex] = lastTokenId;
        _allTokensIndex[lastTokenId] = tokenIndex;
        delete _allTokensIndex[tokenId];
        _allTokens.pop();
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

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

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

    function owner() public view virtual returns (address) {
        return _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 TrippyGelatoCreamery is Context, Ownable, ERC721Enumerable {
    using Counters for Counters.Counter;
    Counters.Counter private _tokenIdTracker;

    string public constant TOKEN_NAME = "Trippy Gelato Creamery";
    string public constant TOKEN_SYMBOL = "TGC";

   using Strings for uint256;

    //metadata
    string baseURI;

    string public blindTokenURI = "ipfs://QmQ2KLgRySyLuVMWtedTpTmpcxLL7Xtw8mu3Ldpo6jQVWZ";
    //sales
    uint256 public cost = 0.05 ether;

    uint256 public presaleSupply = 2000;
    uint256 public reservedSupply = 51;
    uint256 public maxSupply = 6000;
    uint256 public maxMintsPerTransaction = 5;

    bool public isActive = true;
    bool public reservedTokensMinted = false;

    bool public blindBoxOpened = false;

    mapping(address => bool) public presaleList;
    mapping(address => uint8) private _allowMaxList;

    //Sale states
    bool public presaleEnabled = false;
    bool public publicSaleEnabled = false;

    constructor(string memory _initBaseURI) ERC721(TOKEN_NAME, TOKEN_SYMBOL) {
        setBaseURI(_initBaseURI);   
    }

    // metadata region
    function _baseURI() internal view virtual override returns (string memory) {
        return baseURI;
    }

    function setBaseURI(string memory _newBaseURI) public onlyOwner {
        baseURI = _newBaseURI;
    }
    //endregion

    //setters and getters for sales region
    function setCost(uint256 _newCost) public onlyOwner {
        cost = _newCost;
    }

    function setBlindBoxURI(string memory _newURI) public onlyOwner {
        blindTokenURI = _newURI;
    }

    function configurePresale(uint256 _presaleSupply, uint256 _reservedSupply) public onlyOwner {
        presaleSupply = _presaleSupply;
        reservedSupply = _reservedSupply;
    }

    function setMaxSupply(uint256 _newMaxSupply) public onlyOwner {
        maxSupply = _newMaxSupply;
    }

    function setMaxMintsPerTransaction(uint256 _newmaxMintsPerTransaction) public onlyOwner {
        maxMintsPerTransaction = _newmaxMintsPerTransaction;
    }

    function setPresaleList(address[] memory _allowList, uint8 numAllowedToMint) external onlyOwner {
        for (uint256 i = 0; i < _allowList.length; i++) {
            presaleList[_allowList[i]] = true;
            _allowMaxList[_allowList[i]] = numAllowedToMint;
        }
    }
    //endregion

    function reserveNFTs(address to) public onlyOwner {
        require(reservedTokensMinted == false, "Reserve NFT: reserved Tokens have been minted");
        uint totalMinted = _tokenIdTracker.current();
        require(totalMinted + reservedSupply < maxSupply, "Reserve NFT: not enough NFTs left to reserve");

        for (uint i = 0; i < reservedSupply; i++) {
            _mint(to, _tokenIdTracker.current());
            _tokenIdTracker.increment();
        }
        reservedTokensMinted = true;
    }

    function toggleActiveState() public onlyOwner {
        isActive = !isActive;
    }

    function getBalanceFromWallet(address _wallet) external view returns (uint256[] memory) {
        uint256 amount = balanceOf(_wallet);

        uint256[] memory amountMemory = new uint256[](amount);
        for (uint256 i;i < amount;i++) {
            amountMemory[i] = tokenOfOwnerByIndex(_wallet, i);
        }

        return amountMemory;
    }

    function withdraw() external onlyOwner {
        require(address(this).balance > 0, "Withdraw: insufficient funds.");
        payable(_msgSender()).transfer(address(this).balance);
    }

    //mint and airdrop region
    function mint(uint256 _mintAmount) public payable {
        require(isActive, "mint: contract paused");       
        require(publicSaleEnabled == true, "mint: Public sale is not enabled yet");
        require(_mintAmount > 0, "mint: Can't mint less than 1.");
        require(_mintAmount <= maxMintsPerTransaction, "mint: Can't mint more than maxMintsPerTransaction.");
        require(cost * _mintAmount <= msg.value, "mint: Incorrect Ether value.");
        mintNFTs(msg.sender, _mintAmount);
    }

    function presaleMint(uint8 _mintAmount) public payable  {
        require(isActive, "presaleMint: contract paused");       
        require(presaleEnabled == true, "presaleMint: Presale is not enabled yet");
        bool isWhiteListed = presaleList[msg.sender];
        require(isWhiteListed == true, "presaleMint: Wrong address");
        require(_mintAmount <= _allowMaxList[msg.sender], "presaleMint: Exceeded max available to purchase");
        require(_mintAmount <= presaleSupply, "presaleMint: Presale supply is out.");
        presaleSupply -= _mintAmount;
        _allowMaxList[msg.sender] -= _mintAmount;
        mintNFTs(msg.sender, _mintAmount);
    }

    function flipBlindBoxStatus() public onlyOwner {
        blindBoxOpened = !blindBoxOpened;
    }

    function flipPresale() public onlyOwner {
        presaleEnabled = !presaleEnabled;
    }

    function flipPublicsale() public onlyOwner {
        publicSaleEnabled = !publicSaleEnabled;
    }

    modifier maxSupplyCheck(uint256 amount)  {
        uint256 totalAmount = totalSupply() + amount;       
        if(reservedTokensMinted == false){
            totalAmount = totalAmount + reservedSupply;
        }
        require(totalAmount <= maxSupply, "max Supply Check: Tokens supply reached limit.");
        _;
    }

    function mintNFTs(address to, uint256 amount) internal maxSupplyCheck(amount) {
        uint256 fromToken = totalSupply() + 1;
        for (uint256 i = 0; i < amount; i++) {
            _mint(to, fromToken + i);
        }
    }

    function airdrop(address[] memory addresses, uint256[] memory amounts) external onlyOwner {
        for (uint256 i = 0; i < addresses.length; i++) {
            mintNFTs(addresses[i], amounts[i]);
        }
    }

    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
        require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token");
        if(blindBoxOpened){
            return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : "";
        }else{
            return blindTokenURI;
        }
    }    
    //endregion
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_initBaseURI","type":"string"}],"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":[],"name":"TOKEN_NAME","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TOKEN_SYMBOL","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"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":"blindBoxOpened","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blindTokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_presaleSupply","type":"uint256"},{"internalType":"uint256","name":"_reservedSupply","type":"uint256"}],"name":"configurePresale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"flipBlindBoxStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"flipPresale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"flipPublicsale","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":"_wallet","type":"address"}],"name":"getBalanceFromWallet","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"maxMintsPerTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintAmount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","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":"presaleEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"presaleList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"_mintAmount","type":"uint8"}],"name":"presaleMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"presaleSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSaleEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"reserveNFTs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reservedSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reservedTokensMinted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"_newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newURI","type":"string"}],"name":"setBlindBoxURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newCost","type":"uint256"}],"name":"setCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newmaxMintsPerTransaction","type":"uint256"}],"name":"setMaxMintsPerTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newMaxSupply","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_allowList","type":"address[]"},{"internalType":"uint8","name":"numAllowedToMint","type":"uint8"}],"name":"setPresaleList","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":[],"name":"toggleActiveState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526040518060600160405280603581526020016200612760359139600d90805190602001906200003592919062000389565b5066b1a2bc2ec50000600e556107d0600f55603360105561177060115560056012556001601360006101000a81548160ff0219169083151502179055506000601360016101000a81548160ff0219169083151502179055506000601360026101000a81548160ff0219169083151502179055506000601660006101000a81548160ff0219169083151502179055506000601660016101000a81548160ff021916908315150217905550348015620000eb57600080fd5b506040516200615c3803806200615c8339818101604052810190620001119190620005d6565b6040518060400160405280601681526020017f5472697070792047656c61746f20437265616d657279000000000000000000008152506040518060400160405280600381526020017f54474300000000000000000000000000000000000000000000000000000000008152506200019d62000191620001e960201b60201c565b620001f160201b60201c565b8160019080519060200190620001b592919062000389565b508060029080519060200190620001ce92919062000389565b505050620001e281620002b560201b60201c565b506200070f565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620002c5620001e960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620002eb6200036060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000344576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200033b9062000688565b60405180910390fd5b80600c90805190602001906200035c92919062000389565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b8280546200039790620006d9565b90600052602060002090601f016020900481019282620003bb576000855562000407565b82601f10620003d657805160ff191683800117855562000407565b8280016001018555821562000407579182015b8281111562000406578251825591602001919060010190620003e9565b5b5090506200041691906200041a565b5090565b5b80821115620004355760008160009055506001016200041b565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620004a28262000457565b810181811067ffffffffffffffff82111715620004c457620004c362000468565b5b80604052505050565b6000620004d962000439565b9050620004e7828262000497565b919050565b600067ffffffffffffffff8211156200050a576200050962000468565b5b620005158262000457565b9050602081019050919050565b60005b838110156200054257808201518184015260208101905062000525565b8381111562000552576000848401525b50505050565b60006200056f6200056984620004ec565b620004cd565b9050828152602081018484840111156200058e576200058d62000452565b5b6200059b84828562000522565b509392505050565b600082601f830112620005bb57620005ba6200044d565b5b8151620005cd84826020860162000558565b91505092915050565b600060208284031215620005ef57620005ee62000443565b5b600082015167ffffffffffffffff81111562000610576200060f62000448565b5b6200061e84828501620005a3565b91505092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006200067060208362000627565b91506200067d8262000638565b602082019050919050565b60006020820190508181036000830152620006a38162000661565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620006f257607f821691505b60208210811415620007095762000708620006aa565b5b50919050565b615a08806200071f6000396000f3fe6080604052600436106102c85760003560e01c806364aa0c7911610175578063b023b315116100dc578063df63c48c11610095578063f2266d7f1161006f578063f2266d7f14610a9a578063f2fde38b14610ac3578063f3e3882114610aec578063f617f92014610b17576102c8565b8063df63c48c14610a09578063e985e9c514610a34578063ec5ed89b14610a71576102c8565b8063b023b3151461090d578063b3a196e914610936578063b88d4fde14610961578063c87b56dd1461098a578063d5abeb01146109c7578063ddc3faf8146109f2576102c8565b806379268b071161012e57806379268b07146108325780638da5cb5b1461085b57806395d89b4114610886578063a0712d68146108b1578063a22cb465146108cd578063a8b80b93146108f6576102c8565b806364aa0c791461072457806365bd6aa31461074f578063672434821461078c5780636f8b44b0146107b557806370a08231146107de578063715018a61461081b576102c8565b806322f3e2d4116102345780633ccfd60b116101ed57806344d19d2b116101c757806344d19d2b146106565780634f6ccce71461068157806355f804b3146106be5780636352211e146106e7576102c8565b80633ccfd60b146105ed57806342842e0e1461060457806344a0d68a1461062d576102c8565b806322f3e2d4146104db57806323b872dd146105065780632a9053181461052f5780632ab91bba1461055a5780632ae0846d146105855780632f745c59146105b0576102c8565b806311a67e771161028657806311a67e77146103db57806312fb92e0146103f257806313faede61461042f578063143b237f1461045a57806318160ddd1461048557806318821400146104b0576102c8565b8062acf348146102cd57806301ffc9a7146102e457806306fdde0314610321578063081812fc1461034c578063095ea7b3146103895780630e0682d4146103b2575b600080fd5b3480156102d957600080fd5b506102e2610b33565b005b3480156102f057600080fd5b5061030b60048036038101906103069190613a31565b610bdb565b6040516103189190613a79565b60405180910390f35b34801561032d57600080fd5b50610336610c55565b6040516103439190613b2d565b60405180910390f35b34801561035857600080fd5b50610373600480360381019061036e9190613b85565b610ce7565b6040516103809190613bf3565b60405180910390f35b34801561039557600080fd5b506103b060048036038101906103ab9190613c3a565b610d6c565b005b3480156103be57600080fd5b506103d960048036038101906103d49190613c7a565b610e84565b005b3480156103e757600080fd5b506103f0611012565b005b3480156103fe57600080fd5b5061041960048036038101906104149190613c7a565b6110ba565b6040516104269190613a79565b60405180910390f35b34801561043b57600080fd5b506104446110da565b6040516104519190613cb6565b60405180910390f35b34801561046657600080fd5b5061046f6110e0565b60405161047c9190613a79565b60405180910390f35b34801561049157600080fd5b5061049a6110f3565b6040516104a79190613cb6565b60405180910390f35b3480156104bc57600080fd5b506104c5611100565b6040516104d29190613b2d565b60405180910390f35b3480156104e757600080fd5b506104f0611139565b6040516104fd9190613a79565b60405180910390f35b34801561051257600080fd5b5061052d60048036038101906105289190613cd1565b61114c565b005b34801561053b57600080fd5b506105446111ac565b6040516105519190613b2d565b60405180910390f35b34801561056657600080fd5b5061056f6111e5565b60405161057c9190613a79565b60405180910390f35b34801561059157600080fd5b5061059a6111f8565b6040516105a79190613b2d565b60405180910390f35b3480156105bc57600080fd5b506105d760048036038101906105d29190613c3a565b611286565b6040516105e49190613cb6565b60405180910390f35b3480156105f957600080fd5b5061060261132b565b005b34801561061057600080fd5b5061062b60048036038101906106269190613cd1565b61143a565b005b34801561063957600080fd5b50610654600480360381019061064f9190613b85565b61145a565b005b34801561066257600080fd5b5061066b6114e0565b6040516106789190613cb6565b60405180910390f35b34801561068d57600080fd5b506106a860048036038101906106a39190613b85565b6114e6565b6040516106b59190613cb6565b60405180910390f35b3480156106ca57600080fd5b506106e560048036038101906106e09190613e59565b611557565b005b3480156106f357600080fd5b5061070e60048036038101906107099190613b85565b6115ed565b60405161071b9190613bf3565b60405180910390f35b34801561073057600080fd5b5061073961169f565b6040516107469190613cb6565b60405180910390f35b34801561075b57600080fd5b5061077660048036038101906107719190613c7a565b6116a5565b6040516107839190613f60565b60405180910390f35b34801561079857600080fd5b506107b360048036038101906107ae919061410d565b611753565b005b3480156107c157600080fd5b506107dc60048036038101906107d79190613b85565b611831565b005b3480156107ea57600080fd5b5061080560048036038101906108009190613c7a565b6118b7565b6040516108129190613cb6565b60405180910390f35b34801561082757600080fd5b5061083061196f565b005b34801561083e57600080fd5b5061085960048036038101906108549190613b85565b6119f7565b005b34801561086757600080fd5b50610870611a7d565b60405161087d9190613bf3565b60405180910390f35b34801561089257600080fd5b5061089b611aa6565b6040516108a89190613b2d565b60405180910390f35b6108cb60048036038101906108c69190613b85565b611b38565b005b3480156108d957600080fd5b506108f460048036038101906108ef91906141b1565b611cc2565b005b34801561090257600080fd5b5061090b611e43565b005b34801561091957600080fd5b50610934600480360381019061092f9190613e59565b611eeb565b005b34801561094257600080fd5b5061094b611f81565b6040516109589190613cb6565b60405180910390f35b34801561096d57600080fd5b5061098860048036038101906109839190614292565b611f87565b005b34801561099657600080fd5b506109b160048036038101906109ac9190613b85565b611fe9565b6040516109be9190613b2d565b60405180910390f35b3480156109d357600080fd5b506109dc612139565b6040516109e99190613cb6565b60405180910390f35b3480156109fe57600080fd5b50610a0761213f565b005b348015610a1557600080fd5b50610a1e6121e7565b604051610a2b9190613a79565b60405180910390f35b348015610a4057600080fd5b50610a5b6004803603810190610a569190614315565b6121fa565b604051610a689190613a79565b60405180910390f35b348015610a7d57600080fd5b50610a986004803603810190610a939190614355565b61228e565b005b348015610aa657600080fd5b50610ac16004803603810190610abc91906143ce565b61231c565b005b348015610acf57600080fd5b50610aea6004803603810190610ae59190613c7a565b6124a0565b005b348015610af857600080fd5b50610b01612598565b604051610b0e9190613a79565b60405180910390f35b610b316004803603810190610b2c919061442a565b6125ab565b005b610b3b612865565b73ffffffffffffffffffffffffffffffffffffffff16610b59611a7d565b73ffffffffffffffffffffffffffffffffffffffff1614610baf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba6906144a3565b60405180910390fd5b601660009054906101000a900460ff1615601660006101000a81548160ff021916908315150217905550565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610c4e5750610c4d8261286d565b5b9050919050565b606060018054610c64906144f2565b80601f0160208091040260200160405190810160405280929190818152602001828054610c90906144f2565b8015610cdd5780601f10610cb257610100808354040283529160200191610cdd565b820191906000526020600020905b815481529060010190602001808311610cc057829003601f168201915b5050505050905090565b6000610cf28261294f565b610d31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2890614596565b60405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610d77826115ed565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610de8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddf90614628565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610e07612865565b73ffffffffffffffffffffffffffffffffffffffff161480610e365750610e3581610e30612865565b6121fa565b5b610e75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6c906146ba565b60405180910390fd5b610e7f83836129bb565b505050565b610e8c612865565b73ffffffffffffffffffffffffffffffffffffffff16610eaa611a7d565b73ffffffffffffffffffffffffffffffffffffffff1614610f00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef7906144a3565b60405180910390fd5b60001515601360019054906101000a900460ff16151514610f56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4d9061474c565b60405180910390fd5b6000610f62600b612a74565b905060115460105482610f75919061479b565b10610fb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fac90614863565b60405180910390fd5b60005b601054811015610ff257610fd583610fd0600b612a74565b612a82565b610fdf600b612c50565b8080610fea90614883565b915050610fb8565b506001601360016101000a81548160ff0219169083151502179055505050565b61101a612865565b73ffffffffffffffffffffffffffffffffffffffff16611038611a7d565b73ffffffffffffffffffffffffffffffffffffffff161461108e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611085906144a3565b60405180910390fd5b601360009054906101000a900460ff1615601360006101000a81548160ff021916908315150217905550565b60146020528060005260406000206000915054906101000a900460ff1681565b600e5481565b601660009054906101000a900460ff1681565b6000600780549050905090565b6040518060400160405280601681526020017f5472697070792047656c61746f20437265616d6572790000000000000000000081525081565b601360009054906101000a900460ff1681565b61115d611157612865565b82612c66565b61119c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111939061493e565b60405180910390fd5b6111a7838383612d44565b505050565b6040518060400160405280600381526020017f544743000000000000000000000000000000000000000000000000000000000081525081565b601660019054906101000a900460ff1681565b600d8054611205906144f2565b80601f0160208091040260200160405190810160405280929190818152602001828054611231906144f2565b801561127e5780601f106112535761010080835404028352916020019161127e565b820191906000526020600020905b81548152906001019060200180831161126157829003601f168201915b505050505081565b6000611291836118b7565b82106112d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c9906149d0565b60405180910390fd5b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b611333612865565b73ffffffffffffffffffffffffffffffffffffffff16611351611a7d565b73ffffffffffffffffffffffffffffffffffffffff16146113a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139e906144a3565b60405180910390fd5b600047116113ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e190614a3c565b60405180910390fd5b6113f2612865565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611437573d6000803e3d6000fd5b50565b61145583838360405180602001604052806000815250611f87565b505050565b611462612865565b73ffffffffffffffffffffffffffffffffffffffff16611480611a7d565b73ffffffffffffffffffffffffffffffffffffffff16146114d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cd906144a3565b60405180910390fd5b80600e8190555050565b60105481565b60006114f06110f3565b8210611531576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152890614ace565b60405180910390fd5b6007828154811061154557611544614aee565b5b90600052602060002001549050919050565b61155f612865565b73ffffffffffffffffffffffffffffffffffffffff1661157d611a7d565b73ffffffffffffffffffffffffffffffffffffffff16146115d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ca906144a3565b60405180910390fd5b80600c90805190602001906115e9929190613922565b5050565b6000806003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611696576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168d90614b8f565b60405180910390fd5b80915050919050565b60125481565b606060006116b2836118b7565b905060008167ffffffffffffffff8111156116d0576116cf613d2e565b5b6040519080825280602002602001820160405280156116fe5781602001602082028036833780820191505090505b50905060005b82811015611748576117168582611286565b82828151811061172957611728614aee565b5b602002602001018181525050808061174090614883565b915050611704565b508092505050919050565b61175b612865565b73ffffffffffffffffffffffffffffffffffffffff16611779611a7d565b73ffffffffffffffffffffffffffffffffffffffff16146117cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c6906144a3565b60405180910390fd5b60005b825181101561182c576118198382815181106117f1576117f0614aee565b5b602002602001015183838151811061180c5761180b614aee565b5b6020026020010151612fa0565b808061182490614883565b9150506117d2565b505050565b611839612865565b73ffffffffffffffffffffffffffffffffffffffff16611857611a7d565b73ffffffffffffffffffffffffffffffffffffffff16146118ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a4906144a3565b60405180910390fd5b8060118190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611928576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191f90614c21565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611977612865565b73ffffffffffffffffffffffffffffffffffffffff16611995611a7d565b73ffffffffffffffffffffffffffffffffffffffff16146119eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e2906144a3565b60405180910390fd5b6119f5600061307d565b565b6119ff612865565b73ffffffffffffffffffffffffffffffffffffffff16611a1d611a7d565b73ffffffffffffffffffffffffffffffffffffffff1614611a73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6a906144a3565b60405180910390fd5b8060128190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060028054611ab5906144f2565b80601f0160208091040260200160405190810160405280929190818152602001828054611ae1906144f2565b8015611b2e5780601f10611b0357610100808354040283529160200191611b2e565b820191906000526020600020905b815481529060010190602001808311611b1157829003601f168201915b5050505050905090565b601360009054906101000a900460ff16611b87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7e90614c8d565b60405180910390fd5b60011515601660019054906101000a900460ff16151514611bdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd490614d1f565b60405180910390fd5b60008111611c20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1790614d8b565b60405180910390fd5b601254811115611c65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5c90614e1d565b60405180910390fd5b3481600e54611c749190614e3d565b1115611cb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cac90614ee3565b60405180910390fd5b611cbf3382612fa0565b50565b611cca612865565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2f90614f4f565b60405180910390fd5b8060066000611d45612865565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611df2612865565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611e379190613a79565b60405180910390a35050565b611e4b612865565b73ffffffffffffffffffffffffffffffffffffffff16611e69611a7d565b73ffffffffffffffffffffffffffffffffffffffff1614611ebf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb6906144a3565b60405180910390fd5b601660019054906101000a900460ff1615601660016101000a81548160ff021916908315150217905550565b611ef3612865565b73ffffffffffffffffffffffffffffffffffffffff16611f11611a7d565b73ffffffffffffffffffffffffffffffffffffffff1614611f67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5e906144a3565b60405180910390fd5b80600d9080519060200190611f7d929190613922565b5050565b600f5481565b611f98611f92612865565b83612c66565b611fd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fce9061493e565b60405180910390fd5b611fe384848484613141565b50505050565b6060611ff48261294f565b612033576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202a90614fe1565b60405180910390fd5b601360029054906101000a900460ff16156120a6576000600c8054612057906144f2565b905011612073576040518060200160405280600081525061209f565b600c61207e8361319d565b60405160200161208f9291906150d1565b6040516020818303038152906040525b9050612134565b600d80546120b3906144f2565b80601f01602080910402602001604051908101604052809291908181526020018280546120df906144f2565b801561212c5780601f106121015761010080835404028352916020019161212c565b820191906000526020600020905b81548152906001019060200180831161210f57829003601f168201915b505050505090505b919050565b60115481565b612147612865565b73ffffffffffffffffffffffffffffffffffffffff16612165611a7d565b73ffffffffffffffffffffffffffffffffffffffff16146121bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b2906144a3565b60405180910390fd5b601360029054906101000a900460ff1615601360026101000a81548160ff021916908315150217905550565b601360029054906101000a900460ff1681565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b612296612865565b73ffffffffffffffffffffffffffffffffffffffff166122b4611a7d565b73ffffffffffffffffffffffffffffffffffffffff161461230a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612301906144a3565b60405180910390fd5b81600f81905550806010819055505050565b612324612865565b73ffffffffffffffffffffffffffffffffffffffff16612342611a7d565b73ffffffffffffffffffffffffffffffffffffffff1614612398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238f906144a3565b60405180910390fd5b60005b825181101561249b576001601460008584815181106123bd576123bc614aee565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550816015600085848151811061242e5761242d614aee565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff160217905550808061249390614883565b91505061239b565b505050565b6124a8612865565b73ffffffffffffffffffffffffffffffffffffffff166124c6611a7d565b73ffffffffffffffffffffffffffffffffffffffff161461251c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612513906144a3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561258c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258390615167565b60405180910390fd5b6125958161307d565b50565b601360019054906101000a900460ff1681565b601360009054906101000a900460ff166125fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f1906151d3565b60405180910390fd5b60011515601660009054906101000a900460ff16151514612650576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264790615265565b60405180910390fd5b6000601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905060011515811515146126e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126df906152d1565b60405180910390fd5b601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff168260ff16111561277d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277490615363565b60405180910390fd5b600f548260ff1611156127c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127bc906153f5565b60405180910390fd5b8160ff16600f60008282546127da9190615415565b9250508190555081601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282829054906101000a900460ff1661283c9190615449565b92506101000a81548160ff021916908360ff160217905550612861338360ff16612fa0565b5050565b600033905090565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061293857507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806129485750612947826132fe565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16612a2e836115ed565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600081600001549050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612af2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae9906154c9565b60405180910390fd5b612afb8161294f565b15612b3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3290615535565b60405180910390fd5b612b4760008383613368565b6001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612b97919061479b565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6001816000016000828254019250508190555050565b6000612c718261294f565b612cb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ca7906155c7565b60405180910390fd5b6000612cbb836115ed565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612d2a57508373ffffffffffffffffffffffffffffffffffffffff16612d1284610ce7565b73ffffffffffffffffffffffffffffffffffffffff16145b80612d3b5750612d3a81856121fa565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16612d64826115ed565b73ffffffffffffffffffffffffffffffffffffffff1614612dba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612db190615659565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612e2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e21906156eb565b60405180910390fd5b612e35838383613368565b612e406000826129bb565b6001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612e909190615415565b925050819055506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612ee7919061479b565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b80600081612fac6110f3565b612fb6919061479b565b905060001515601360019054906101000a900460ff1615151415612fe55760105481612fe2919061479b565b90505b60115481111561302a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130219061577d565b60405180910390fd5b600060016130366110f3565b613040919061479b565b905060005b848110156130755761306286828461305d919061479b565b612a82565b808061306d90614883565b915050613045565b505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61314c848484612d44565b6131588484848461347c565b613197576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161318e9061580f565b60405180910390fd5b50505050565b606060008214156131e5576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506132f9565b600082905060005b6000821461321757808061320090614883565b915050600a82613210919061585e565b91506131ed565b60008167ffffffffffffffff81111561323357613232613d2e565b5b6040519080825280601f01601f1916602001820160405280156132655781602001600182028036833780820191505090505b5090505b600085146132f25760018261327e9190615415565b9150600a8561328d919061588f565b6030613299919061479b565b60f81b8183815181106132af576132ae614aee565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856132eb919061585e565b9450613269565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b613373838383613604565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156133b6576133b181613609565b6133f5565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146133f4576133f38382613652565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561343857613433816137bf565b613477565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614613476576134758282613890565b5b5b505050565b600061349d8473ffffffffffffffffffffffffffffffffffffffff1661390f565b156135f7578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026134c6612865565b8786866040518563ffffffff1660e01b81526004016134e89493929190615915565b6020604051808303816000875af192505050801561352457506040513d601f19601f820116820180604052508101906135219190615976565b60015b6135a7573d8060008114613554576040519150601f19603f3d011682016040523d82523d6000602084013e613559565b606091505b5060008151141561359f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135969061580f565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506135fc565b600190505b949350505050565b505050565b6007805490506008600083815260200190815260200160002081905550600781908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161365f846118b7565b6136699190615415565b905060006009600084815260200190815260200160002054905081811461374e576000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816009600083815260200190815260200160002081905550505b6009600084815260200190815260200160002060009055600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016007805490506137d39190615415565b905060006008600084815260200190815260200160002054905060006007838154811061380357613802614aee565b5b90600052602060002001549050806007838154811061382557613824614aee565b5b906000526020600020018190555081600860008381526020019081526020016000208190555060086000858152602001908152602001600020600090556007805480613874576138736159a3565b5b6001900381819060005260206000200160009055905550505050565b600061389b836118b7565b905081600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806009600084815260200190815260200160002081905550505050565b600080823b905060008111915050919050565b82805461392e906144f2565b90600052602060002090601f0160209004810192826139505760008555613997565b82601f1061396957805160ff1916838001178555613997565b82800160010185558215613997579182015b8281111561399657825182559160200191906001019061397b565b5b5090506139a491906139a8565b5090565b5b808211156139c15760008160009055506001016139a9565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b613a0e816139d9565b8114613a1957600080fd5b50565b600081359050613a2b81613a05565b92915050565b600060208284031215613a4757613a466139cf565b5b6000613a5584828501613a1c565b91505092915050565b60008115159050919050565b613a7381613a5e565b82525050565b6000602082019050613a8e6000830184613a6a565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613ace578082015181840152602081019050613ab3565b83811115613add576000848401525b50505050565b6000601f19601f8301169050919050565b6000613aff82613a94565b613b098185613a9f565b9350613b19818560208601613ab0565b613b2281613ae3565b840191505092915050565b60006020820190508181036000830152613b478184613af4565b905092915050565b6000819050919050565b613b6281613b4f565b8114613b6d57600080fd5b50565b600081359050613b7f81613b59565b92915050565b600060208284031215613b9b57613b9a6139cf565b5b6000613ba984828501613b70565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613bdd82613bb2565b9050919050565b613bed81613bd2565b82525050565b6000602082019050613c086000830184613be4565b92915050565b613c1781613bd2565b8114613c2257600080fd5b50565b600081359050613c3481613c0e565b92915050565b60008060408385031215613c5157613c506139cf565b5b6000613c5f85828601613c25565b9250506020613c7085828601613b70565b9150509250929050565b600060208284031215613c9057613c8f6139cf565b5b6000613c9e84828501613c25565b91505092915050565b613cb081613b4f565b82525050565b6000602082019050613ccb6000830184613ca7565b92915050565b600080600060608486031215613cea57613ce96139cf565b5b6000613cf886828701613c25565b9350506020613d0986828701613c25565b9250506040613d1a86828701613b70565b9150509250925092565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613d6682613ae3565b810181811067ffffffffffffffff82111715613d8557613d84613d2e565b5b80604052505050565b6000613d986139c5565b9050613da48282613d5d565b919050565b600067ffffffffffffffff821115613dc457613dc3613d2e565b5b613dcd82613ae3565b9050602081019050919050565b82818337600083830152505050565b6000613dfc613df784613da9565b613d8e565b905082815260208101848484011115613e1857613e17613d29565b5b613e23848285613dda565b509392505050565b600082601f830112613e4057613e3f613d24565b5b8135613e50848260208601613de9565b91505092915050565b600060208284031215613e6f57613e6e6139cf565b5b600082013567ffffffffffffffff811115613e8d57613e8c6139d4565b5b613e9984828501613e2b565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613ed781613b4f565b82525050565b6000613ee98383613ece565b60208301905092915050565b6000602082019050919050565b6000613f0d82613ea2565b613f178185613ead565b9350613f2283613ebe565b8060005b83811015613f53578151613f3a8882613edd565b9750613f4583613ef5565b925050600181019050613f26565b5085935050505092915050565b60006020820190508181036000830152613f7a8184613f02565b905092915050565b600067ffffffffffffffff821115613f9d57613f9c613d2e565b5b602082029050602081019050919050565b600080fd5b6000613fc6613fc184613f82565b613d8e565b90508083825260208201905060208402830185811115613fe957613fe8613fae565b5b835b818110156140125780613ffe8882613c25565b845260208401935050602081019050613feb565b5050509392505050565b600082601f83011261403157614030613d24565b5b8135614041848260208601613fb3565b91505092915050565b600067ffffffffffffffff82111561406557614064613d2e565b5b602082029050602081019050919050565b60006140896140848461404a565b613d8e565b905080838252602082019050602084028301858111156140ac576140ab613fae565b5b835b818110156140d557806140c18882613b70565b8452602084019350506020810190506140ae565b5050509392505050565b600082601f8301126140f4576140f3613d24565b5b8135614104848260208601614076565b91505092915050565b60008060408385031215614124576141236139cf565b5b600083013567ffffffffffffffff811115614142576141416139d4565b5b61414e8582860161401c565b925050602083013567ffffffffffffffff81111561416f5761416e6139d4565b5b61417b858286016140df565b9150509250929050565b61418e81613a5e565b811461419957600080fd5b50565b6000813590506141ab81614185565b92915050565b600080604083850312156141c8576141c76139cf565b5b60006141d685828601613c25565b92505060206141e78582860161419c565b9150509250929050565b600067ffffffffffffffff82111561420c5761420b613d2e565b5b61421582613ae3565b9050602081019050919050565b6000614235614230846141f1565b613d8e565b90508281526020810184848401111561425157614250613d29565b5b61425c848285613dda565b509392505050565b600082601f83011261427957614278613d24565b5b8135614289848260208601614222565b91505092915050565b600080600080608085870312156142ac576142ab6139cf565b5b60006142ba87828801613c25565b94505060206142cb87828801613c25565b93505060406142dc87828801613b70565b925050606085013567ffffffffffffffff8111156142fd576142fc6139d4565b5b61430987828801614264565b91505092959194509250565b6000806040838503121561432c5761432b6139cf565b5b600061433a85828601613c25565b925050602061434b85828601613c25565b9150509250929050565b6000806040838503121561436c5761436b6139cf565b5b600061437a85828601613b70565b925050602061438b85828601613b70565b9150509250929050565b600060ff82169050919050565b6143ab81614395565b81146143b657600080fd5b50565b6000813590506143c8816143a2565b92915050565b600080604083850312156143e5576143e46139cf565b5b600083013567ffffffffffffffff811115614403576144026139d4565b5b61440f8582860161401c565b9250506020614420858286016143b9565b9150509250929050565b6000602082840312156144405761443f6139cf565b5b600061444e848285016143b9565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061448d602083613a9f565b915061449882614457565b602082019050919050565b600060208201905081810360008301526144bc81614480565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061450a57607f821691505b6020821081141561451e5761451d6144c3565b5b50919050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000614580602c83613a9f565b915061458b82614524565b604082019050919050565b600060208201905081810360008301526145af81614573565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000614612602183613a9f565b915061461d826145b6565b604082019050919050565b6000602082019050818103600083015261464181614605565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b60006146a4603883613a9f565b91506146af82614648565b604082019050919050565b600060208201905081810360008301526146d381614697565b9050919050565b7f52657365727665204e46543a20726573657276656420546f6b656e732068617660008201527f65206265656e206d696e74656400000000000000000000000000000000000000602082015250565b6000614736602d83613a9f565b9150614741826146da565b604082019050919050565b6000602082019050818103600083015261476581614729565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006147a682613b4f565b91506147b183613b4f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156147e6576147e561476c565b5b828201905092915050565b7f52657365727665204e46543a206e6f7420656e6f756768204e465473206c656660008201527f7420746f20726573657276650000000000000000000000000000000000000000602082015250565b600061484d602c83613a9f565b9150614858826147f1565b604082019050919050565b6000602082019050818103600083015261487c81614840565b9050919050565b600061488e82613b4f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156148c1576148c061476c565b5b600182019050919050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b6000614928603183613a9f565b9150614933826148cc565b604082019050919050565b600060208201905081810360008301526149578161491b565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b60006149ba602b83613a9f565b91506149c58261495e565b604082019050919050565b600060208201905081810360008301526149e9816149ad565b9050919050565b7f57697468647261773a20696e73756666696369656e742066756e64732e000000600082015250565b6000614a26601d83613a9f565b9150614a31826149f0565b602082019050919050565b60006020820190508181036000830152614a5581614a19565b9050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b6000614ab8602c83613a9f565b9150614ac382614a5c565b604082019050919050565b60006020820190508181036000830152614ae781614aab565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b6000614b79602983613a9f565b9150614b8482614b1d565b604082019050919050565b60006020820190508181036000830152614ba881614b6c565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b6000614c0b602a83613a9f565b9150614c1682614baf565b604082019050919050565b60006020820190508181036000830152614c3a81614bfe565b9050919050565b7f6d696e743a20636f6e7472616374207061757365640000000000000000000000600082015250565b6000614c77601583613a9f565b9150614c8282614c41565b602082019050919050565b60006020820190508181036000830152614ca681614c6a565b9050919050565b7f6d696e743a205075626c69632073616c65206973206e6f7420656e61626c656460008201527f2079657400000000000000000000000000000000000000000000000000000000602082015250565b6000614d09602483613a9f565b9150614d1482614cad565b604082019050919050565b60006020820190508181036000830152614d3881614cfc565b9050919050565b7f6d696e743a2043616e2774206d696e74206c657373207468616e20312e000000600082015250565b6000614d75601d83613a9f565b9150614d8082614d3f565b602082019050919050565b60006020820190508181036000830152614da481614d68565b9050919050565b7f6d696e743a2043616e2774206d696e74206d6f7265207468616e206d61784d6960008201527f6e74735065725472616e73616374696f6e2e0000000000000000000000000000602082015250565b6000614e07603283613a9f565b9150614e1282614dab565b604082019050919050565b60006020820190508181036000830152614e3681614dfa565b9050919050565b6000614e4882613b4f565b9150614e5383613b4f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614e8c57614e8b61476c565b5b828202905092915050565b7f6d696e743a20496e636f72726563742045746865722076616c75652e00000000600082015250565b6000614ecd601c83613a9f565b9150614ed882614e97565b602082019050919050565b60006020820190508181036000830152614efc81614ec0565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000614f39601983613a9f565b9150614f4482614f03565b602082019050919050565b60006020820190508181036000830152614f6881614f2c565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000614fcb602f83613a9f565b9150614fd682614f6f565b604082019050919050565b60006020820190508181036000830152614ffa81614fbe565b9050919050565b600081905092915050565b60008190508160005260206000209050919050565b6000815461502e816144f2565b6150388186615001565b94506001821660008114615053576001811461506457615097565b60ff19831686528186019350615097565b61506d8561500c565b60005b8381101561508f57815481890152600182019150602081019050615070565b838801955050505b50505092915050565b60006150ab82613a94565b6150b58185615001565b93506150c5818560208601613ab0565b80840191505092915050565b60006150dd8285615021565b91506150e982846150a0565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615151602683613a9f565b915061515c826150f5565b604082019050919050565b6000602082019050818103600083015261518081615144565b9050919050565b7f70726573616c654d696e743a20636f6e74726163742070617573656400000000600082015250565b60006151bd601c83613a9f565b91506151c882615187565b602082019050919050565b600060208201905081810360008301526151ec816151b0565b9050919050565b7f70726573616c654d696e743a2050726573616c65206973206e6f7420656e616260008201527f6c65642079657400000000000000000000000000000000000000000000000000602082015250565b600061524f602783613a9f565b915061525a826151f3565b604082019050919050565b6000602082019050818103600083015261527e81615242565b9050919050565b7f70726573616c654d696e743a2057726f6e672061646472657373000000000000600082015250565b60006152bb601a83613a9f565b91506152c682615285565b602082019050919050565b600060208201905081810360008301526152ea816152ae565b9050919050565b7f70726573616c654d696e743a204578636565646564206d617820617661696c6160008201527f626c6520746f2070757263686173650000000000000000000000000000000000602082015250565b600061534d602f83613a9f565b9150615358826152f1565b604082019050919050565b6000602082019050818103600083015261537c81615340565b9050919050565b7f70726573616c654d696e743a2050726573616c6520737570706c79206973206f60008201527f75742e0000000000000000000000000000000000000000000000000000000000602082015250565b60006153df602383613a9f565b91506153ea82615383565b604082019050919050565b6000602082019050818103600083015261540e816153d2565b9050919050565b600061542082613b4f565b915061542b83613b4f565b92508282101561543e5761543d61476c565b5b828203905092915050565b600061545482614395565b915061545f83614395565b9250828210156154725761547161476c565b5b828203905092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b60006154b3602083613a9f565b91506154be8261547d565b602082019050919050565b600060208201905081810360008301526154e2816154a6565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b600061551f601c83613a9f565b915061552a826154e9565b602082019050919050565b6000602082019050818103600083015261554e81615512565b9050919050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b60006155b1602c83613a9f565b91506155bc82615555565b604082019050919050565b600060208201905081810360008301526155e0816155a4565b9050919050565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b6000615643602983613a9f565b915061564e826155e7565b604082019050919050565b6000602082019050818103600083015261567281615636565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006156d5602483613a9f565b91506156e082615679565b604082019050919050565b60006020820190508181036000830152615704816156c8565b9050919050565b7f6d617820537570706c7920436865636b3a20546f6b656e7320737570706c792060008201527f72656163686564206c696d69742e000000000000000000000000000000000000602082015250565b6000615767602e83613a9f565b91506157728261570b565b604082019050919050565b600060208201905081810360008301526157968161575a565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b60006157f9603283613a9f565b91506158048261579d565b604082019050919050565b60006020820190508181036000830152615828816157ec565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061586982613b4f565b915061587483613b4f565b9250826158845761588361582f565b5b828204905092915050565b600061589a82613b4f565b91506158a583613b4f565b9250826158b5576158b461582f565b5b828206905092915050565b600081519050919050565b600082825260208201905092915050565b60006158e7826158c0565b6158f181856158cb565b9350615901818560208601613ab0565b61590a81613ae3565b840191505092915050565b600060808201905061592a6000830187613be4565b6159376020830186613be4565b6159446040830185613ca7565b818103606083015261595681846158dc565b905095945050505050565b60008151905061597081613a05565b92915050565b60006020828403121561598c5761598b6139cf565b5b600061599a84828501615961565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea264697066735822122052bd77dc4346a31cc9904b32f33da367382443d5b1d6674ecf0addb413c9ca5d64736f6c634300080b0033697066733a2f2f516d51324b4c67527953794c75564d577465645470546d7063784c4c37587477386d75334c64706f366a5156575a0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106102c85760003560e01c806364aa0c7911610175578063b023b315116100dc578063df63c48c11610095578063f2266d7f1161006f578063f2266d7f14610a9a578063f2fde38b14610ac3578063f3e3882114610aec578063f617f92014610b17576102c8565b8063df63c48c14610a09578063e985e9c514610a34578063ec5ed89b14610a71576102c8565b8063b023b3151461090d578063b3a196e914610936578063b88d4fde14610961578063c87b56dd1461098a578063d5abeb01146109c7578063ddc3faf8146109f2576102c8565b806379268b071161012e57806379268b07146108325780638da5cb5b1461085b57806395d89b4114610886578063a0712d68146108b1578063a22cb465146108cd578063a8b80b93146108f6576102c8565b806364aa0c791461072457806365bd6aa31461074f578063672434821461078c5780636f8b44b0146107b557806370a08231146107de578063715018a61461081b576102c8565b806322f3e2d4116102345780633ccfd60b116101ed57806344d19d2b116101c757806344d19d2b146106565780634f6ccce71461068157806355f804b3146106be5780636352211e146106e7576102c8565b80633ccfd60b146105ed57806342842e0e1461060457806344a0d68a1461062d576102c8565b806322f3e2d4146104db57806323b872dd146105065780632a9053181461052f5780632ab91bba1461055a5780632ae0846d146105855780632f745c59146105b0576102c8565b806311a67e771161028657806311a67e77146103db57806312fb92e0146103f257806313faede61461042f578063143b237f1461045a57806318160ddd1461048557806318821400146104b0576102c8565b8062acf348146102cd57806301ffc9a7146102e457806306fdde0314610321578063081812fc1461034c578063095ea7b3146103895780630e0682d4146103b2575b600080fd5b3480156102d957600080fd5b506102e2610b33565b005b3480156102f057600080fd5b5061030b60048036038101906103069190613a31565b610bdb565b6040516103189190613a79565b60405180910390f35b34801561032d57600080fd5b50610336610c55565b6040516103439190613b2d565b60405180910390f35b34801561035857600080fd5b50610373600480360381019061036e9190613b85565b610ce7565b6040516103809190613bf3565b60405180910390f35b34801561039557600080fd5b506103b060048036038101906103ab9190613c3a565b610d6c565b005b3480156103be57600080fd5b506103d960048036038101906103d49190613c7a565b610e84565b005b3480156103e757600080fd5b506103f0611012565b005b3480156103fe57600080fd5b5061041960048036038101906104149190613c7a565b6110ba565b6040516104269190613a79565b60405180910390f35b34801561043b57600080fd5b506104446110da565b6040516104519190613cb6565b60405180910390f35b34801561046657600080fd5b5061046f6110e0565b60405161047c9190613a79565b60405180910390f35b34801561049157600080fd5b5061049a6110f3565b6040516104a79190613cb6565b60405180910390f35b3480156104bc57600080fd5b506104c5611100565b6040516104d29190613b2d565b60405180910390f35b3480156104e757600080fd5b506104f0611139565b6040516104fd9190613a79565b60405180910390f35b34801561051257600080fd5b5061052d60048036038101906105289190613cd1565b61114c565b005b34801561053b57600080fd5b506105446111ac565b6040516105519190613b2d565b60405180910390f35b34801561056657600080fd5b5061056f6111e5565b60405161057c9190613a79565b60405180910390f35b34801561059157600080fd5b5061059a6111f8565b6040516105a79190613b2d565b60405180910390f35b3480156105bc57600080fd5b506105d760048036038101906105d29190613c3a565b611286565b6040516105e49190613cb6565b60405180910390f35b3480156105f957600080fd5b5061060261132b565b005b34801561061057600080fd5b5061062b60048036038101906106269190613cd1565b61143a565b005b34801561063957600080fd5b50610654600480360381019061064f9190613b85565b61145a565b005b34801561066257600080fd5b5061066b6114e0565b6040516106789190613cb6565b60405180910390f35b34801561068d57600080fd5b506106a860048036038101906106a39190613b85565b6114e6565b6040516106b59190613cb6565b60405180910390f35b3480156106ca57600080fd5b506106e560048036038101906106e09190613e59565b611557565b005b3480156106f357600080fd5b5061070e60048036038101906107099190613b85565b6115ed565b60405161071b9190613bf3565b60405180910390f35b34801561073057600080fd5b5061073961169f565b6040516107469190613cb6565b60405180910390f35b34801561075b57600080fd5b5061077660048036038101906107719190613c7a565b6116a5565b6040516107839190613f60565b60405180910390f35b34801561079857600080fd5b506107b360048036038101906107ae919061410d565b611753565b005b3480156107c157600080fd5b506107dc60048036038101906107d79190613b85565b611831565b005b3480156107ea57600080fd5b5061080560048036038101906108009190613c7a565b6118b7565b6040516108129190613cb6565b60405180910390f35b34801561082757600080fd5b5061083061196f565b005b34801561083e57600080fd5b5061085960048036038101906108549190613b85565b6119f7565b005b34801561086757600080fd5b50610870611a7d565b60405161087d9190613bf3565b60405180910390f35b34801561089257600080fd5b5061089b611aa6565b6040516108a89190613b2d565b60405180910390f35b6108cb60048036038101906108c69190613b85565b611b38565b005b3480156108d957600080fd5b506108f460048036038101906108ef91906141b1565b611cc2565b005b34801561090257600080fd5b5061090b611e43565b005b34801561091957600080fd5b50610934600480360381019061092f9190613e59565b611eeb565b005b34801561094257600080fd5b5061094b611f81565b6040516109589190613cb6565b60405180910390f35b34801561096d57600080fd5b5061098860048036038101906109839190614292565b611f87565b005b34801561099657600080fd5b506109b160048036038101906109ac9190613b85565b611fe9565b6040516109be9190613b2d565b60405180910390f35b3480156109d357600080fd5b506109dc612139565b6040516109e99190613cb6565b60405180910390f35b3480156109fe57600080fd5b50610a0761213f565b005b348015610a1557600080fd5b50610a1e6121e7565b604051610a2b9190613a79565b60405180910390f35b348015610a4057600080fd5b50610a5b6004803603810190610a569190614315565b6121fa565b604051610a689190613a79565b60405180910390f35b348015610a7d57600080fd5b50610a986004803603810190610a939190614355565b61228e565b005b348015610aa657600080fd5b50610ac16004803603810190610abc91906143ce565b61231c565b005b348015610acf57600080fd5b50610aea6004803603810190610ae59190613c7a565b6124a0565b005b348015610af857600080fd5b50610b01612598565b604051610b0e9190613a79565b60405180910390f35b610b316004803603810190610b2c919061442a565b6125ab565b005b610b3b612865565b73ffffffffffffffffffffffffffffffffffffffff16610b59611a7d565b73ffffffffffffffffffffffffffffffffffffffff1614610baf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba6906144a3565b60405180910390fd5b601660009054906101000a900460ff1615601660006101000a81548160ff021916908315150217905550565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610c4e5750610c4d8261286d565b5b9050919050565b606060018054610c64906144f2565b80601f0160208091040260200160405190810160405280929190818152602001828054610c90906144f2565b8015610cdd5780601f10610cb257610100808354040283529160200191610cdd565b820191906000526020600020905b815481529060010190602001808311610cc057829003601f168201915b5050505050905090565b6000610cf28261294f565b610d31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2890614596565b60405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610d77826115ed565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610de8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddf90614628565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610e07612865565b73ffffffffffffffffffffffffffffffffffffffff161480610e365750610e3581610e30612865565b6121fa565b5b610e75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6c906146ba565b60405180910390fd5b610e7f83836129bb565b505050565b610e8c612865565b73ffffffffffffffffffffffffffffffffffffffff16610eaa611a7d565b73ffffffffffffffffffffffffffffffffffffffff1614610f00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef7906144a3565b60405180910390fd5b60001515601360019054906101000a900460ff16151514610f56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4d9061474c565b60405180910390fd5b6000610f62600b612a74565b905060115460105482610f75919061479b565b10610fb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fac90614863565b60405180910390fd5b60005b601054811015610ff257610fd583610fd0600b612a74565b612a82565b610fdf600b612c50565b8080610fea90614883565b915050610fb8565b506001601360016101000a81548160ff0219169083151502179055505050565b61101a612865565b73ffffffffffffffffffffffffffffffffffffffff16611038611a7d565b73ffffffffffffffffffffffffffffffffffffffff161461108e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611085906144a3565b60405180910390fd5b601360009054906101000a900460ff1615601360006101000a81548160ff021916908315150217905550565b60146020528060005260406000206000915054906101000a900460ff1681565b600e5481565b601660009054906101000a900460ff1681565b6000600780549050905090565b6040518060400160405280601681526020017f5472697070792047656c61746f20437265616d6572790000000000000000000081525081565b601360009054906101000a900460ff1681565b61115d611157612865565b82612c66565b61119c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111939061493e565b60405180910390fd5b6111a7838383612d44565b505050565b6040518060400160405280600381526020017f544743000000000000000000000000000000000000000000000000000000000081525081565b601660019054906101000a900460ff1681565b600d8054611205906144f2565b80601f0160208091040260200160405190810160405280929190818152602001828054611231906144f2565b801561127e5780601f106112535761010080835404028352916020019161127e565b820191906000526020600020905b81548152906001019060200180831161126157829003601f168201915b505050505081565b6000611291836118b7565b82106112d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c9906149d0565b60405180910390fd5b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b611333612865565b73ffffffffffffffffffffffffffffffffffffffff16611351611a7d565b73ffffffffffffffffffffffffffffffffffffffff16146113a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139e906144a3565b60405180910390fd5b600047116113ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e190614a3c565b60405180910390fd5b6113f2612865565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611437573d6000803e3d6000fd5b50565b61145583838360405180602001604052806000815250611f87565b505050565b611462612865565b73ffffffffffffffffffffffffffffffffffffffff16611480611a7d565b73ffffffffffffffffffffffffffffffffffffffff16146114d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cd906144a3565b60405180910390fd5b80600e8190555050565b60105481565b60006114f06110f3565b8210611531576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152890614ace565b60405180910390fd5b6007828154811061154557611544614aee565b5b90600052602060002001549050919050565b61155f612865565b73ffffffffffffffffffffffffffffffffffffffff1661157d611a7d565b73ffffffffffffffffffffffffffffffffffffffff16146115d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ca906144a3565b60405180910390fd5b80600c90805190602001906115e9929190613922565b5050565b6000806003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611696576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168d90614b8f565b60405180910390fd5b80915050919050565b60125481565b606060006116b2836118b7565b905060008167ffffffffffffffff8111156116d0576116cf613d2e565b5b6040519080825280602002602001820160405280156116fe5781602001602082028036833780820191505090505b50905060005b82811015611748576117168582611286565b82828151811061172957611728614aee565b5b602002602001018181525050808061174090614883565b915050611704565b508092505050919050565b61175b612865565b73ffffffffffffffffffffffffffffffffffffffff16611779611a7d565b73ffffffffffffffffffffffffffffffffffffffff16146117cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c6906144a3565b60405180910390fd5b60005b825181101561182c576118198382815181106117f1576117f0614aee565b5b602002602001015183838151811061180c5761180b614aee565b5b6020026020010151612fa0565b808061182490614883565b9150506117d2565b505050565b611839612865565b73ffffffffffffffffffffffffffffffffffffffff16611857611a7d565b73ffffffffffffffffffffffffffffffffffffffff16146118ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a4906144a3565b60405180910390fd5b8060118190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611928576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191f90614c21565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611977612865565b73ffffffffffffffffffffffffffffffffffffffff16611995611a7d565b73ffffffffffffffffffffffffffffffffffffffff16146119eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e2906144a3565b60405180910390fd5b6119f5600061307d565b565b6119ff612865565b73ffffffffffffffffffffffffffffffffffffffff16611a1d611a7d565b73ffffffffffffffffffffffffffffffffffffffff1614611a73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6a906144a3565b60405180910390fd5b8060128190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060028054611ab5906144f2565b80601f0160208091040260200160405190810160405280929190818152602001828054611ae1906144f2565b8015611b2e5780601f10611b0357610100808354040283529160200191611b2e565b820191906000526020600020905b815481529060010190602001808311611b1157829003601f168201915b5050505050905090565b601360009054906101000a900460ff16611b87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7e90614c8d565b60405180910390fd5b60011515601660019054906101000a900460ff16151514611bdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd490614d1f565b60405180910390fd5b60008111611c20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1790614d8b565b60405180910390fd5b601254811115611c65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5c90614e1d565b60405180910390fd5b3481600e54611c749190614e3d565b1115611cb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cac90614ee3565b60405180910390fd5b611cbf3382612fa0565b50565b611cca612865565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2f90614f4f565b60405180910390fd5b8060066000611d45612865565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611df2612865565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611e379190613a79565b60405180910390a35050565b611e4b612865565b73ffffffffffffffffffffffffffffffffffffffff16611e69611a7d565b73ffffffffffffffffffffffffffffffffffffffff1614611ebf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb6906144a3565b60405180910390fd5b601660019054906101000a900460ff1615601660016101000a81548160ff021916908315150217905550565b611ef3612865565b73ffffffffffffffffffffffffffffffffffffffff16611f11611a7d565b73ffffffffffffffffffffffffffffffffffffffff1614611f67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5e906144a3565b60405180910390fd5b80600d9080519060200190611f7d929190613922565b5050565b600f5481565b611f98611f92612865565b83612c66565b611fd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fce9061493e565b60405180910390fd5b611fe384848484613141565b50505050565b6060611ff48261294f565b612033576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202a90614fe1565b60405180910390fd5b601360029054906101000a900460ff16156120a6576000600c8054612057906144f2565b905011612073576040518060200160405280600081525061209f565b600c61207e8361319d565b60405160200161208f9291906150d1565b6040516020818303038152906040525b9050612134565b600d80546120b3906144f2565b80601f01602080910402602001604051908101604052809291908181526020018280546120df906144f2565b801561212c5780601f106121015761010080835404028352916020019161212c565b820191906000526020600020905b81548152906001019060200180831161210f57829003601f168201915b505050505090505b919050565b60115481565b612147612865565b73ffffffffffffffffffffffffffffffffffffffff16612165611a7d565b73ffffffffffffffffffffffffffffffffffffffff16146121bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b2906144a3565b60405180910390fd5b601360029054906101000a900460ff1615601360026101000a81548160ff021916908315150217905550565b601360029054906101000a900460ff1681565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b612296612865565b73ffffffffffffffffffffffffffffffffffffffff166122b4611a7d565b73ffffffffffffffffffffffffffffffffffffffff161461230a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612301906144a3565b60405180910390fd5b81600f81905550806010819055505050565b612324612865565b73ffffffffffffffffffffffffffffffffffffffff16612342611a7d565b73ffffffffffffffffffffffffffffffffffffffff1614612398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238f906144a3565b60405180910390fd5b60005b825181101561249b576001601460008584815181106123bd576123bc614aee565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550816015600085848151811061242e5761242d614aee565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff160217905550808061249390614883565b91505061239b565b505050565b6124a8612865565b73ffffffffffffffffffffffffffffffffffffffff166124c6611a7d565b73ffffffffffffffffffffffffffffffffffffffff161461251c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612513906144a3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561258c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258390615167565b60405180910390fd5b6125958161307d565b50565b601360019054906101000a900460ff1681565b601360009054906101000a900460ff166125fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f1906151d3565b60405180910390fd5b60011515601660009054906101000a900460ff16151514612650576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264790615265565b60405180910390fd5b6000601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905060011515811515146126e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126df906152d1565b60405180910390fd5b601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff168260ff16111561277d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277490615363565b60405180910390fd5b600f548260ff1611156127c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127bc906153f5565b60405180910390fd5b8160ff16600f60008282546127da9190615415565b9250508190555081601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282829054906101000a900460ff1661283c9190615449565b92506101000a81548160ff021916908360ff160217905550612861338360ff16612fa0565b5050565b600033905090565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061293857507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806129485750612947826132fe565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16612a2e836115ed565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600081600001549050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612af2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae9906154c9565b60405180910390fd5b612afb8161294f565b15612b3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3290615535565b60405180910390fd5b612b4760008383613368565b6001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612b97919061479b565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6001816000016000828254019250508190555050565b6000612c718261294f565b612cb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ca7906155c7565b60405180910390fd5b6000612cbb836115ed565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612d2a57508373ffffffffffffffffffffffffffffffffffffffff16612d1284610ce7565b73ffffffffffffffffffffffffffffffffffffffff16145b80612d3b5750612d3a81856121fa565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16612d64826115ed565b73ffffffffffffffffffffffffffffffffffffffff1614612dba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612db190615659565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612e2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e21906156eb565b60405180910390fd5b612e35838383613368565b612e406000826129bb565b6001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612e909190615415565b925050819055506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612ee7919061479b565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b80600081612fac6110f3565b612fb6919061479b565b905060001515601360019054906101000a900460ff1615151415612fe55760105481612fe2919061479b565b90505b60115481111561302a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130219061577d565b60405180910390fd5b600060016130366110f3565b613040919061479b565b905060005b848110156130755761306286828461305d919061479b565b612a82565b808061306d90614883565b915050613045565b505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61314c848484612d44565b6131588484848461347c565b613197576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161318e9061580f565b60405180910390fd5b50505050565b606060008214156131e5576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506132f9565b600082905060005b6000821461321757808061320090614883565b915050600a82613210919061585e565b91506131ed565b60008167ffffffffffffffff81111561323357613232613d2e565b5b6040519080825280601f01601f1916602001820160405280156132655781602001600182028036833780820191505090505b5090505b600085146132f25760018261327e9190615415565b9150600a8561328d919061588f565b6030613299919061479b565b60f81b8183815181106132af576132ae614aee565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856132eb919061585e565b9450613269565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b613373838383613604565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156133b6576133b181613609565b6133f5565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146133f4576133f38382613652565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561343857613433816137bf565b613477565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614613476576134758282613890565b5b5b505050565b600061349d8473ffffffffffffffffffffffffffffffffffffffff1661390f565b156135f7578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026134c6612865565b8786866040518563ffffffff1660e01b81526004016134e89493929190615915565b6020604051808303816000875af192505050801561352457506040513d601f19601f820116820180604052508101906135219190615976565b60015b6135a7573d8060008114613554576040519150601f19603f3d011682016040523d82523d6000602084013e613559565b606091505b5060008151141561359f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135969061580f565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506135fc565b600190505b949350505050565b505050565b6007805490506008600083815260200190815260200160002081905550600781908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161365f846118b7565b6136699190615415565b905060006009600084815260200190815260200160002054905081811461374e576000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816009600083815260200190815260200160002081905550505b6009600084815260200190815260200160002060009055600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016007805490506137d39190615415565b905060006008600084815260200190815260200160002054905060006007838154811061380357613802614aee565b5b90600052602060002001549050806007838154811061382557613824614aee565b5b906000526020600020018190555081600860008381526020019081526020016000208190555060086000858152602001908152602001600020600090556007805480613874576138736159a3565b5b6001900381819060005260206000200160009055905550505050565b600061389b836118b7565b905081600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806009600084815260200190815260200160002081905550505050565b600080823b905060008111915050919050565b82805461392e906144f2565b90600052602060002090601f0160209004810192826139505760008555613997565b82601f1061396957805160ff1916838001178555613997565b82800160010185558215613997579182015b8281111561399657825182559160200191906001019061397b565b5b5090506139a491906139a8565b5090565b5b808211156139c15760008160009055506001016139a9565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b613a0e816139d9565b8114613a1957600080fd5b50565b600081359050613a2b81613a05565b92915050565b600060208284031215613a4757613a466139cf565b5b6000613a5584828501613a1c565b91505092915050565b60008115159050919050565b613a7381613a5e565b82525050565b6000602082019050613a8e6000830184613a6a565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613ace578082015181840152602081019050613ab3565b83811115613add576000848401525b50505050565b6000601f19601f8301169050919050565b6000613aff82613a94565b613b098185613a9f565b9350613b19818560208601613ab0565b613b2281613ae3565b840191505092915050565b60006020820190508181036000830152613b478184613af4565b905092915050565b6000819050919050565b613b6281613b4f565b8114613b6d57600080fd5b50565b600081359050613b7f81613b59565b92915050565b600060208284031215613b9b57613b9a6139cf565b5b6000613ba984828501613b70565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613bdd82613bb2565b9050919050565b613bed81613bd2565b82525050565b6000602082019050613c086000830184613be4565b92915050565b613c1781613bd2565b8114613c2257600080fd5b50565b600081359050613c3481613c0e565b92915050565b60008060408385031215613c5157613c506139cf565b5b6000613c5f85828601613c25565b9250506020613c7085828601613b70565b9150509250929050565b600060208284031215613c9057613c8f6139cf565b5b6000613c9e84828501613c25565b91505092915050565b613cb081613b4f565b82525050565b6000602082019050613ccb6000830184613ca7565b92915050565b600080600060608486031215613cea57613ce96139cf565b5b6000613cf886828701613c25565b9350506020613d0986828701613c25565b9250506040613d1a86828701613b70565b9150509250925092565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613d6682613ae3565b810181811067ffffffffffffffff82111715613d8557613d84613d2e565b5b80604052505050565b6000613d986139c5565b9050613da48282613d5d565b919050565b600067ffffffffffffffff821115613dc457613dc3613d2e565b5b613dcd82613ae3565b9050602081019050919050565b82818337600083830152505050565b6000613dfc613df784613da9565b613d8e565b905082815260208101848484011115613e1857613e17613d29565b5b613e23848285613dda565b509392505050565b600082601f830112613e4057613e3f613d24565b5b8135613e50848260208601613de9565b91505092915050565b600060208284031215613e6f57613e6e6139cf565b5b600082013567ffffffffffffffff811115613e8d57613e8c6139d4565b5b613e9984828501613e2b565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613ed781613b4f565b82525050565b6000613ee98383613ece565b60208301905092915050565b6000602082019050919050565b6000613f0d82613ea2565b613f178185613ead565b9350613f2283613ebe565b8060005b83811015613f53578151613f3a8882613edd565b9750613f4583613ef5565b925050600181019050613f26565b5085935050505092915050565b60006020820190508181036000830152613f7a8184613f02565b905092915050565b600067ffffffffffffffff821115613f9d57613f9c613d2e565b5b602082029050602081019050919050565b600080fd5b6000613fc6613fc184613f82565b613d8e565b90508083825260208201905060208402830185811115613fe957613fe8613fae565b5b835b818110156140125780613ffe8882613c25565b845260208401935050602081019050613feb565b5050509392505050565b600082601f83011261403157614030613d24565b5b8135614041848260208601613fb3565b91505092915050565b600067ffffffffffffffff82111561406557614064613d2e565b5b602082029050602081019050919050565b60006140896140848461404a565b613d8e565b905080838252602082019050602084028301858111156140ac576140ab613fae565b5b835b818110156140d557806140c18882613b70565b8452602084019350506020810190506140ae565b5050509392505050565b600082601f8301126140f4576140f3613d24565b5b8135614104848260208601614076565b91505092915050565b60008060408385031215614124576141236139cf565b5b600083013567ffffffffffffffff811115614142576141416139d4565b5b61414e8582860161401c565b925050602083013567ffffffffffffffff81111561416f5761416e6139d4565b5b61417b858286016140df565b9150509250929050565b61418e81613a5e565b811461419957600080fd5b50565b6000813590506141ab81614185565b92915050565b600080604083850312156141c8576141c76139cf565b5b60006141d685828601613c25565b92505060206141e78582860161419c565b9150509250929050565b600067ffffffffffffffff82111561420c5761420b613d2e565b5b61421582613ae3565b9050602081019050919050565b6000614235614230846141f1565b613d8e565b90508281526020810184848401111561425157614250613d29565b5b61425c848285613dda565b509392505050565b600082601f83011261427957614278613d24565b5b8135614289848260208601614222565b91505092915050565b600080600080608085870312156142ac576142ab6139cf565b5b60006142ba87828801613c25565b94505060206142cb87828801613c25565b93505060406142dc87828801613b70565b925050606085013567ffffffffffffffff8111156142fd576142fc6139d4565b5b61430987828801614264565b91505092959194509250565b6000806040838503121561432c5761432b6139cf565b5b600061433a85828601613c25565b925050602061434b85828601613c25565b9150509250929050565b6000806040838503121561436c5761436b6139cf565b5b600061437a85828601613b70565b925050602061438b85828601613b70565b9150509250929050565b600060ff82169050919050565b6143ab81614395565b81146143b657600080fd5b50565b6000813590506143c8816143a2565b92915050565b600080604083850312156143e5576143e46139cf565b5b600083013567ffffffffffffffff811115614403576144026139d4565b5b61440f8582860161401c565b9250506020614420858286016143b9565b9150509250929050565b6000602082840312156144405761443f6139cf565b5b600061444e848285016143b9565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061448d602083613a9f565b915061449882614457565b602082019050919050565b600060208201905081810360008301526144bc81614480565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061450a57607f821691505b6020821081141561451e5761451d6144c3565b5b50919050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000614580602c83613a9f565b915061458b82614524565b604082019050919050565b600060208201905081810360008301526145af81614573565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000614612602183613a9f565b915061461d826145b6565b604082019050919050565b6000602082019050818103600083015261464181614605565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b60006146a4603883613a9f565b91506146af82614648565b604082019050919050565b600060208201905081810360008301526146d381614697565b9050919050565b7f52657365727665204e46543a20726573657276656420546f6b656e732068617660008201527f65206265656e206d696e74656400000000000000000000000000000000000000602082015250565b6000614736602d83613a9f565b9150614741826146da565b604082019050919050565b6000602082019050818103600083015261476581614729565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006147a682613b4f565b91506147b183613b4f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156147e6576147e561476c565b5b828201905092915050565b7f52657365727665204e46543a206e6f7420656e6f756768204e465473206c656660008201527f7420746f20726573657276650000000000000000000000000000000000000000602082015250565b600061484d602c83613a9f565b9150614858826147f1565b604082019050919050565b6000602082019050818103600083015261487c81614840565b9050919050565b600061488e82613b4f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156148c1576148c061476c565b5b600182019050919050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b6000614928603183613a9f565b9150614933826148cc565b604082019050919050565b600060208201905081810360008301526149578161491b565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b60006149ba602b83613a9f565b91506149c58261495e565b604082019050919050565b600060208201905081810360008301526149e9816149ad565b9050919050565b7f57697468647261773a20696e73756666696369656e742066756e64732e000000600082015250565b6000614a26601d83613a9f565b9150614a31826149f0565b602082019050919050565b60006020820190508181036000830152614a5581614a19565b9050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b6000614ab8602c83613a9f565b9150614ac382614a5c565b604082019050919050565b60006020820190508181036000830152614ae781614aab565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b6000614b79602983613a9f565b9150614b8482614b1d565b604082019050919050565b60006020820190508181036000830152614ba881614b6c565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b6000614c0b602a83613a9f565b9150614c1682614baf565b604082019050919050565b60006020820190508181036000830152614c3a81614bfe565b9050919050565b7f6d696e743a20636f6e7472616374207061757365640000000000000000000000600082015250565b6000614c77601583613a9f565b9150614c8282614c41565b602082019050919050565b60006020820190508181036000830152614ca681614c6a565b9050919050565b7f6d696e743a205075626c69632073616c65206973206e6f7420656e61626c656460008201527f2079657400000000000000000000000000000000000000000000000000000000602082015250565b6000614d09602483613a9f565b9150614d1482614cad565b604082019050919050565b60006020820190508181036000830152614d3881614cfc565b9050919050565b7f6d696e743a2043616e2774206d696e74206c657373207468616e20312e000000600082015250565b6000614d75601d83613a9f565b9150614d8082614d3f565b602082019050919050565b60006020820190508181036000830152614da481614d68565b9050919050565b7f6d696e743a2043616e2774206d696e74206d6f7265207468616e206d61784d6960008201527f6e74735065725472616e73616374696f6e2e0000000000000000000000000000602082015250565b6000614e07603283613a9f565b9150614e1282614dab565b604082019050919050565b60006020820190508181036000830152614e3681614dfa565b9050919050565b6000614e4882613b4f565b9150614e5383613b4f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614e8c57614e8b61476c565b5b828202905092915050565b7f6d696e743a20496e636f72726563742045746865722076616c75652e00000000600082015250565b6000614ecd601c83613a9f565b9150614ed882614e97565b602082019050919050565b60006020820190508181036000830152614efc81614ec0565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000614f39601983613a9f565b9150614f4482614f03565b602082019050919050565b60006020820190508181036000830152614f6881614f2c565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000614fcb602f83613a9f565b9150614fd682614f6f565b604082019050919050565b60006020820190508181036000830152614ffa81614fbe565b9050919050565b600081905092915050565b60008190508160005260206000209050919050565b6000815461502e816144f2565b6150388186615001565b94506001821660008114615053576001811461506457615097565b60ff19831686528186019350615097565b61506d8561500c565b60005b8381101561508f57815481890152600182019150602081019050615070565b838801955050505b50505092915050565b60006150ab82613a94565b6150b58185615001565b93506150c5818560208601613ab0565b80840191505092915050565b60006150dd8285615021565b91506150e982846150a0565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615151602683613a9f565b915061515c826150f5565b604082019050919050565b6000602082019050818103600083015261518081615144565b9050919050565b7f70726573616c654d696e743a20636f6e74726163742070617573656400000000600082015250565b60006151bd601c83613a9f565b91506151c882615187565b602082019050919050565b600060208201905081810360008301526151ec816151b0565b9050919050565b7f70726573616c654d696e743a2050726573616c65206973206e6f7420656e616260008201527f6c65642079657400000000000000000000000000000000000000000000000000602082015250565b600061524f602783613a9f565b915061525a826151f3565b604082019050919050565b6000602082019050818103600083015261527e81615242565b9050919050565b7f70726573616c654d696e743a2057726f6e672061646472657373000000000000600082015250565b60006152bb601a83613a9f565b91506152c682615285565b602082019050919050565b600060208201905081810360008301526152ea816152ae565b9050919050565b7f70726573616c654d696e743a204578636565646564206d617820617661696c6160008201527f626c6520746f2070757263686173650000000000000000000000000000000000602082015250565b600061534d602f83613a9f565b9150615358826152f1565b604082019050919050565b6000602082019050818103600083015261537c81615340565b9050919050565b7f70726573616c654d696e743a2050726573616c6520737570706c79206973206f60008201527f75742e0000000000000000000000000000000000000000000000000000000000602082015250565b60006153df602383613a9f565b91506153ea82615383565b604082019050919050565b6000602082019050818103600083015261540e816153d2565b9050919050565b600061542082613b4f565b915061542b83613b4f565b92508282101561543e5761543d61476c565b5b828203905092915050565b600061545482614395565b915061545f83614395565b9250828210156154725761547161476c565b5b828203905092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b60006154b3602083613a9f565b91506154be8261547d565b602082019050919050565b600060208201905081810360008301526154e2816154a6565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b600061551f601c83613a9f565b915061552a826154e9565b602082019050919050565b6000602082019050818103600083015261554e81615512565b9050919050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b60006155b1602c83613a9f565b91506155bc82615555565b604082019050919050565b600060208201905081810360008301526155e0816155a4565b9050919050565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b6000615643602983613a9f565b915061564e826155e7565b604082019050919050565b6000602082019050818103600083015261567281615636565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006156d5602483613a9f565b91506156e082615679565b604082019050919050565b60006020820190508181036000830152615704816156c8565b9050919050565b7f6d617820537570706c7920436865636b3a20546f6b656e7320737570706c792060008201527f72656163686564206c696d69742e000000000000000000000000000000000000602082015250565b6000615767602e83613a9f565b91506157728261570b565b604082019050919050565b600060208201905081810360008301526157968161575a565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b60006157f9603283613a9f565b91506158048261579d565b604082019050919050565b60006020820190508181036000830152615828816157ec565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061586982613b4f565b915061587483613b4f565b9250826158845761588361582f565b5b828204905092915050565b600061589a82613b4f565b91506158a583613b4f565b9250826158b5576158b461582f565b5b828206905092915050565b600081519050919050565b600082825260208201905092915050565b60006158e7826158c0565b6158f181856158cb565b9350615901818560208601613ab0565b61590a81613ae3565b840191505092915050565b600060808201905061592a6000830187613be4565b6159376020830186613be4565b6159446040830185613ca7565b818103606083015261595681846158dc565b905095945050505050565b60008151905061597081613a05565b92915050565b60006020828403121561598c5761598b6139cf565b5b600061599a84828501615961565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea264697066735822122052bd77dc4346a31cc9904b32f33da367382443d5b1d6674ecf0addb413c9ca5d64736f6c634300080b0033

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

0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _initBaseURI (string): hello

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [2] : 68656c6c6f000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

19080:6370:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24036:91;;;;;;;;;;;;;:::i;:::-;;15341:224;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9116:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10193:219;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9778:407;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21521:516;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22045:85;;;;;;;;;;;;;:::i;:::-;;19880:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19542:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20005:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15837:113;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19246:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19754:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10893:250;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19313:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20046:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19437:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15573:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22503:189;;;;;;;;;;;;;:::i;:::-;;11151:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20532:86;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19625:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15958:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20359:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8869:239;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19704:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22138:357;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24820:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20932:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8653:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18598:94;;;;;;;;;;;;;:::i;:::-;;21046:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18503:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9224:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22731:509;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10420:293;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24135:100;;;;;;;;;;;;;:::i;:::-;;20626:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19583:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11310:285;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25044:382;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19666:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23930:98;;;;;;;;;;;;;:::i;:::-;;19837:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10721:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20740:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21212:284;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18700:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19788:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23248:674;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24036:91;18426:12;:10;:12::i;:::-;18415:23;;:7;:5;:7::i;:::-;:23;;;18407:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24105:14:::1;;;;;;;;;;;24104:15;24087:14;;:32;;;;;;;;;;;;;;;;;;24036:91::o:0;15341:224::-;15443:4;15482:35;15467:50;;;:11;:50;;;;:90;;;;15521:36;15545:11;15521:23;:36::i;:::-;15467:90;15460:97;;15341:224;;;:::o;9116:100::-;9170:13;9203:5;9196:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9116:100;:::o;10193:219::-;10269:7;10297:16;10305:7;10297;:16::i;:::-;10289:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;10380:15;:24;10396:7;10380:24;;;;;;;;;;;;;;;;;;;;;10373:31;;10193:219;;;:::o;9778:407::-;9859:13;9875:23;9890:7;9875:14;:23::i;:::-;9859:39;;9923:5;9917:11;;:2;:11;;;;9909:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;10015:5;9999:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;10024:37;10041:5;10048:12;:10;:12::i;:::-;10024:16;:37::i;:::-;9999:62;9977:168;;;;;;;;;;;;:::i;:::-;;;;;;;;;10156:21;10165:2;10169:7;10156:8;:21::i;:::-;9848:337;9778:407;;:::o;21521:516::-;18426:12;:10;:12::i;:::-;18415:23;;:7;:5;:7::i;:::-;:23;;;18407:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21614:5:::1;21590:29;;:20;;;;;;;;;;;:29;;;21582:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;21680:16;21699:25;:15;:23;:25::i;:::-;21680:44;;21774:9;;21757:14;;21743:11;:28;;;;:::i;:::-;:40;21735:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;21850:6;21845:147;21866:14;;21862:1;:18;21845:147;;;21902:36;21908:2;21912:25;:15;:23;:25::i;:::-;21902:5;:36::i;:::-;21953:27;:15;:25;:27::i;:::-;21882:3;;;;;:::i;:::-;;;;21845:147;;;;22025:4;22002:20;;:27;;;;;;;;;;;;;;;;;;21571:466;21521:516:::0;:::o;22045:85::-;18426:12;:10;:12::i;:::-;18415:23;;:7;:5;:7::i;:::-;:23;;;18407:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22114:8:::1;;;;;;;;;;;22113:9;22102:8;;:20;;;;;;;;;;;;;;;;;;22045:85::o:0;19880:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;19542:32::-;;;;:::o;20005:34::-;;;;;;;;;;;;;:::o;15837:113::-;15898:7;15925:10;:17;;;;15918:24;;15837:113;:::o;19246:60::-;;;;;;;;;;;;;;;;;;;:::o;19754:27::-;;;;;;;;;;;;;:::o;10893:250::-;11001:41;11020:12;:10;:12::i;:::-;11034:7;11001:18;:41::i;:::-;10993:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;11107:28;11117:4;11123:2;11127:7;11107:9;:28::i;:::-;10893:250;;;:::o;19313:43::-;;;;;;;;;;;;;;;;;;;:::o;20046:37::-;;;;;;;;;;;;;:::o;19437:85::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;15573:256::-;15670:7;15706:23;15723:5;15706:16;:23::i;:::-;15698:5;:31;15690:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;15795:12;:19;15808:5;15795:19;;;;;;;;;;;;;;;:26;15815:5;15795:26;;;;;;;;;;;;15788:33;;15573:256;;;;:::o;22503:189::-;18426:12;:10;:12::i;:::-;18415:23;;:7;:5;:7::i;:::-;:23;;;18407:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22585:1:::1;22561:21;:25;22553:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22639:12;:10;:12::i;:::-;22631:30;;:53;22662:21;22631:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;22503:189::o:0;11151:151::-;11255:39;11272:4;11278:2;11282:7;11255:39;;;;;;;;;;;;:16;:39::i;:::-;11151:151;;;:::o;20532:86::-;18426:12;:10;:12::i;:::-;18415:23;;:7;:5;:7::i;:::-;:23;;;18407:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20602:8:::1;20595:4;:15;;;;20532:86:::0;:::o;19625:34::-;;;;:::o;15958:233::-;16033:7;16069:30;:28;:30::i;:::-;16061:5;:38;16053:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;16166:10;16177:5;16166:17;;;;;;;;:::i;:::-;;;;;;;;;;16159:24;;15958:233;;;:::o;20359:104::-;18426:12;:10;:12::i;:::-;18415:23;;:7;:5;:7::i;:::-;:23;;;18407:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20444:11:::1;20434:7;:21;;;;;;;;;;;;:::i;:::-;;20359:104:::0;:::o;8869:239::-;8941:7;8961:13;8977:7;:16;8985:7;8977:16;;;;;;;;;;;;;;;;;;;;;8961:32;;9029:1;9012:19;;:5;:19;;;;9004:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;9095:5;9088:12;;;8869:239;;;:::o;19704:41::-;;;;:::o;22138:357::-;22208:16;22237:14;22254:18;22264:7;22254:9;:18::i;:::-;22237:35;;22285:29;22331:6;22317:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22285:53;;22354:9;22349:107;22368:6;22364:1;:10;22349:107;;;22413:31;22433:7;22442:1;22413:19;:31::i;:::-;22395:12;22408:1;22395:15;;;;;;;;:::i;:::-;;;;;;;:49;;;;;22375:3;;;;;:::i;:::-;;;;22349:107;;;;22475:12;22468:19;;;;22138:357;;;:::o;24820:216::-;18426:12;:10;:12::i;:::-;18415:23;;:7;:5;:7::i;:::-;:23;;;18407:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24926:9:::1;24921:108;24945:9;:16;24941:1;:20;24921:108;;;24983:34;24992:9;25002:1;24992:12;;;;;;;;:::i;:::-;;;;;;;;25006:7;25014:1;25006:10;;;;;;;;:::i;:::-;;;;;;;;24983:8;:34::i;:::-;24963:3;;;;;:::i;:::-;;;;24921:108;;;;24820:216:::0;;:::o;20932:106::-;18426:12;:10;:12::i;:::-;18415:23;;:7;:5;:7::i;:::-;:23;;;18407:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21017:13:::1;21005:9;:25;;;;20932:106:::0;:::o;8653:208::-;8725:7;8770:1;8753:19;;:5;:19;;;;8745:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;8837:9;:16;8847:5;8837:16;;;;;;;;;;;;;;;;8830:23;;8653:208;;;:::o;18598:94::-;18426:12;:10;:12::i;:::-;18415:23;;:7;:5;:7::i;:::-;:23;;;18407:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18663:21:::1;18681:1;18663:9;:21::i;:::-;18598:94::o:0;21046:158::-;18426:12;:10;:12::i;:::-;18415:23;;:7;:5;:7::i;:::-;:23;;;18407:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21170:26:::1;21145:22;:51;;;;21046:158:::0;:::o;18503:87::-;18549:7;18576:6;;;;;;;;;;;18569:13;;18503:87;:::o;9224:104::-;9280:13;9313:7;9306:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9224:104;:::o;22731:509::-;22800:8;;;;;;;;;;;22792:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;22881:4;22860:25;;:17;;;;;;;;;;;:25;;;22852:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;22959:1;22945:11;:15;22937:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;23028:22;;23013:11;:37;;23005:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;23146:9;23131:11;23124:4;;:18;;;;:::i;:::-;:31;;23116:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;23199:33;23208:10;23220:11;23199:8;:33::i;:::-;22731:509;:::o;10420:293::-;10535:12;:10;:12::i;:::-;10523:24;;:8;:24;;;;10515:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;10633:8;10588:18;:32;10607:12;:10;:12::i;:::-;10588:32;;;;;;;;;;;;;;;:42;10621:8;10588:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;10686:8;10657:48;;10672:12;:10;:12::i;:::-;10657:48;;;10696:8;10657:48;;;;;;:::i;:::-;;;;;;;;10420:293;;:::o;24135:100::-;18426:12;:10;:12::i;:::-;18415:23;;:7;:5;:7::i;:::-;:23;;;18407:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24210:17:::1;;;;;;;;;;;24209:18;24189:17;;:38;;;;;;;;;;;;;;;;;;24135:100::o:0;20626:106::-;18426:12;:10;:12::i;:::-;18415:23;;:7;:5;:7::i;:::-;:23;;;18407:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20717:7:::1;20701:13;:23;;;;;;;;;;;;:::i;:::-;;20626:106:::0;:::o;19583:35::-;;;;:::o;11310:285::-;11442:41;11461:12;:10;:12::i;:::-;11475:7;11442:18;:41::i;:::-;11434:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;11548:39;11562:4;11568:2;11572:7;11581:5;11548:13;:39::i;:::-;11310:285;;;;:::o;25044:382::-;25117:13;25151:16;25159:7;25151;:16::i;:::-;25143:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;25233:14;;;;;;;;;;;25230:189;;;25294:1;25276:7;25270:21;;;;;:::i;:::-;;;:25;:86;;;;;;;;;;;;;;;;;25322:7;25331:18;:7;:16;:18::i;:::-;25305:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;25270:86;25263:93;;;;25230:189;25394:13;25387:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25044:382;;;;:::o;19666:31::-;;;;:::o;23930:98::-;18426:12;:10;:12::i;:::-;18415:23;;:7;:5;:7::i;:::-;:23;;;18407:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24006:14:::1;;;;;;;;;;;24005:15;23988:14;;:32;;;;;;;;;;;;;;;;;;23930:98::o:0;19837:34::-;;;;;;;;;;;;;:::o;10721:164::-;10818:4;10842:18;:25;10861:5;10842:25;;;;;;;;;;;;;;;:35;10868:8;10842:35;;;;;;;;;;;;;;;;;;;;;;;;;10835:42;;10721:164;;;;:::o;20740:184::-;18426:12;:10;:12::i;:::-;18415:23;;:7;:5;:7::i;:::-;:23;;;18407:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20859:14:::1;20843:13;:30;;;;20901:15;20884:14;:32;;;;20740:184:::0;;:::o;21212:284::-;18426:12;:10;:12::i;:::-;18415:23;;:7;:5;:7::i;:::-;:23;;;18407:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21324:9:::1;21319:170;21343:10;:17;21339:1;:21;21319:170;;;21411:4;21382:11;:26;21394:10;21405:1;21394:13;;;;;;;;:::i;:::-;;;;;;;;21382:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;21461:16;21430:13;:28;21444:10;21455:1;21444:13;;;;;;;;:::i;:::-;;;;;;;;21430:28;;;;;;;;;;;;;;;;:47;;;;;;;;;;;;;;;;;;21362:3;;;;;:::i;:::-;;;;21319:170;;;;21212:284:::0;;:::o;18700:192::-;18426:12;:10;:12::i;:::-;18415:23;;:7;:5;:7::i;:::-;:23;;;18407:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18809:1:::1;18789:22;;:8;:22;;;;18781:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;18865:19;18875:8;18865:9;:19::i;:::-;18700:192:::0;:::o;19788:40::-;;;;;;;;;;;;;:::o;23248:674::-;23323:8;;;;;;;;;;;23315:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;23408:4;23390:22;;:14;;;;;;;;;;;:22;;;23382:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;23467:18;23488:11;:23;23500:10;23488:23;;;;;;;;;;;;;;;;;;;;;;;;;23467:44;;23547:4;23530:21;;:13;:21;;;23522:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;23616:13;:25;23630:10;23616:25;;;;;;;;;;;;;;;;;;;;;;;;;23601:40;;:11;:40;;;;23593:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;23727:13;;23712:11;:28;;;;23704:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;23808:11;23791:28;;:13;;:28;;;;;;;:::i;:::-;;;;;;;;23859:11;23830:13;:25;23844:10;23830:25;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;23881:33;23890:10;23902:11;23881:33;;:8;:33::i;:::-;23304:618;23248:674;:::o;742:98::-;795:7;822:10;815:17;;742:98;:::o;8352:293::-;8454:4;8502:25;8487:40;;;:11;:40;;;;:101;;;;8555:33;8540:48;;;:11;:48;;;;8487:101;:150;;;;8601:36;8625:11;8601:23;:36::i;:::-;8487:150;8471:166;;8352:293;;;:::o;11883:127::-;11948:4;12000:1;11972:30;;:7;:16;11980:7;11972:16;;;;;;;;;;;;;;;;;;;;;:30;;;;11965:37;;11883:127;;;:::o;13995:174::-;14097:2;14070:15;:24;14086:7;14070:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;14153:7;14149:2;14115:46;;14124:23;14139:7;14124:14;:23::i;:::-;14115:46;;;;;;;;;;;;13995:174;;:::o;140:114::-;205:7;232;:14;;;225:21;;140:114;;;:::o;12787:376::-;12881:1;12867:16;;:2;:16;;;;12859:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;12940:16;12948:7;12940;:16::i;:::-;12939:17;12931:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;13000:45;13029:1;13033:2;13037:7;13000:20;:45::i;:::-;13073:1;13056:9;:13;13066:2;13056:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;13104:2;13085:7;:16;13093:7;13085:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13147:7;13143:2;13122:33;;13139:1;13122:33;;;;;;;;;;;;12787:376;;:::o;262:115::-;361:1;343:7;:14;;;:19;;;;;;;;;;;262:115;:::o;12018:348::-;12111:4;12136:16;12144:7;12136;:16::i;:::-;12128:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;12212:13;12228:23;12243:7;12228:14;:23::i;:::-;12212:39;;12281:5;12270:16;;:7;:16;;;:51;;;;12314:7;12290:31;;:20;12302:7;12290:11;:20::i;:::-;:31;;;12270:51;:87;;;;12325:32;12342:5;12349:7;12325:16;:32::i;:::-;12270:87;12262:96;;;12018:348;;;;:::o;13503:484::-;13628:4;13601:31;;:23;13616:7;13601:14;:23::i;:::-;:31;;;13593:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;13711:1;13697:16;;:2;:16;;;;13689:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;13765:39;13786:4;13792:2;13796:7;13765:20;:39::i;:::-;13815:29;13832:1;13836:7;13815:8;:29::i;:::-;13874:1;13855:9;:15;13865:4;13855:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;13903:1;13886:9;:13;13896:2;13886:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;13934:2;13915:7;:16;13923:7;13915:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13971:7;13967:2;13952:27;;13961:4;13952:27;;;;;;;;;;;;13503:484;;;:::o;24580:232::-;24650:6;24295:19;24333:6;24317:13;:11;:13::i;:::-;:22;;;;:::i;:::-;24295:44;;24384:5;24360:29;;:20;;;;;;;;;;;:29;;;24357:102;;;24433:14;;24419:11;:28;;;;:::i;:::-;24405:42;;24357:102;24492:9;;24477:11;:24;;24469:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;24669:17:::1;24705:1;24689:13;:11;:13::i;:::-;:17;;;;:::i;:::-;24669:37;;24722:9;24717:88;24741:6;24737:1;:10;24717:88;;;24769:24;24775:2;24791:1;24779:9;:13;;;;:::i;:::-;24769:5;:24::i;:::-;24749:3;;;;;:::i;:::-;;;;24717:88;;;;24658:154;24284:288:::0;24580:232;;;:::o;18900:173::-;18956:16;18975:6;;;;;;;;;;;18956:25;;19001:8;18992:6;;:17;;;;;;;;;;;;;;;;;;19056:8;19025:40;;19046:8;19025:40;;;;;;;;;;;;18945:128;18900:173;:::o;11603:272::-;11717:28;11727:4;11733:2;11737:7;11717:9;:28::i;:::-;11764:48;11787:4;11793:2;11797:7;11806:5;11764:22;:48::i;:::-;11756:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;11603:272;;;;:::o;5955:532::-;6011:13;6050:1;6041:5;:10;6037:53;;;6068:10;;;;;;;;;;;;;;;;;;;;;6037:53;6100:12;6115:5;6100:20;;6131:14;6156:78;6171:1;6163:4;:9;6156:78;;6189:8;;;;;:::i;:::-;;;;6220:2;6212:10;;;;;:::i;:::-;;;6156:78;;;6244:19;6276:6;6266:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6244:39;;6294:154;6310:1;6301:5;:10;6294:154;;6338:1;6328:11;;;;;:::i;:::-;;;6405:2;6397:5;:10;;;;:::i;:::-;6384:2;:24;;;;:::i;:::-;6371:39;;6354:6;6361;6354:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;6434:2;6425:11;;;;;:::i;:::-;;;6294:154;;;6472:6;6458:21;;;;;5955:532;;;;:::o;7344:157::-;7429:4;7468:25;7453:40;;;:11;:40;;;;7446:47;;7344:157;;;:::o;16199:553::-;16309:45;16336:4;16342:2;16346:7;16309:26;:45::i;:::-;16385:1;16369:18;;:4;:18;;;16365:187;;;16404:40;16436:7;16404:31;:40::i;:::-;16365:187;;;16474:2;16466:10;;:4;:10;;;16462:90;;16493:47;16526:4;16532:7;16493:32;:47::i;:::-;16462:90;16365:187;16580:1;16566:16;;:2;:16;;;16562:183;;;16599:45;16636:7;16599:36;:45::i;:::-;16562:183;;;16672:4;16666:10;;:2;:10;;;16662:83;;16693:40;16721:2;16725:7;16693:27;:40::i;:::-;16662:83;16562:183;16199:553;;;:::o;14177:756::-;14289:4;14310:15;:2;:13;;;:15::i;:::-;14306:620;;;14362:2;14346:36;;;14383:12;:10;:12::i;:::-;14397:4;14403:7;14412:5;14346:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;14342:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14605:1;14588:6;:13;:18;14584:272;;;14631:60;;;;;;;;;;:::i;:::-;;;;;;;;14584:272;14806:6;14800:13;14791:6;14787:2;14783:15;14776:38;14342:529;14479:41;;;14469:51;;;:6;:51;;;;14462:58;;;;;14306:620;14910:4;14903:11;;14177:756;;;;;;;:::o;14941:92::-;;;;:::o;16989:164::-;17093:10;:17;;;;17066:15;:24;17082:7;17066:24;;;;;;;;;;;:44;;;;17121:10;17137:7;17121:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16989:164;:::o;17161:549::-;17253:22;17303:1;17278:22;17295:4;17278:16;:22::i;:::-;:26;;;;:::i;:::-;17253:51;;17315:18;17336:17;:26;17354:7;17336:26;;;;;;;;;;;;17315:47;;17391:14;17377:10;:28;17373:234;;17422:19;17444:12;:18;17457:4;17444:18;;;;;;;;;;;;;;;:34;17463:14;17444:34;;;;;;;;;;;;17422:56;;17526:11;17493:12;:18;17506:4;17493:18;;;;;;;;;;;;;;;:30;17512:10;17493:30;;;;;;;;;;;:44;;;;17585:10;17552:17;:30;17570:11;17552:30;;;;;;;;;;;:43;;;;17407:200;17373:234;17624:17;:26;17642:7;17624:26;;;;;;;;;;;17617:33;;;17668:12;:18;17681:4;17668:18;;;;;;;;;;;;;;;:34;17687:14;17668:34;;;;;;;;;;;17661:41;;;17242:468;;17161:549;;:::o;17718:419::-;17800:22;17845:1;17825:10;:17;;;;:21;;;;:::i;:::-;17800:46;;17857:18;17878:15;:24;17894:7;17878:24;;;;;;;;;;;;17857:45;;17913:19;17935:10;17946:14;17935:26;;;;;;;;:::i;:::-;;;;;;;;;;17913:48;;17997:11;17972:10;17983;17972:22;;;;;;;;:::i;:::-;;;;;;;;;:36;;;;18050:10;18019:15;:28;18035:11;18019:28;;;;;;;;;;;:41;;;;18078:15;:24;18094:7;18078:24;;;;;;;;;;;18071:31;;;18113:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17789:348;;;17718:419;:::o;16760:221::-;16845:14;16862:20;16879:2;16862:16;:20::i;:::-;16845:37;;16920:7;16893:12;:16;16906:2;16893:16;;;;;;;;;;;;;;;:24;16910:6;16893:24;;;;;;;;;;;:34;;;;16967:6;16938:17;:26;16956:7;16938:26;;;;;;;;;;;:35;;;;16834:147;16760:221;;:::o;2571:196::-;2631:4;2648:12;2715:7;2703:20;2695:28;;2758:1;2751:4;:8;2744:15;;;2571:196;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:149;370:7;410:66;403:5;399:78;388:89;;334:149;;;:::o;489:120::-;561:23;578:5;561:23;:::i;:::-;554:5;551:34;541:62;;599:1;596;589:12;541:62;489:120;:::o;615:137::-;660:5;698:6;685:20;676:29;;714:32;740:5;714:32;:::i;:::-;615:137;;;;:::o;758:327::-;816:6;865:2;853:9;844:7;840:23;836:32;833:119;;;871:79;;:::i;:::-;833:119;991:1;1016:52;1060:7;1051:6;1040:9;1036:22;1016:52;:::i;:::-;1006:62;;962:116;758:327;;;;:::o;1091:90::-;1125:7;1168:5;1161:13;1154:21;1143:32;;1091:90;;;:::o;1187:109::-;1268:21;1283:5;1268:21;:::i;:::-;1263:3;1256:34;1187:109;;:::o;1302:210::-;1389:4;1427:2;1416:9;1412:18;1404:26;;1440:65;1502:1;1491:9;1487:17;1478:6;1440:65;:::i;:::-;1302:210;;;;:::o;1518:99::-;1570:6;1604:5;1598:12;1588:22;;1518:99;;;:::o;1623:169::-;1707:11;1741:6;1736:3;1729:19;1781:4;1776:3;1772:14;1757:29;;1623:169;;;;:::o;1798:307::-;1866:1;1876:113;1890:6;1887:1;1884:13;1876:113;;;1975:1;1970:3;1966:11;1960:18;1956:1;1951:3;1947:11;1940:39;1912:2;1909:1;1905:10;1900:15;;1876:113;;;2007:6;2004:1;2001:13;1998:101;;;2087:1;2078:6;2073:3;2069:16;2062:27;1998:101;1847:258;1798:307;;;:::o;2111:102::-;2152:6;2203:2;2199:7;2194:2;2187:5;2183:14;2179:28;2169:38;;2111:102;;;:::o;2219:364::-;2307:3;2335:39;2368:5;2335:39;:::i;:::-;2390:71;2454:6;2449:3;2390:71;:::i;:::-;2383:78;;2470:52;2515:6;2510:3;2503:4;2496:5;2492:16;2470:52;:::i;:::-;2547:29;2569:6;2547:29;:::i;:::-;2542:3;2538:39;2531:46;;2311:272;2219:364;;;;:::o;2589:313::-;2702:4;2740:2;2729:9;2725:18;2717:26;;2789:9;2783:4;2779:20;2775:1;2764:9;2760:17;2753:47;2817:78;2890:4;2881:6;2817:78;:::i;:::-;2809:86;;2589:313;;;;:::o;2908:77::-;2945:7;2974:5;2963:16;;2908:77;;;:::o;2991:122::-;3064:24;3082:5;3064:24;:::i;:::-;3057:5;3054:35;3044:63;;3103:1;3100;3093:12;3044:63;2991:122;:::o;3119:139::-;3165:5;3203:6;3190:20;3181:29;;3219:33;3246:5;3219:33;:::i;:::-;3119:139;;;;:::o;3264:329::-;3323:6;3372:2;3360:9;3351:7;3347:23;3343:32;3340:119;;;3378:79;;:::i;:::-;3340:119;3498:1;3523:53;3568:7;3559:6;3548:9;3544:22;3523:53;:::i;:::-;3513:63;;3469:117;3264:329;;;;:::o;3599:126::-;3636:7;3676:42;3669:5;3665:54;3654:65;;3599:126;;;:::o;3731:96::-;3768:7;3797:24;3815:5;3797:24;:::i;:::-;3786:35;;3731:96;;;:::o;3833:118::-;3920:24;3938:5;3920:24;:::i;:::-;3915:3;3908:37;3833:118;;:::o;3957:222::-;4050:4;4088:2;4077:9;4073:18;4065:26;;4101:71;4169:1;4158:9;4154:17;4145:6;4101:71;:::i;:::-;3957:222;;;;:::o;4185:122::-;4258:24;4276:5;4258:24;:::i;:::-;4251:5;4248:35;4238:63;;4297:1;4294;4287:12;4238:63;4185:122;:::o;4313:139::-;4359:5;4397:6;4384:20;4375:29;;4413:33;4440:5;4413:33;:::i;:::-;4313:139;;;;:::o;4458:474::-;4526:6;4534;4583:2;4571:9;4562:7;4558:23;4554:32;4551:119;;;4589:79;;:::i;:::-;4551:119;4709:1;4734:53;4779:7;4770:6;4759:9;4755:22;4734:53;:::i;:::-;4724:63;;4680:117;4836:2;4862:53;4907:7;4898:6;4887:9;4883:22;4862:53;:::i;:::-;4852:63;;4807:118;4458:474;;;;;:::o;4938:329::-;4997:6;5046:2;5034:9;5025:7;5021:23;5017:32;5014:119;;;5052:79;;:::i;:::-;5014:119;5172:1;5197:53;5242:7;5233:6;5222:9;5218:22;5197:53;:::i;:::-;5187:63;;5143:117;4938:329;;;;:::o;5273:118::-;5360:24;5378:5;5360:24;:::i;:::-;5355:3;5348:37;5273:118;;:::o;5397:222::-;5490:4;5528:2;5517:9;5513:18;5505:26;;5541:71;5609:1;5598:9;5594:17;5585:6;5541:71;:::i;:::-;5397:222;;;;:::o;5625:619::-;5702:6;5710;5718;5767:2;5755:9;5746:7;5742:23;5738:32;5735:119;;;5773:79;;:::i;:::-;5735:119;5893:1;5918:53;5963:7;5954:6;5943:9;5939:22;5918:53;:::i;:::-;5908:63;;5864:117;6020:2;6046:53;6091:7;6082:6;6071:9;6067:22;6046:53;:::i;:::-;6036:63;;5991:118;6148:2;6174:53;6219:7;6210:6;6199:9;6195:22;6174:53;:::i;:::-;6164:63;;6119:118;5625:619;;;;;:::o;6250:117::-;6359:1;6356;6349:12;6373:117;6482:1;6479;6472:12;6496:180;6544:77;6541:1;6534:88;6641:4;6638:1;6631:15;6665:4;6662:1;6655:15;6682:281;6765:27;6787:4;6765:27;:::i;:::-;6757:6;6753:40;6895:6;6883:10;6880:22;6859:18;6847:10;6844:34;6841:62;6838:88;;;6906:18;;:::i;:::-;6838:88;6946:10;6942:2;6935:22;6725:238;6682:281;;:::o;6969:129::-;7003:6;7030:20;;:::i;:::-;7020:30;;7059:33;7087:4;7079:6;7059:33;:::i;:::-;6969:129;;;:::o;7104:308::-;7166:4;7256:18;7248:6;7245:30;7242:56;;;7278:18;;:::i;:::-;7242:56;7316:29;7338:6;7316:29;:::i;:::-;7308:37;;7400:4;7394;7390:15;7382:23;;7104:308;;;:::o;7418:154::-;7502:6;7497:3;7492;7479:30;7564:1;7555:6;7550:3;7546:16;7539:27;7418:154;;;:::o;7578:412::-;7656:5;7681:66;7697:49;7739:6;7697:49;:::i;:::-;7681:66;:::i;:::-;7672:75;;7770:6;7763:5;7756:21;7808:4;7801:5;7797:16;7846:3;7837:6;7832:3;7828:16;7825:25;7822:112;;;7853:79;;:::i;:::-;7822:112;7943:41;7977:6;7972:3;7967;7943:41;:::i;:::-;7662:328;7578:412;;;;;:::o;8010:340::-;8066:5;8115:3;8108:4;8100:6;8096:17;8092:27;8082:122;;8123:79;;:::i;:::-;8082:122;8240:6;8227:20;8265:79;8340:3;8332:6;8325:4;8317:6;8313:17;8265:79;:::i;:::-;8256:88;;8072:278;8010:340;;;;:::o;8356:509::-;8425:6;8474:2;8462:9;8453:7;8449:23;8445:32;8442:119;;;8480:79;;:::i;:::-;8442:119;8628:1;8617:9;8613:17;8600:31;8658:18;8650:6;8647:30;8644:117;;;8680:79;;:::i;:::-;8644:117;8785:63;8840:7;8831:6;8820:9;8816:22;8785:63;:::i;:::-;8775:73;;8571:287;8356:509;;;;:::o;8871:114::-;8938:6;8972:5;8966:12;8956:22;;8871:114;;;:::o;8991:184::-;9090:11;9124:6;9119:3;9112:19;9164:4;9159:3;9155:14;9140:29;;8991:184;;;;:::o;9181:132::-;9248:4;9271:3;9263:11;;9301:4;9296:3;9292:14;9284:22;;9181:132;;;:::o;9319:108::-;9396:24;9414:5;9396:24;:::i;:::-;9391:3;9384:37;9319:108;;:::o;9433:179::-;9502:10;9523:46;9565:3;9557:6;9523:46;:::i;:::-;9601:4;9596:3;9592:14;9578:28;;9433:179;;;;:::o;9618:113::-;9688:4;9720;9715:3;9711:14;9703:22;;9618:113;;;:::o;9767:732::-;9886:3;9915:54;9963:5;9915:54;:::i;:::-;9985:86;10064:6;10059:3;9985:86;:::i;:::-;9978:93;;10095:56;10145:5;10095:56;:::i;:::-;10174:7;10205:1;10190:284;10215:6;10212:1;10209:13;10190:284;;;10291:6;10285:13;10318:63;10377:3;10362:13;10318:63;:::i;:::-;10311:70;;10404:60;10457:6;10404:60;:::i;:::-;10394:70;;10250:224;10237:1;10234;10230:9;10225:14;;10190:284;;;10194:14;10490:3;10483:10;;9891:608;;;9767:732;;;;:::o;10505:373::-;10648:4;10686:2;10675:9;10671:18;10663:26;;10735:9;10729:4;10725:20;10721:1;10710:9;10706:17;10699:47;10763:108;10866:4;10857:6;10763:108;:::i;:::-;10755:116;;10505:373;;;;:::o;10884:311::-;10961:4;11051:18;11043:6;11040:30;11037:56;;;11073:18;;:::i;:::-;11037:56;11123:4;11115:6;11111:17;11103:25;;11183:4;11177;11173:15;11165:23;;10884:311;;;:::o;11201:117::-;11310:1;11307;11300:12;11341:710;11437:5;11462:81;11478:64;11535:6;11478:64;:::i;:::-;11462:81;:::i;:::-;11453:90;;11563:5;11592:6;11585:5;11578:21;11626:4;11619:5;11615:16;11608:23;;11679:4;11671:6;11667:17;11659:6;11655:30;11708:3;11700:6;11697:15;11694:122;;;11727:79;;:::i;:::-;11694:122;11842:6;11825:220;11859:6;11854:3;11851:15;11825:220;;;11934:3;11963:37;11996:3;11984:10;11963:37;:::i;:::-;11958:3;11951:50;12030:4;12025:3;12021:14;12014:21;;11901:144;11885:4;11880:3;11876:14;11869:21;;11825:220;;;11829:21;11443:608;;11341:710;;;;;:::o;12074:370::-;12145:5;12194:3;12187:4;12179:6;12175:17;12171:27;12161:122;;12202:79;;:::i;:::-;12161:122;12319:6;12306:20;12344:94;12434:3;12426:6;12419:4;12411:6;12407:17;12344:94;:::i;:::-;12335:103;;12151:293;12074:370;;;;:::o;12450:311::-;12527:4;12617:18;12609:6;12606:30;12603:56;;;12639:18;;:::i;:::-;12603:56;12689:4;12681:6;12677:17;12669:25;;12749:4;12743;12739:15;12731:23;;12450:311;;;:::o;12784:710::-;12880:5;12905:81;12921:64;12978:6;12921:64;:::i;:::-;12905:81;:::i;:::-;12896:90;;13006:5;13035:6;13028:5;13021:21;13069:4;13062:5;13058:16;13051:23;;13122:4;13114:6;13110:17;13102:6;13098:30;13151:3;13143:6;13140:15;13137:122;;;13170:79;;:::i;:::-;13137:122;13285:6;13268:220;13302:6;13297:3;13294:15;13268:220;;;13377:3;13406:37;13439:3;13427:10;13406:37;:::i;:::-;13401:3;13394:50;13473:4;13468:3;13464:14;13457:21;;13344:144;13328:4;13323:3;13319:14;13312:21;;13268:220;;;13272:21;12886:608;;12784:710;;;;;:::o;13517:370::-;13588:5;13637:3;13630:4;13622:6;13618:17;13614:27;13604:122;;13645:79;;:::i;:::-;13604:122;13762:6;13749:20;13787:94;13877:3;13869:6;13862:4;13854:6;13850:17;13787:94;:::i;:::-;13778:103;;13594:293;13517:370;;;;:::o;13893:894::-;14011:6;14019;14068:2;14056:9;14047:7;14043:23;14039:32;14036:119;;;14074:79;;:::i;:::-;14036:119;14222:1;14211:9;14207:17;14194:31;14252:18;14244:6;14241:30;14238:117;;;14274:79;;:::i;:::-;14238:117;14379:78;14449:7;14440:6;14429:9;14425:22;14379:78;:::i;:::-;14369:88;;14165:302;14534:2;14523:9;14519:18;14506:32;14565:18;14557:6;14554:30;14551:117;;;14587:79;;:::i;:::-;14551:117;14692:78;14762:7;14753:6;14742:9;14738:22;14692:78;:::i;:::-;14682:88;;14477:303;13893:894;;;;;:::o;14793:116::-;14863:21;14878:5;14863:21;:::i;:::-;14856:5;14853:32;14843:60;;14899:1;14896;14889:12;14843:60;14793:116;:::o;14915:133::-;14958:5;14996:6;14983:20;14974:29;;15012:30;15036:5;15012:30;:::i;:::-;14915:133;;;;:::o;15054:468::-;15119:6;15127;15176:2;15164:9;15155:7;15151:23;15147:32;15144:119;;;15182:79;;:::i;:::-;15144:119;15302:1;15327:53;15372:7;15363:6;15352:9;15348:22;15327:53;:::i;:::-;15317:63;;15273:117;15429:2;15455:50;15497:7;15488:6;15477:9;15473:22;15455:50;:::i;:::-;15445:60;;15400:115;15054:468;;;;;:::o;15528:307::-;15589:4;15679:18;15671:6;15668:30;15665:56;;;15701:18;;:::i;:::-;15665:56;15739:29;15761:6;15739:29;:::i;:::-;15731:37;;15823:4;15817;15813:15;15805:23;;15528:307;;;:::o;15841:410::-;15918:5;15943:65;15959:48;16000:6;15959:48;:::i;:::-;15943:65;:::i;:::-;15934:74;;16031:6;16024:5;16017:21;16069:4;16062:5;16058:16;16107:3;16098:6;16093:3;16089:16;16086:25;16083:112;;;16114:79;;:::i;:::-;16083:112;16204:41;16238:6;16233:3;16228;16204:41;:::i;:::-;15924:327;15841:410;;;;;:::o;16270:338::-;16325:5;16374:3;16367:4;16359:6;16355:17;16351:27;16341:122;;16382:79;;:::i;:::-;16341:122;16499:6;16486:20;16524:78;16598:3;16590:6;16583:4;16575:6;16571:17;16524:78;:::i;:::-;16515:87;;16331:277;16270:338;;;;:::o;16614:943::-;16709:6;16717;16725;16733;16782:3;16770:9;16761:7;16757:23;16753:33;16750:120;;;16789:79;;:::i;:::-;16750:120;16909:1;16934:53;16979:7;16970:6;16959:9;16955:22;16934:53;:::i;:::-;16924:63;;16880:117;17036:2;17062:53;17107:7;17098:6;17087:9;17083:22;17062:53;:::i;:::-;17052:63;;17007:118;17164:2;17190:53;17235:7;17226:6;17215:9;17211:22;17190:53;:::i;:::-;17180:63;;17135:118;17320:2;17309:9;17305:18;17292:32;17351:18;17343:6;17340:30;17337:117;;;17373:79;;:::i;:::-;17337:117;17478:62;17532:7;17523:6;17512:9;17508:22;17478:62;:::i;:::-;17468:72;;17263:287;16614:943;;;;;;;:::o;17563:474::-;17631:6;17639;17688:2;17676:9;17667:7;17663:23;17659:32;17656:119;;;17694:79;;:::i;:::-;17656:119;17814:1;17839:53;17884:7;17875:6;17864:9;17860:22;17839:53;:::i;:::-;17829:63;;17785:117;17941:2;17967:53;18012:7;18003:6;17992:9;17988:22;17967:53;:::i;:::-;17957:63;;17912:118;17563:474;;;;;:::o;18043:::-;18111:6;18119;18168:2;18156:9;18147:7;18143:23;18139:32;18136:119;;;18174:79;;:::i;:::-;18136:119;18294:1;18319:53;18364:7;18355:6;18344:9;18340:22;18319:53;:::i;:::-;18309:63;;18265:117;18421:2;18447:53;18492:7;18483:6;18472:9;18468:22;18447:53;:::i;:::-;18437:63;;18392:118;18043:474;;;;;:::o;18523:86::-;18558:7;18598:4;18591:5;18587:16;18576:27;;18523:86;;;:::o;18615:118::-;18686:22;18702:5;18686:22;:::i;:::-;18679:5;18676:33;18666:61;;18723:1;18720;18713:12;18666:61;18615:118;:::o;18739:135::-;18783:5;18821:6;18808:20;18799:29;;18837:31;18862:5;18837:31;:::i;:::-;18739:135;;;;:::o;18880:680::-;18971:6;18979;19028:2;19016:9;19007:7;19003:23;18999:32;18996:119;;;19034:79;;:::i;:::-;18996:119;19182:1;19171:9;19167:17;19154:31;19212:18;19204:6;19201:30;19198:117;;;19234:79;;:::i;:::-;19198:117;19339:78;19409:7;19400:6;19389:9;19385:22;19339:78;:::i;:::-;19329:88;;19125:302;19466:2;19492:51;19535:7;19526:6;19515:9;19511:22;19492:51;:::i;:::-;19482:61;;19437:116;18880:680;;;;;:::o;19566:325::-;19623:6;19672:2;19660:9;19651:7;19647:23;19643:32;19640:119;;;19678:79;;:::i;:::-;19640:119;19798:1;19823:51;19866:7;19857:6;19846:9;19842:22;19823:51;:::i;:::-;19813:61;;19769:115;19566:325;;;;:::o;19897:182::-;20037:34;20033:1;20025:6;20021:14;20014:58;19897:182;:::o;20085:366::-;20227:3;20248:67;20312:2;20307:3;20248:67;:::i;:::-;20241:74;;20324:93;20413:3;20324:93;:::i;:::-;20442:2;20437:3;20433:12;20426:19;;20085:366;;;:::o;20457:419::-;20623:4;20661:2;20650:9;20646:18;20638:26;;20710:9;20704:4;20700:20;20696:1;20685:9;20681:17;20674:47;20738:131;20864:4;20738:131;:::i;:::-;20730:139;;20457:419;;;:::o;20882:180::-;20930:77;20927:1;20920:88;21027:4;21024:1;21017:15;21051:4;21048:1;21041:15;21068:320;21112:6;21149:1;21143:4;21139:12;21129:22;;21196:1;21190:4;21186:12;21217:18;21207:81;;21273:4;21265:6;21261:17;21251:27;;21207:81;21335:2;21327:6;21324:14;21304:18;21301:38;21298:84;;;21354:18;;:::i;:::-;21298:84;21119:269;21068:320;;;:::o;21394:231::-;21534:34;21530:1;21522:6;21518:14;21511:58;21603:14;21598:2;21590:6;21586:15;21579:39;21394:231;:::o;21631:366::-;21773:3;21794:67;21858:2;21853:3;21794:67;:::i;:::-;21787:74;;21870:93;21959:3;21870:93;:::i;:::-;21988:2;21983:3;21979:12;21972:19;;21631:366;;;:::o;22003:419::-;22169:4;22207:2;22196:9;22192:18;22184:26;;22256:9;22250:4;22246:20;22242:1;22231:9;22227:17;22220:47;22284:131;22410:4;22284:131;:::i;:::-;22276:139;;22003:419;;;:::o;22428:220::-;22568:34;22564:1;22556:6;22552:14;22545:58;22637:3;22632:2;22624:6;22620:15;22613:28;22428:220;:::o;22654:366::-;22796:3;22817:67;22881:2;22876:3;22817:67;:::i;:::-;22810:74;;22893:93;22982:3;22893:93;:::i;:::-;23011:2;23006:3;23002:12;22995:19;;22654:366;;;:::o;23026:419::-;23192:4;23230:2;23219:9;23215:18;23207:26;;23279:9;23273:4;23269:20;23265:1;23254:9;23250:17;23243:47;23307:131;23433:4;23307:131;:::i;:::-;23299:139;;23026:419;;;:::o;23451:243::-;23591:34;23587:1;23579:6;23575:14;23568:58;23660:26;23655:2;23647:6;23643:15;23636:51;23451:243;:::o;23700:366::-;23842:3;23863:67;23927:2;23922:3;23863:67;:::i;:::-;23856:74;;23939:93;24028:3;23939:93;:::i;:::-;24057:2;24052:3;24048:12;24041:19;;23700:366;;;:::o;24072:419::-;24238:4;24276:2;24265:9;24261:18;24253:26;;24325:9;24319:4;24315:20;24311:1;24300:9;24296:17;24289:47;24353:131;24479:4;24353:131;:::i;:::-;24345:139;;24072:419;;;:::o;24497:232::-;24637:34;24633:1;24625:6;24621:14;24614:58;24706:15;24701:2;24693:6;24689:15;24682:40;24497:232;:::o;24735:366::-;24877:3;24898:67;24962:2;24957:3;24898:67;:::i;:::-;24891:74;;24974:93;25063:3;24974:93;:::i;:::-;25092:2;25087:3;25083:12;25076:19;;24735:366;;;:::o;25107:419::-;25273:4;25311:2;25300:9;25296:18;25288:26;;25360:9;25354:4;25350:20;25346:1;25335:9;25331:17;25324:47;25388:131;25514:4;25388:131;:::i;:::-;25380:139;;25107:419;;;:::o;25532:180::-;25580:77;25577:1;25570:88;25677:4;25674:1;25667:15;25701:4;25698:1;25691:15;25718:305;25758:3;25777:20;25795:1;25777:20;:::i;:::-;25772:25;;25811:20;25829:1;25811:20;:::i;:::-;25806:25;;25965:1;25897:66;25893:74;25890:1;25887:81;25884:107;;;25971:18;;:::i;:::-;25884:107;26015:1;26012;26008:9;26001:16;;25718:305;;;;:::o;26029:231::-;26169:34;26165:1;26157:6;26153:14;26146:58;26238:14;26233:2;26225:6;26221:15;26214:39;26029:231;:::o;26266:366::-;26408:3;26429:67;26493:2;26488:3;26429:67;:::i;:::-;26422:74;;26505:93;26594:3;26505:93;:::i;:::-;26623:2;26618:3;26614:12;26607:19;;26266:366;;;:::o;26638:419::-;26804:4;26842:2;26831:9;26827:18;26819:26;;26891:9;26885:4;26881:20;26877:1;26866:9;26862:17;26855:47;26919:131;27045:4;26919:131;:::i;:::-;26911:139;;26638:419;;;:::o;27063:233::-;27102:3;27125:24;27143:5;27125:24;:::i;:::-;27116:33;;27171:66;27164:5;27161:77;27158:103;;;27241:18;;:::i;:::-;27158:103;27288:1;27281:5;27277:13;27270:20;;27063:233;;;:::o;27302:236::-;27442:34;27438:1;27430:6;27426:14;27419:58;27511:19;27506:2;27498:6;27494:15;27487:44;27302:236;:::o;27544:366::-;27686:3;27707:67;27771:2;27766:3;27707:67;:::i;:::-;27700:74;;27783:93;27872:3;27783:93;:::i;:::-;27901:2;27896:3;27892:12;27885:19;;27544:366;;;:::o;27916:419::-;28082:4;28120:2;28109:9;28105:18;28097:26;;28169:9;28163:4;28159:20;28155:1;28144:9;28140:17;28133:47;28197:131;28323:4;28197:131;:::i;:::-;28189:139;;27916:419;;;:::o;28341:230::-;28481:34;28477:1;28469:6;28465:14;28458:58;28550:13;28545:2;28537:6;28533:15;28526:38;28341:230;:::o;28577:366::-;28719:3;28740:67;28804:2;28799:3;28740:67;:::i;:::-;28733:74;;28816:93;28905:3;28816:93;:::i;:::-;28934:2;28929:3;28925:12;28918:19;;28577:366;;;:::o;28949:419::-;29115:4;29153:2;29142:9;29138:18;29130:26;;29202:9;29196:4;29192:20;29188:1;29177:9;29173:17;29166:47;29230:131;29356:4;29230:131;:::i;:::-;29222:139;;28949:419;;;:::o;29374:179::-;29514:31;29510:1;29502:6;29498:14;29491:55;29374:179;:::o;29559:366::-;29701:3;29722:67;29786:2;29781:3;29722:67;:::i;:::-;29715:74;;29798:93;29887:3;29798:93;:::i;:::-;29916:2;29911:3;29907:12;29900:19;;29559:366;;;:::o;29931:419::-;30097:4;30135:2;30124:9;30120:18;30112:26;;30184:9;30178:4;30174:20;30170:1;30159:9;30155:17;30148:47;30212:131;30338:4;30212:131;:::i;:::-;30204:139;;29931:419;;;:::o;30356:231::-;30496:34;30492:1;30484:6;30480:14;30473:58;30565:14;30560:2;30552:6;30548:15;30541:39;30356:231;:::o;30593:366::-;30735:3;30756:67;30820:2;30815:3;30756:67;:::i;:::-;30749:74;;30832:93;30921:3;30832:93;:::i;:::-;30950:2;30945:3;30941:12;30934:19;;30593:366;;;:::o;30965:419::-;31131:4;31169:2;31158:9;31154:18;31146:26;;31218:9;31212:4;31208:20;31204:1;31193:9;31189:17;31182:47;31246:131;31372:4;31246:131;:::i;:::-;31238:139;;30965:419;;;:::o;31390:180::-;31438:77;31435:1;31428:88;31535:4;31532:1;31525:15;31559:4;31556:1;31549:15;31576:228;31716:34;31712:1;31704:6;31700:14;31693:58;31785:11;31780:2;31772:6;31768:15;31761:36;31576:228;:::o;31810:366::-;31952:3;31973:67;32037:2;32032:3;31973:67;:::i;:::-;31966:74;;32049:93;32138:3;32049:93;:::i;:::-;32167:2;32162:3;32158:12;32151:19;;31810:366;;;:::o;32182:419::-;32348:4;32386:2;32375:9;32371:18;32363:26;;32435:9;32429:4;32425:20;32421:1;32410:9;32406:17;32399:47;32463:131;32589:4;32463:131;:::i;:::-;32455:139;;32182:419;;;:::o;32607:229::-;32747:34;32743:1;32735:6;32731:14;32724:58;32816:12;32811:2;32803:6;32799:15;32792:37;32607:229;:::o;32842:366::-;32984:3;33005:67;33069:2;33064:3;33005:67;:::i;:::-;32998:74;;33081:93;33170:3;33081:93;:::i;:::-;33199:2;33194:3;33190:12;33183:19;;32842:366;;;:::o;33214:419::-;33380:4;33418:2;33407:9;33403:18;33395:26;;33467:9;33461:4;33457:20;33453:1;33442:9;33438:17;33431:47;33495:131;33621:4;33495:131;:::i;:::-;33487:139;;33214:419;;;:::o;33639:171::-;33779:23;33775:1;33767:6;33763:14;33756:47;33639:171;:::o;33816:366::-;33958:3;33979:67;34043:2;34038:3;33979:67;:::i;:::-;33972:74;;34055:93;34144:3;34055:93;:::i;:::-;34173:2;34168:3;34164:12;34157:19;;33816:366;;;:::o;34188:419::-;34354:4;34392:2;34381:9;34377:18;34369:26;;34441:9;34435:4;34431:20;34427:1;34416:9;34412:17;34405:47;34469:131;34595:4;34469:131;:::i;:::-;34461:139;;34188:419;;;:::o;34613:223::-;34753:34;34749:1;34741:6;34737:14;34730:58;34822:6;34817:2;34809:6;34805:15;34798:31;34613:223;:::o;34842:366::-;34984:3;35005:67;35069:2;35064:3;35005:67;:::i;:::-;34998:74;;35081:93;35170:3;35081:93;:::i;:::-;35199:2;35194:3;35190:12;35183:19;;34842:366;;;:::o;35214:419::-;35380:4;35418:2;35407:9;35403:18;35395:26;;35467:9;35461:4;35457:20;35453:1;35442:9;35438:17;35431:47;35495:131;35621:4;35495:131;:::i;:::-;35487:139;;35214:419;;;:::o;35639:179::-;35779:31;35775:1;35767:6;35763:14;35756:55;35639:179;:::o;35824:366::-;35966:3;35987:67;36051:2;36046:3;35987:67;:::i;:::-;35980:74;;36063:93;36152:3;36063:93;:::i;:::-;36181:2;36176:3;36172:12;36165:19;;35824:366;;;:::o;36196:419::-;36362:4;36400:2;36389:9;36385:18;36377:26;;36449:9;36443:4;36439:20;36435:1;36424:9;36420:17;36413:47;36477:131;36603:4;36477:131;:::i;:::-;36469:139;;36196:419;;;:::o;36621:237::-;36761:34;36757:1;36749:6;36745:14;36738:58;36830:20;36825:2;36817:6;36813:15;36806:45;36621:237;:::o;36864:366::-;37006:3;37027:67;37091:2;37086:3;37027:67;:::i;:::-;37020:74;;37103:93;37192:3;37103:93;:::i;:::-;37221:2;37216:3;37212:12;37205:19;;36864:366;;;:::o;37236:419::-;37402:4;37440:2;37429:9;37425:18;37417:26;;37489:9;37483:4;37479:20;37475:1;37464:9;37460:17;37453:47;37517:131;37643:4;37517:131;:::i;:::-;37509:139;;37236:419;;;:::o;37661:348::-;37701:7;37724:20;37742:1;37724:20;:::i;:::-;37719:25;;37758:20;37776:1;37758:20;:::i;:::-;37753:25;;37946:1;37878:66;37874:74;37871:1;37868:81;37863:1;37856:9;37849:17;37845:105;37842:131;;;37953:18;;:::i;:::-;37842:131;38001:1;37998;37994:9;37983:20;;37661:348;;;;:::o;38015:178::-;38155:30;38151:1;38143:6;38139:14;38132:54;38015:178;:::o;38199:366::-;38341:3;38362:67;38426:2;38421:3;38362:67;:::i;:::-;38355:74;;38438:93;38527:3;38438:93;:::i;:::-;38556:2;38551:3;38547:12;38540:19;;38199:366;;;:::o;38571:419::-;38737:4;38775:2;38764:9;38760:18;38752:26;;38824:9;38818:4;38814:20;38810:1;38799:9;38795:17;38788:47;38852:131;38978:4;38852:131;:::i;:::-;38844:139;;38571:419;;;:::o;38996:175::-;39136:27;39132:1;39124:6;39120:14;39113:51;38996:175;:::o;39177:366::-;39319:3;39340:67;39404:2;39399:3;39340:67;:::i;:::-;39333:74;;39416:93;39505:3;39416:93;:::i;:::-;39534:2;39529:3;39525:12;39518:19;;39177:366;;;:::o;39549:419::-;39715:4;39753:2;39742:9;39738:18;39730:26;;39802:9;39796:4;39792:20;39788:1;39777:9;39773:17;39766:47;39830:131;39956:4;39830:131;:::i;:::-;39822:139;;39549:419;;;:::o;39974:234::-;40114:34;40110:1;40102:6;40098:14;40091:58;40183:17;40178:2;40170:6;40166:15;40159:42;39974:234;:::o;40214:366::-;40356:3;40377:67;40441:2;40436:3;40377:67;:::i;:::-;40370:74;;40453:93;40542:3;40453:93;:::i;:::-;40571:2;40566:3;40562:12;40555:19;;40214:366;;;:::o;40586:419::-;40752:4;40790:2;40779:9;40775:18;40767:26;;40839:9;40833:4;40829:20;40825:1;40814:9;40810:17;40803:47;40867:131;40993:4;40867:131;:::i;:::-;40859:139;;40586:419;;;:::o;41011:148::-;41113:11;41150:3;41135:18;;41011:148;;;;:::o;41165:141::-;41214:4;41237:3;41229:11;;41260:3;41257:1;41250:14;41294:4;41291:1;41281:18;41273:26;;41165:141;;;:::o;41336:845::-;41439:3;41476:5;41470:12;41505:36;41531:9;41505:36;:::i;:::-;41557:89;41639:6;41634:3;41557:89;:::i;:::-;41550:96;;41677:1;41666:9;41662:17;41693:1;41688:137;;;;41839:1;41834:341;;;;41655:520;;41688:137;41772:4;41768:9;41757;41753:25;41748:3;41741:38;41808:6;41803:3;41799:16;41792:23;;41688:137;;41834:341;41901:38;41933:5;41901:38;:::i;:::-;41961:1;41975:154;41989:6;41986:1;41983:13;41975:154;;;42063:7;42057:14;42053:1;42048:3;42044:11;42037:35;42113:1;42104:7;42100:15;42089:26;;42011:4;42008:1;42004:12;41999:17;;41975:154;;;42158:6;42153:3;42149:16;42142:23;;41841:334;;41655:520;;41443:738;;41336:845;;;;:::o;42187:377::-;42293:3;42321:39;42354:5;42321:39;:::i;:::-;42376:89;42458:6;42453:3;42376:89;:::i;:::-;42369:96;;42474:52;42519:6;42514:3;42507:4;42500:5;42496:16;42474:52;:::i;:::-;42551:6;42546:3;42542:16;42535:23;;42297:267;42187:377;;;;:::o;42570:429::-;42747:3;42769:92;42857:3;42848:6;42769:92;:::i;:::-;42762:99;;42878:95;42969:3;42960:6;42878:95;:::i;:::-;42871:102;;42990:3;42983:10;;42570:429;;;;;:::o;43005:225::-;43145:34;43141:1;43133:6;43129:14;43122:58;43214:8;43209:2;43201:6;43197:15;43190:33;43005:225;:::o;43236:366::-;43378:3;43399:67;43463:2;43458:3;43399:67;:::i;:::-;43392:74;;43475:93;43564:3;43475:93;:::i;:::-;43593:2;43588:3;43584:12;43577:19;;43236:366;;;:::o;43608:419::-;43774:4;43812:2;43801:9;43797:18;43789:26;;43861:9;43855:4;43851:20;43847:1;43836:9;43832:17;43825:47;43889:131;44015:4;43889:131;:::i;:::-;43881:139;;43608:419;;;:::o;44033:178::-;44173:30;44169:1;44161:6;44157:14;44150:54;44033:178;:::o;44217:366::-;44359:3;44380:67;44444:2;44439:3;44380:67;:::i;:::-;44373:74;;44456:93;44545:3;44456:93;:::i;:::-;44574:2;44569:3;44565:12;44558:19;;44217:366;;;:::o;44589:419::-;44755:4;44793:2;44782:9;44778:18;44770:26;;44842:9;44836:4;44832:20;44828:1;44817:9;44813:17;44806:47;44870:131;44996:4;44870:131;:::i;:::-;44862:139;;44589:419;;;:::o;45014:226::-;45154:34;45150:1;45142:6;45138:14;45131:58;45223:9;45218:2;45210:6;45206:15;45199:34;45014:226;:::o;45246:366::-;45388:3;45409:67;45473:2;45468:3;45409:67;:::i;:::-;45402:74;;45485:93;45574:3;45485:93;:::i;:::-;45603:2;45598:3;45594:12;45587:19;;45246:366;;;:::o;45618:419::-;45784:4;45822:2;45811:9;45807:18;45799:26;;45871:9;45865:4;45861:20;45857:1;45846:9;45842:17;45835:47;45899:131;46025:4;45899:131;:::i;:::-;45891:139;;45618:419;;;:::o;46043:176::-;46183:28;46179:1;46171:6;46167:14;46160:52;46043:176;:::o;46225:366::-;46367:3;46388:67;46452:2;46447:3;46388:67;:::i;:::-;46381:74;;46464:93;46553:3;46464:93;:::i;:::-;46582:2;46577:3;46573:12;46566:19;;46225:366;;;:::o;46597:419::-;46763:4;46801:2;46790:9;46786:18;46778:26;;46850:9;46844:4;46840:20;46836:1;46825:9;46821:17;46814:47;46878:131;47004:4;46878:131;:::i;:::-;46870:139;;46597:419;;;:::o;47022:234::-;47162:34;47158:1;47150:6;47146:14;47139:58;47231:17;47226:2;47218:6;47214:15;47207:42;47022:234;:::o;47262:366::-;47404:3;47425:67;47489:2;47484:3;47425:67;:::i;:::-;47418:74;;47501:93;47590:3;47501:93;:::i;:::-;47619:2;47614:3;47610:12;47603:19;;47262:366;;;:::o;47634:419::-;47800:4;47838:2;47827:9;47823:18;47815:26;;47887:9;47881:4;47877:20;47873:1;47862:9;47858:17;47851:47;47915:131;48041:4;47915:131;:::i;:::-;47907:139;;47634:419;;;:::o;48059:222::-;48199:34;48195:1;48187:6;48183:14;48176:58;48268:5;48263:2;48255:6;48251:15;48244:30;48059:222;:::o;48287:366::-;48429:3;48450:67;48514:2;48509:3;48450:67;:::i;:::-;48443:74;;48526:93;48615:3;48526:93;:::i;:::-;48644:2;48639:3;48635:12;48628:19;;48287:366;;;:::o;48659:419::-;48825:4;48863:2;48852:9;48848:18;48840:26;;48912:9;48906:4;48902:20;48898:1;48887:9;48883:17;48876:47;48940:131;49066:4;48940:131;:::i;:::-;48932:139;;48659:419;;;:::o;49084:191::-;49124:4;49144:20;49162:1;49144:20;:::i;:::-;49139:25;;49178:20;49196:1;49178:20;:::i;:::-;49173:25;;49217:1;49214;49211:8;49208:34;;;49222:18;;:::i;:::-;49208:34;49267:1;49264;49260:9;49252:17;;49084:191;;;;:::o;49281:185::-;49319:4;49339:18;49355:1;49339:18;:::i;:::-;49334:23;;49371:18;49387:1;49371:18;:::i;:::-;49366:23;;49408:1;49405;49402:8;49399:34;;;49413:18;;:::i;:::-;49399:34;49458:1;49455;49451:9;49443:17;;49281:185;;;;:::o;49472:182::-;49612:34;49608:1;49600:6;49596:14;49589:58;49472:182;:::o;49660:366::-;49802:3;49823:67;49887:2;49882:3;49823:67;:::i;:::-;49816:74;;49899:93;49988:3;49899:93;:::i;:::-;50017:2;50012:3;50008:12;50001:19;;49660:366;;;:::o;50032:419::-;50198:4;50236:2;50225:9;50221:18;50213:26;;50285:9;50279:4;50275:20;50271:1;50260:9;50256:17;50249:47;50313:131;50439:4;50313:131;:::i;:::-;50305:139;;50032:419;;;:::o;50457:178::-;50597:30;50593:1;50585:6;50581:14;50574:54;50457:178;:::o;50641:366::-;50783:3;50804:67;50868:2;50863:3;50804:67;:::i;:::-;50797:74;;50880:93;50969:3;50880:93;:::i;:::-;50998:2;50993:3;50989:12;50982:19;;50641:366;;;:::o;51013:419::-;51179:4;51217:2;51206:9;51202:18;51194:26;;51266:9;51260:4;51256:20;51252:1;51241:9;51237:17;51230:47;51294:131;51420:4;51294:131;:::i;:::-;51286:139;;51013:419;;;:::o;51438:231::-;51578:34;51574:1;51566:6;51562:14;51555:58;51647:14;51642:2;51634:6;51630:15;51623:39;51438:231;:::o;51675:366::-;51817:3;51838:67;51902:2;51897:3;51838:67;:::i;:::-;51831:74;;51914:93;52003:3;51914:93;:::i;:::-;52032:2;52027:3;52023:12;52016:19;;51675:366;;;:::o;52047:419::-;52213:4;52251:2;52240:9;52236:18;52228:26;;52300:9;52294:4;52290:20;52286:1;52275:9;52271:17;52264:47;52328:131;52454:4;52328:131;:::i;:::-;52320:139;;52047:419;;;:::o;52472:228::-;52612:34;52608:1;52600:6;52596:14;52589:58;52681:11;52676:2;52668:6;52664:15;52657:36;52472:228;:::o;52706:366::-;52848:3;52869:67;52933:2;52928:3;52869:67;:::i;:::-;52862:74;;52945:93;53034:3;52945:93;:::i;:::-;53063:2;53058:3;53054:12;53047:19;;52706:366;;;:::o;53078:419::-;53244:4;53282:2;53271:9;53267:18;53259:26;;53331:9;53325:4;53321:20;53317:1;53306:9;53302:17;53295:47;53359:131;53485:4;53359:131;:::i;:::-;53351:139;;53078:419;;;:::o;53503:223::-;53643:34;53639:1;53631:6;53627:14;53620:58;53712:6;53707:2;53699:6;53695:15;53688:31;53503:223;:::o;53732:366::-;53874:3;53895:67;53959:2;53954:3;53895:67;:::i;:::-;53888:74;;53971:93;54060:3;53971:93;:::i;:::-;54089:2;54084:3;54080:12;54073:19;;53732:366;;;:::o;54104:419::-;54270:4;54308:2;54297:9;54293:18;54285:26;;54357:9;54351:4;54347:20;54343:1;54332:9;54328:17;54321:47;54385:131;54511:4;54385:131;:::i;:::-;54377:139;;54104:419;;;:::o;54529:233::-;54669:34;54665:1;54657:6;54653:14;54646:58;54738:16;54733:2;54725:6;54721:15;54714:41;54529:233;:::o;54768:366::-;54910:3;54931:67;54995:2;54990:3;54931:67;:::i;:::-;54924:74;;55007:93;55096:3;55007:93;:::i;:::-;55125:2;55120:3;55116:12;55109:19;;54768:366;;;:::o;55140:419::-;55306:4;55344:2;55333:9;55329:18;55321:26;;55393:9;55387:4;55383:20;55379:1;55368:9;55364:17;55357:47;55421:131;55547:4;55421:131;:::i;:::-;55413:139;;55140:419;;;:::o;55565:237::-;55705:34;55701:1;55693:6;55689:14;55682:58;55774:20;55769:2;55761:6;55757:15;55750:45;55565:237;:::o;55808:366::-;55950:3;55971:67;56035:2;56030:3;55971:67;:::i;:::-;55964:74;;56047:93;56136:3;56047:93;:::i;:::-;56165:2;56160:3;56156:12;56149:19;;55808:366;;;:::o;56180:419::-;56346:4;56384:2;56373:9;56369:18;56361:26;;56433:9;56427:4;56423:20;56419:1;56408:9;56404:17;56397:47;56461:131;56587:4;56461:131;:::i;:::-;56453:139;;56180:419;;;:::o;56605:180::-;56653:77;56650:1;56643:88;56750:4;56747:1;56740:15;56774:4;56771:1;56764:15;56791:185;56831:1;56848:20;56866:1;56848:20;:::i;:::-;56843:25;;56882:20;56900:1;56882:20;:::i;:::-;56877:25;;56921:1;56911:35;;56926:18;;:::i;:::-;56911:35;56968:1;56965;56961:9;56956:14;;56791:185;;;;:::o;56982:176::-;57014:1;57031:20;57049:1;57031:20;:::i;:::-;57026:25;;57065:20;57083:1;57065:20;:::i;:::-;57060:25;;57104:1;57094:35;;57109:18;;:::i;:::-;57094:35;57150:1;57147;57143:9;57138:14;;56982:176;;;;:::o;57164:98::-;57215:6;57249:5;57243:12;57233:22;;57164:98;;;:::o;57268:168::-;57351:11;57385:6;57380:3;57373:19;57425:4;57420:3;57416:14;57401:29;;57268:168;;;;:::o;57442:360::-;57528:3;57556:38;57588:5;57556:38;:::i;:::-;57610:70;57673:6;57668:3;57610:70;:::i;:::-;57603:77;;57689:52;57734:6;57729:3;57722:4;57715:5;57711:16;57689:52;:::i;:::-;57766:29;57788:6;57766:29;:::i;:::-;57761:3;57757:39;57750:46;;57532:270;57442:360;;;;:::o;57808:640::-;58003:4;58041:3;58030:9;58026:19;58018:27;;58055:71;58123:1;58112:9;58108:17;58099:6;58055:71;:::i;:::-;58136:72;58204:2;58193:9;58189:18;58180:6;58136:72;:::i;:::-;58218;58286:2;58275:9;58271:18;58262:6;58218:72;:::i;:::-;58337:9;58331:4;58327:20;58322:2;58311:9;58307:18;58300:48;58365:76;58436:4;58427:6;58365:76;:::i;:::-;58357:84;;57808:640;;;;;;;:::o;58454:141::-;58510:5;58541:6;58535:13;58526:22;;58557:32;58583:5;58557:32;:::i;:::-;58454:141;;;;:::o;58601:349::-;58670:6;58719:2;58707:9;58698:7;58694:23;58690:32;58687:119;;;58725:79;;:::i;:::-;58687:119;58845:1;58870:63;58925:7;58916:6;58905:9;58901:22;58870:63;:::i;:::-;58860:73;;58816:127;58601:349;;;;:::o;58956:180::-;59004:77;59001:1;58994:88;59101:4;59098:1;59091:15;59125:4;59122:1;59115:15

Swarm Source

ipfs://52bd77dc4346a31cc9904b32f33da367382443d5b1d6674ecf0addb413c9ca5d
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.