ETH Price: $3,403.88 (+1.58%)

Token

Crop Clash (CROP)
 

Overview

Max Total Supply

239 CROP

Holders

114

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Balance
1 CROP
0xfc2219a4ad4840d51fd6b076b5c3702544556271
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:
CropClashTomatoes

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// ----------------------------------------------------------------------------
// --- Name        : CropClashTomatoes - ["Crop Clash"]
// --- Type        : NFT ERC721
// --- Symbol      : Format - {"CROP"}
// --- Total supply: Generated from minter
// --- @dev pragma solidity version:0.8.9+commit.e5eed63a
// --- SPDX-License-Identifier: MIT
// ----------------------------------------------------------------------------

pragma solidity ^0.8.9;

// ----------------------------------------------------------------------------
// --- IERC Interfaces
// ----------------------------------------------------------------------------

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

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

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

// ----------------------------------------------------------------------------
// --- Libarary Address
// ----------------------------------------------------------------------------

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

// ----------------------------------------------------------------------------
// --- Libarary Strings
// ----------------------------------------------------------------------------

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

// ----------------------------------------------------------------------------
// --- Contract ERC165
// ----------------------------------------------------------------------------

abstract contract ERC165 is IERC165 {

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

// ----------------------------------------------------------------------------
// --- Contract Context
// ----------------------------------------------------------------------------

abstract contract Context {

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

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

// ----------------------------------------------------------------------------
// --- Contract ERC721
// ----------------------------------------------------------------------------

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 {
        //solhint-disable-next-line max-line-length
        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 {}
}

// ----------------------------------------------------------------------------
// --- Contract ERC721Enumerable
// ----------------------------------------------------------------------------

abstract contract ERC721Enumerable is ERC721, IERC721Enumerable {

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

    mapping(uint256 => uint256) private _ownedTokensIndex;

    uint256[] private _allTokens;

    mapping(uint256 => uint256) private _allTokensIndex;

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

// ----------------------------------------------------------------------------
// --- Contract Ownable
// ----------------------------------------------------------------------------

abstract contract Ownable is Context {

    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

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

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

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

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

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

// ----------------------------------------------------------------------------
// --- Contract CropClashTomatoes
// ----------------------------------------------------------------------------

contract CropClashTomatoes is ERC721Enumerable, Ownable {
    uint256 private basePrice = 90000000000000000; //0.1
    uint256 private reserveAtATime = 50;
    uint256 private reservedCount = 0;
    uint256 private maxReserveCount = 50;

    string _baseTokenURI;

    bool public isActive = false;
    bool public isAllowListActive = false;

    uint256 public constant MAX_MINTSUPPLY = 7500;
    uint256 public maximumAllowedTokensPerPurchase = 10;
    uint256 public allowListMaxMint = 3;

    mapping(address => bool) private _allowList;
    mapping(address => uint256) private _allowListClaimed;

    event AssetMinted(uint256 tokenId, address sender);
    event SaleActivation(bool isActive);

    constructor(string memory baseURI) ERC721("Crop Clash", "CROP") {
        setBaseURI(baseURI);
    }

    modifier saleIsOpen {
        require(totalSupply() <= MAX_MINTSUPPLY, "Sale has ended.");
        _;
    }

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

    function setMaximumAllowedTokens(uint256 _count) public onlyAuthorized {
        maximumAllowedTokensPerPurchase = _count;
    }

    function setActive(bool val) public onlyAuthorized {
        isActive = val;
        emit SaleActivation(val);
    }

    function setIsAllowListActive(bool _isAllowListActive) external onlyAuthorized {
        isAllowListActive = _isAllowListActive;
    }

    function setAllowListMaxMint(uint256 maxMint) external  onlyAuthorized {
        allowListMaxMint = maxMint;
    }

    function addToAllowList(address[] calldata addresses) external onlyAuthorized {
      for (uint256 i = 0; i < addresses.length; i++) {
        require(addresses[i] != address(0), "Can't add a null address");

        _allowList[addresses[i]] = true;
        _allowListClaimed[addresses[i]] > 0 ? _allowListClaimed[addresses[i]] : 0;
      }
    }

    function checkIfOnAllowList(address addr) external view returns (bool) {
      return _allowList[addr];
    }

    function removeFromAllowList(address[] calldata addresses) external onlyAuthorized {
      for (uint256 i = 0; i < addresses.length; i++) {
        require(addresses[i] != address(0), "Can't add a null address");

        _allowList[addresses[i]] = false;
      }
    }

    function allowListClaimedBy(address owner) external view returns (uint256){
      require(owner != address(0), 'Zero address not on Allow List');

      return _allowListClaimed[owner];
    }

    function setReserveAtATime(uint256 val) public onlyAuthorized {
        reserveAtATime = val;
    }

    function setMaxReserve(uint256 val) public onlyAuthorized {
        maxReserveCount = val;
    }

    function setPrice(uint256 _price) public onlyAuthorized {
        basePrice = _price;
    }

    function setBaseURI(string memory baseURI) public onlyAuthorized {
        _baseTokenURI = baseURI;
    }

    function getMaximumAllowedTokens() public view onlyAuthorized returns (uint256) {
        return maximumAllowedTokensPerPurchase;
    }

    function getPrice() external view returns (uint256) {
        return basePrice;
    }

    function getReserveAtATime() external view returns (uint256) {
        return reserveAtATime;
    }

    function getTotalSupply() external view returns (uint256) {
        return totalSupply();
    }

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

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

    function reserveNft() public onlyAuthorized {
        require(reservedCount <= maxReserveCount, "Max Reserves taken already!");
        uint256 supply = totalSupply();
        uint256 i;
        for (i = 0; i < reserveAtATime; i++) {
            emit AssetMinted(supply + i, msg.sender);
            _safeMint(msg.sender, supply + i);
            reservedCount++;
        }
    }

    function mint(address _to, uint256 _count) public payable saleIsOpen {
        if (msg.sender != owner()) {
            require(isActive, "Sale is not active currently.");
        }

        require(totalSupply() + _count <= MAX_MINTSUPPLY, "Total supply exceeded.");
        require(totalSupply() <= MAX_MINTSUPPLY, "Total supply spent.");
        require(
            _count <= maximumAllowedTokensPerPurchase,
            "Exceeds maximum allowed tokens"
        );
        require(msg.value >= basePrice * _count, "Insuffient ETH amount sent.");

        for (uint256 i = 0; i < _count; i++) {
            emit AssetMinted(totalSupply(), _to);
            _safeMint(_to, totalSupply());
        }
    }

  function preSaleMint(uint256 _count) public payable saleIsOpen {
    require(isAllowListActive, 'Allow List is not active');
    require(_allowList[msg.sender], 'You are not on the Allow List');
    require(totalSupply() < MAX_MINTSUPPLY, 'All tokens have been minted');
    require(_count <= allowListMaxMint, 'Cannot purchase this many tokens');
    require(_allowListClaimed[msg.sender] + _count <= allowListMaxMint, 'Purchase exceeds max allowed');
    require(msg.value >= basePrice * _count, 'Insuffient ETH amount sent.');

    for (uint256 i = 0; i < _count; i++) {
      _allowListClaimed[msg.sender] += 1;
      emit AssetMinted(totalSupply(), msg.sender);
      _safeMint(msg.sender, totalSupply());
    }
  }

  function walletOfOwner(address _owner) external view returns(uint256[] memory) {
    uint tokenCount = balanceOf(_owner);
    uint256[] memory tokensId = new uint256[](tokenCount);
    for(uint i = 0; i < tokenCount; i++){
        tokensId[i] = tokenOfOwnerByIndex(_owner, i);
    }
    return tokensId;
  }

  function withdraw() external onlyAuthorized {
    payable(owner()).transfer(address(this).balance);
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"baseURI","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":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"sender","type":"address"}],"name":"AssetMinted","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":false,"internalType":"bool","name":"isActive","type":"bool"}],"name":"SaleActivation","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":"MAX_MINTSUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"addToAllowList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"allowListClaimedBy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allowListMaxMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[{"internalType":"address","name":"addr","type":"address"}],"name":"checkIfOnAllowList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getContractOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaximumAllowedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getReserveAtATime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isAllowListActive","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":"maximumAllowedTokensPerPurchase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_count","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":[{"internalType":"uint256","name":"_count","type":"uint256"}],"name":"preSaleMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"removeFromAllowList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reserveNft","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"val","type":"bool"}],"name":"setActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxMint","type":"uint256"}],"name":"setAllowListMaxMint","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":"baseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_isAllowListActive","type":"bool"}],"name":"setIsAllowListActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"val","type":"uint256"}],"name":"setMaxReserve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_count","type":"uint256"}],"name":"setMaximumAllowedTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_price","type":"uint256"}],"name":"setPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"val","type":"uint256"}],"name":"setReserveAtATime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"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":[{"internalType":"address","name":"_owner","type":"address"}],"name":"walletOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405267013fbe85edc90000600b556032600c556000600d556032600e556000601060006101000a81548160ff0219169083151502179055506000601060016101000a81548160ff021916908315150217905550600a60115560036012553480156200006c57600080fd5b50604051620059c4380380620059c4833981810160405281019062000092919062000513565b6040518060400160405280600a81526020017f43726f7020436c617368000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f43524f5000000000000000000000000000000000000000000000000000000000815250816000908051906020019062000116929190620002c6565b5080600190805190602001906200012f929190620002c6565b50505062000152620001466200016a60201b60201c565b6200017260201b60201c565b62000163816200023860201b60201c565b50620005c9565b600033905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b3373ffffffffffffffffffffffffffffffffffffffff166200025f6200029c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200028057600080fd5b80600f908051906020019062000298929190620002c6565b5050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054620002d49062000593565b90600052602060002090601f016020900481019282620002f8576000855562000344565b82601f106200031357805160ff191683800117855562000344565b8280016001018555821562000344579182015b828111156200034357825182559160200191906001019062000326565b5b50905062000353919062000357565b5090565b5b808211156200037257600081600090555060010162000358565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620003df8262000394565b810181811067ffffffffffffffff82111715620004015762000400620003a5565b5b80604052505050565b60006200041662000376565b9050620004248282620003d4565b919050565b600067ffffffffffffffff821115620004475762000446620003a5565b5b620004528262000394565b9050602081019050919050565b60005b838110156200047f57808201518184015260208101905062000462565b838111156200048f576000848401525b50505050565b6000620004ac620004a68462000429565b6200040a565b905082815260208101848484011115620004cb57620004ca6200038f565b5b620004d88482856200045f565b509392505050565b600082601f830112620004f857620004f76200038a565b5b81516200050a84826020860162000495565b91505092915050565b6000602082840312156200052c576200052b62000380565b5b600082015167ffffffffffffffff8111156200054d576200054c62000385565b5b6200055b84828501620004e0565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620005ac57607f821691505b60208210811415620005c357620005c262000564565b5b50919050565b6153eb80620005d96000396000f3fe60806040526004361061027c5760003560e01c8063715018a61161014f5780639a3bf728116100c1578063c4e41b221161007a578063c4e41b2214610965578063c87b56dd14610990578063e7b62d96146109cd578063e985e9c5146109f8578063f2fde38b14610a35578063f6c9d9e314610a5e5761027c565b80639a3bf7281461086b578063a22cb46514610896578063a51312c8146108bf578063acec338a146108e8578063ad06d75814610911578063b88d4fde1461093c5761027c565b80637a6685f1116101135780637a6685f11461076d5780637f44ab2f146107965780638da5cb5b146107c157806391b7f5ed146107ec57806395d89b411461081557806398d5fdca146108405761027c565b8063715018a6146106d1578063718bc4af146106e857806371e3500c146107115780637263cfe2146107285780637835c635146107515761027c565b80632f745c59116101f35780634dfea627116101ac5780634dfea6271461059f5780634f6ccce7146105c857806355f804b31461060557806356a87caa1461062e5780636352211e1461065757806370a08231146106945761027c565b80632f745c591461049e5780633ccfd60b146104db57806340c10f19146104f257806342842e0e1461050e578063438b630014610537578063442890d5146105745761027c565b806318160ddd1161024557806318160ddd1461038c57806322e63d2e146103b757806322f3e2d4146103e257806323b872dd1461040d57806329fc6bae146104365780632c1205f4146104615761027c565b806208ffdd1461028157806301ffc9a7146102be57806306fdde03146102fb578063081812fc14610326578063095ea7b314610363575b600080fd5b34801561028d57600080fd5b506102a860048036038101906102a39190613814565b610a87565b6040516102b5919061385a565b60405180910390f35b3480156102ca57600080fd5b506102e560048036038101906102e091906138cd565b610b3f565b6040516102f29190613915565b60405180910390f35b34801561030757600080fd5b50610310610bb9565b60405161031d91906139c9565b60405180910390f35b34801561033257600080fd5b5061034d60048036038101906103489190613a17565b610c4b565b60405161035a9190613a53565b60405180910390f35b34801561036f57600080fd5b5061038a60048036038101906103859190613a6e565b610cd0565b005b34801561039857600080fd5b506103a1610de8565b6040516103ae919061385a565b60405180910390f35b3480156103c357600080fd5b506103cc610df5565b6040516103d9919061385a565b60405180910390f35b3480156103ee57600080fd5b506103f7610dfb565b6040516104049190613915565b60405180910390f35b34801561041957600080fd5b50610434600480360381019061042f9190613aae565b610e0e565b005b34801561044257600080fd5b5061044b610e6e565b6040516104589190613915565b60405180910390f35b34801561046d57600080fd5b5061048860048036038101906104839190613814565b610e81565b6040516104959190613915565b60405180910390f35b3480156104aa57600080fd5b506104c560048036038101906104c09190613a6e565b610ed7565b6040516104d2919061385a565b60405180910390f35b3480156104e757600080fd5b506104f0610f7c565b005b61050c60048036038101906105079190613a6e565b61100b565b005b34801561051a57600080fd5b5061053560048036038101906105309190613aae565b61128d565b005b34801561054357600080fd5b5061055e60048036038101906105599190613814565b6112ad565b60405161056b9190613bbf565b60405180910390f35b34801561058057600080fd5b5061058961135b565b6040516105969190613a53565b60405180910390f35b3480156105ab57600080fd5b506105c660048036038101906105c19190613a17565b61136a565b005b3480156105d457600080fd5b506105ef60048036038101906105ea9190613a17565b6113b3565b6040516105fc919061385a565b60405180910390f35b34801561061157600080fd5b5061062c60048036038101906106279190613d16565b611424565b005b34801561063a57600080fd5b5061065560048036038101906106509190613a17565b61147d565b005b34801561066357600080fd5b5061067e60048036038101906106799190613a17565b6114c6565b60405161068b9190613a53565b60405180910390f35b3480156106a057600080fd5b506106bb60048036038101906106b69190613814565b611578565b6040516106c8919061385a565b60405180910390f35b3480156106dd57600080fd5b506106e6611630565b005b3480156106f457600080fd5b5061070f600480360381019061070a9190613d8b565b6116b8565b005b34801561071d57600080fd5b50610726611714565b005b34801561073457600080fd5b5061074f600480360381019061074a9190613e18565b61183b565b005b61076b60048036038101906107669190613a17565b611a94565b005b34801561077957600080fd5b50610794600480360381019061078f9190613a17565b611df4565b005b3480156107a257600080fd5b506107ab611e3d565b6040516107b8919061385a565b60405180910390f35b3480156107cd57600080fd5b506107d6611e43565b6040516107e39190613a53565b60405180910390f35b3480156107f857600080fd5b50610813600480360381019061080e9190613a17565b611e6d565b005b34801561082157600080fd5b5061082a611eb6565b60405161083791906139c9565b60405180910390f35b34801561084c57600080fd5b50610855611f48565b604051610862919061385a565b60405180910390f35b34801561087757600080fd5b50610880611f52565b60405161088d919061385a565b60405180910390f35b3480156108a257600080fd5b506108bd60048036038101906108b89190613e65565b611f58565b005b3480156108cb57600080fd5b506108e660048036038101906108e19190613e18565b6120d9565b005b3480156108f457600080fd5b5061090f600480360381019061090a9190613d8b565b612254565b005b34801561091d57600080fd5b506109266122e7565b604051610933919061385a565b60405180910390f35b34801561094857600080fd5b50610963600480360381019061095e9190613f46565b612330565b005b34801561097157600080fd5b5061097a612392565b604051610987919061385a565b60405180910390f35b34801561099c57600080fd5b506109b760048036038101906109b29190613a17565b6123a1565b6040516109c491906139c9565b60405180910390f35b3480156109d957600080fd5b506109e2612448565b6040516109ef919061385a565b60405180910390f35b348015610a0457600080fd5b50610a1f6004803603810190610a1a9190613fc9565b612452565b604051610a2c9190613915565b60405180910390f35b348015610a4157600080fd5b50610a5c6004803603810190610a579190613814565b6124e6565b005b348015610a6a57600080fd5b50610a856004803603810190610a809190613a17565b6125de565b005b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610af8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aef90614055565b60405180910390fd5b601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610bb25750610bb182612627565b5b9050919050565b606060008054610bc8906140a4565b80601f0160208091040260200160405190810160405280929190818152602001828054610bf4906140a4565b8015610c415780601f10610c1657610100808354040283529160200191610c41565b820191906000526020600020905b815481529060010190602001808311610c2457829003601f168201915b5050505050905090565b6000610c5682612709565b610c95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8c90614148565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610cdb826114c6565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d43906141da565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610d6b612775565b73ffffffffffffffffffffffffffffffffffffffff161480610d9a5750610d9981610d94612775565b612452565b5b610dd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd09061426c565b60405180910390fd5b610de3838361277d565b505050565b6000600880549050905090565b611d4c81565b601060009054906101000a900460ff1681565b610e1f610e19612775565b82612836565b610e5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e55906142fe565b60405180910390fd5b610e69838383612914565b505050565b601060019054906101000a900460ff1681565b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000610ee283611578565b8210610f23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1a90614390565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16610f9b611e43565b73ffffffffffffffffffffffffffffffffffffffff1614610fbb57600080fd5b610fc3611e43565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611008573d6000803e3d6000fd5b50565b611d4c611016610de8565b1115611057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104e906143fc565b60405180910390fd5b61105f611e43565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110e157601060009054906101000a900460ff166110e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d790614468565b60405180910390fd5b5b611d4c816110ed610de8565b6110f791906144b7565b1115611138576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112f90614559565b60405180910390fd5b611d4c611143610de8565b1115611184576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117b906145c5565b60405180910390fd5b6011548111156111c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c090614631565b60405180910390fd5b80600b546111d79190614651565b341015611219576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611210906146f7565b60405180910390fd5b60005b81811015611288577f55f284809f4c5b7377fbe62f2feeb9686e3834dcae5f3ca955140fe6547cd35561124d610de8565b8460405161125c929190614717565b60405180910390a161127583611270610de8565b612b70565b808061128090614740565b91505061121c565b505050565b6112a883838360405180602001604052806000815250612330565b505050565b606060006112ba83611578565b905060008167ffffffffffffffff8111156112d8576112d7613beb565b5b6040519080825280602002602001820160405280156113065781602001602082028036833780820191505090505b50905060005b828110156113505761131e8582610ed7565b82828151811061133157611330614789565b5b602002602001018181525050808061134890614740565b91505061130c565b508092505050919050565b6000611365611e43565b905090565b3373ffffffffffffffffffffffffffffffffffffffff16611389611e43565b73ffffffffffffffffffffffffffffffffffffffff16146113a957600080fd5b8060118190555050565b60006113bd610de8565b82106113fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f59061482a565b60405180910390fd5b6008828154811061141257611411614789565b5b90600052602060002001549050919050565b3373ffffffffffffffffffffffffffffffffffffffff16611443611e43565b73ffffffffffffffffffffffffffffffffffffffff161461146357600080fd5b80600f90805190602001906114799291906136ff565b5050565b3373ffffffffffffffffffffffffffffffffffffffff1661149c611e43565b73ffffffffffffffffffffffffffffffffffffffff16146114bc57600080fd5b80600e8190555050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561156f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611566906148bc565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e09061494e565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611638612775565b73ffffffffffffffffffffffffffffffffffffffff16611656611e43565b73ffffffffffffffffffffffffffffffffffffffff16146116ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a3906149ba565b60405180910390fd5b6116b66000612b8e565b565b3373ffffffffffffffffffffffffffffffffffffffff166116d7611e43565b73ffffffffffffffffffffffffffffffffffffffff16146116f757600080fd5b80601060016101000a81548160ff02191690831515021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16611733611e43565b73ffffffffffffffffffffffffffffffffffffffff161461175357600080fd5b600e54600d54111561179a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179190614a26565b60405180910390fd5b60006117a4610de8565b905060005b600c54811015611837577f55f284809f4c5b7377fbe62f2feeb9686e3834dcae5f3ca955140fe6547cd35581836117e091906144b7565b336040516117ef929190614717565b60405180910390a161180c33828461180791906144b7565b612b70565b600d600081548092919061181f90614740565b9190505550808061182f90614740565b9150506117a9565b5050565b3373ffffffffffffffffffffffffffffffffffffffff1661185a611e43565b73ffffffffffffffffffffffffffffffffffffffff161461187a57600080fd5b60005b82829050811015611a8f57600073ffffffffffffffffffffffffffffffffffffffff168383838181106118b3576118b2614789565b5b90506020020160208101906118c89190613814565b73ffffffffffffffffffffffffffffffffffffffff16141561191f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191690614a92565b60405180910390fd5b60016013600085858581811061193857611937614789565b5b905060200201602081019061194d9190613814565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000601460008585858181106119b7576119b6614789565b5b90506020020160208101906119cc9190613814565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611a13576000611a7b565b60146000848484818110611a2a57611a29614789565b5b9050602002016020810190611a3f9190613814565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020545b508080611a8790614740565b91505061187d565b505050565b611d4c611a9f610de8565b1115611ae0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad7906143fc565b60405180910390fd5b601060019054906101000a900460ff16611b2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2690614afe565b60405180910390fd5b601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611bbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb290614b6a565b60405180910390fd5b611d4c611bc6610de8565b10611c06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfd90614bd6565b60405180910390fd5b601254811115611c4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4290614c42565b60405180910390fd5b60125481601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c9991906144b7565b1115611cda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd190614cae565b60405180910390fd5b80600b54611ce89190614651565b341015611d2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d21906146f7565b60405180910390fd5b60005b81811015611df0576001601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d8591906144b7565b925050819055507f55f284809f4c5b7377fbe62f2feeb9686e3834dcae5f3ca955140fe6547cd355611db5610de8565b33604051611dc4929190614717565b60405180910390a1611ddd33611dd8610de8565b612b70565b8080611de890614740565b915050611d2d565b5050565b3373ffffffffffffffffffffffffffffffffffffffff16611e13611e43565b73ffffffffffffffffffffffffffffffffffffffff1614611e3357600080fd5b8060128190555050565b60125481565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b3373ffffffffffffffffffffffffffffffffffffffff16611e8c611e43565b73ffffffffffffffffffffffffffffffffffffffff1614611eac57600080fd5b80600b8190555050565b606060018054611ec5906140a4565b80601f0160208091040260200160405190810160405280929190818152602001828054611ef1906140a4565b8015611f3e5780601f10611f1357610100808354040283529160200191611f3e565b820191906000526020600020905b815481529060010190602001808311611f2157829003601f168201915b5050505050905090565b6000600b54905090565b60115481565b611f60612775565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611fce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc590614d1a565b60405180910390fd5b8060056000611fdb612775565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16612088612775565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516120cd9190613915565b60405180910390a35050565b3373ffffffffffffffffffffffffffffffffffffffff166120f8611e43565b73ffffffffffffffffffffffffffffffffffffffff161461211857600080fd5b60005b8282905081101561224f57600073ffffffffffffffffffffffffffffffffffffffff1683838381811061215157612150614789565b5b90506020020160208101906121669190613814565b73ffffffffffffffffffffffffffffffffffffffff1614156121bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b490614a92565b60405180910390fd5b6000601360008585858181106121d6576121d5614789565b5b90506020020160208101906121eb9190613814565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061224790614740565b91505061211b565b505050565b3373ffffffffffffffffffffffffffffffffffffffff16612273611e43565b73ffffffffffffffffffffffffffffffffffffffff161461229357600080fd5b80601060006101000a81548160ff0219169083151502179055507f58655b75d3df612fe99ead00dbf0812d415d35078fe06217a94c0818bb13967f816040516122dc9190613915565b60405180910390a150565b60003373ffffffffffffffffffffffffffffffffffffffff16612308611e43565b73ffffffffffffffffffffffffffffffffffffffff161461232857600080fd5b601154905090565b61234161233b612775565b83612836565b612380576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612377906142fe565b60405180910390fd5b61238c84848484612c54565b50505050565b600061239c610de8565b905090565b60606123ac82612709565b6123eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e290614dac565b60405180910390fd5b60006123f5612cb0565b905060008151116124155760405180602001604052806000815250612440565b8061241f84612d42565b604051602001612430929190614e08565b6040516020818303038152906040525b915050919050565b6000600c54905090565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6124ee612775565b73ffffffffffffffffffffffffffffffffffffffff1661250c611e43565b73ffffffffffffffffffffffffffffffffffffffff1614612562576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612559906149ba565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156125d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c990614e9e565b60405180910390fd5b6125db81612b8e565b50565b3373ffffffffffffffffffffffffffffffffffffffff166125fd611e43565b73ffffffffffffffffffffffffffffffffffffffff161461261d57600080fd5b80600c8190555050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806126f257507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80612702575061270182612ea3565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166127f0836114c6565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600061284182612709565b612880576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287790614f30565b60405180910390fd5b600061288b836114c6565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806128fa57508373ffffffffffffffffffffffffffffffffffffffff166128e284610c4b565b73ffffffffffffffffffffffffffffffffffffffff16145b8061290b575061290a8185612452565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16612934826114c6565b73ffffffffffffffffffffffffffffffffffffffff161461298a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298190614fc2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156129fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f190615054565b60405180910390fd5b612a05838383612f0d565b612a1060008261277d565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612a609190615074565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612ab791906144b7565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b612b8a828260405180602001604052806000815250613021565b5050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612c5f848484612914565b612c6b8484848461307c565b612caa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ca19061511a565b60405180910390fd5b50505050565b6060600f8054612cbf906140a4565b80601f0160208091040260200160405190810160405280929190818152602001828054612ceb906140a4565b8015612d385780601f10612d0d57610100808354040283529160200191612d38565b820191906000526020600020905b815481529060010190602001808311612d1b57829003601f168201915b5050505050905090565b60606000821415612d8a576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612e9e565b600082905060005b60008214612dbc578080612da590614740565b915050600a82612db59190615169565b9150612d92565b60008167ffffffffffffffff811115612dd857612dd7613beb565b5b6040519080825280601f01601f191660200182016040528015612e0a5781602001600182028036833780820191505090505b5090505b60008514612e9757600182612e239190615074565b9150600a85612e32919061519a565b6030612e3e91906144b7565b60f81b818381518110612e5457612e53614789565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612e909190615169565b9450612e0e565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b612f18838383613213565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612f5b57612f5681613218565b612f9a565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612f9957612f988382613261565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612fdd57612fd8816133ce565b61301c565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461301b5761301a828261349f565b5b5b505050565b61302b838361351e565b613038600084848461307c565b613077576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161306e9061511a565b60405180910390fd5b505050565b600061309d8473ffffffffffffffffffffffffffffffffffffffff166136ec565b15613206578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026130c6612775565b8786866040518563ffffffff1660e01b81526004016130e89493929190615220565b602060405180830381600087803b15801561310257600080fd5b505af192505050801561313357506040513d601f19601f820116820180604052508101906131309190615281565b60015b6131b6573d8060008114613163576040519150601f19603f3d011682016040523d82523d6000602084013e613168565b606091505b506000815114156131ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131a59061511a565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505061320b565b600190505b949350505050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161326e84611578565b6132789190615074565b905060006007600084815260200190815260200160002054905081811461335d576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016008805490506133e29190615074565b905060006009600084815260200190815260200160002054905060006008838154811061341257613411614789565b5b90600052602060002001549050806008838154811061343457613433614789565b5b906000526020600020018190555081600960008381526020019081526020016000208190555060096000858152602001908152602001600020600090556008805480613483576134826152ae565b5b6001900381819060005260206000200160009055905550505050565b60006134aa83611578565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561358e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161358590615329565b60405180910390fd5b61359781612709565b156135d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135ce90615395565b60405180910390fd5b6135e360008383612f0d565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461363391906144b7565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b82805461370b906140a4565b90600052602060002090601f01602090048101928261372d5760008555613774565b82601f1061374657805160ff1916838001178555613774565b82800160010185558215613774579182015b82811115613773578251825591602001919060010190613758565b5b5090506137819190613785565b5090565b5b8082111561379e576000816000905550600101613786565b5090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006137e1826137b6565b9050919050565b6137f1816137d6565b81146137fc57600080fd5b50565b60008135905061380e816137e8565b92915050565b60006020828403121561382a576138296137ac565b5b6000613838848285016137ff565b91505092915050565b6000819050919050565b61385481613841565b82525050565b600060208201905061386f600083018461384b565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6138aa81613875565b81146138b557600080fd5b50565b6000813590506138c7816138a1565b92915050565b6000602082840312156138e3576138e26137ac565b5b60006138f1848285016138b8565b91505092915050565b60008115159050919050565b61390f816138fa565b82525050565b600060208201905061392a6000830184613906565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561396a57808201518184015260208101905061394f565b83811115613979576000848401525b50505050565b6000601f19601f8301169050919050565b600061399b82613930565b6139a5818561393b565b93506139b581856020860161394c565b6139be8161397f565b840191505092915050565b600060208201905081810360008301526139e38184613990565b905092915050565b6139f481613841565b81146139ff57600080fd5b50565b600081359050613a11816139eb565b92915050565b600060208284031215613a2d57613a2c6137ac565b5b6000613a3b84828501613a02565b91505092915050565b613a4d816137d6565b82525050565b6000602082019050613a686000830184613a44565b92915050565b60008060408385031215613a8557613a846137ac565b5b6000613a93858286016137ff565b9250506020613aa485828601613a02565b9150509250929050565b600080600060608486031215613ac757613ac66137ac565b5b6000613ad5868287016137ff565b9350506020613ae6868287016137ff565b9250506040613af786828701613a02565b9150509250925092565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613b3681613841565b82525050565b6000613b488383613b2d565b60208301905092915050565b6000602082019050919050565b6000613b6c82613b01565b613b768185613b0c565b9350613b8183613b1d565b8060005b83811015613bb2578151613b998882613b3c565b9750613ba483613b54565b925050600181019050613b85565b5085935050505092915050565b60006020820190508181036000830152613bd98184613b61565b905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613c238261397f565b810181811067ffffffffffffffff82111715613c4257613c41613beb565b5b80604052505050565b6000613c556137a2565b9050613c618282613c1a565b919050565b600067ffffffffffffffff821115613c8157613c80613beb565b5b613c8a8261397f565b9050602081019050919050565b82818337600083830152505050565b6000613cb9613cb484613c66565b613c4b565b905082815260208101848484011115613cd557613cd4613be6565b5b613ce0848285613c97565b509392505050565b600082601f830112613cfd57613cfc613be1565b5b8135613d0d848260208601613ca6565b91505092915050565b600060208284031215613d2c57613d2b6137ac565b5b600082013567ffffffffffffffff811115613d4a57613d496137b1565b5b613d5684828501613ce8565b91505092915050565b613d68816138fa565b8114613d7357600080fd5b50565b600081359050613d8581613d5f565b92915050565b600060208284031215613da157613da06137ac565b5b6000613daf84828501613d76565b91505092915050565b600080fd5b600080fd5b60008083601f840112613dd857613dd7613be1565b5b8235905067ffffffffffffffff811115613df557613df4613db8565b5b602083019150836020820283011115613e1157613e10613dbd565b5b9250929050565b60008060208385031215613e2f57613e2e6137ac565b5b600083013567ffffffffffffffff811115613e4d57613e4c6137b1565b5b613e5985828601613dc2565b92509250509250929050565b60008060408385031215613e7c57613e7b6137ac565b5b6000613e8a858286016137ff565b9250506020613e9b85828601613d76565b9150509250929050565b600067ffffffffffffffff821115613ec057613ebf613beb565b5b613ec98261397f565b9050602081019050919050565b6000613ee9613ee484613ea5565b613c4b565b905082815260208101848484011115613f0557613f04613be6565b5b613f10848285613c97565b509392505050565b600082601f830112613f2d57613f2c613be1565b5b8135613f3d848260208601613ed6565b91505092915050565b60008060008060808587031215613f6057613f5f6137ac565b5b6000613f6e878288016137ff565b9450506020613f7f878288016137ff565b9350506040613f9087828801613a02565b925050606085013567ffffffffffffffff811115613fb157613fb06137b1565b5b613fbd87828801613f18565b91505092959194509250565b60008060408385031215613fe057613fdf6137ac565b5b6000613fee858286016137ff565b9250506020613fff858286016137ff565b9150509250929050565b7f5a65726f2061646472657373206e6f74206f6e20416c6c6f77204c6973740000600082015250565b600061403f601e8361393b565b915061404a82614009565b602082019050919050565b6000602082019050818103600083015261406e81614032565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806140bc57607f821691505b602082108114156140d0576140cf614075565b5b50919050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000614132602c8361393b565b915061413d826140d6565b604082019050919050565b6000602082019050818103600083015261416181614125565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006141c460218361393b565b91506141cf82614168565b604082019050919050565b600060208201905081810360008301526141f3816141b7565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b600061425660388361393b565b9150614261826141fa565b604082019050919050565b6000602082019050818103600083015261428581614249565b9050919050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b60006142e860318361393b565b91506142f38261428c565b604082019050919050565b60006020820190508181036000830152614317816142db565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b600061437a602b8361393b565b91506143858261431e565b604082019050919050565b600060208201905081810360008301526143a98161436d565b9050919050565b7f53616c652068617320656e6465642e0000000000000000000000000000000000600082015250565b60006143e6600f8361393b565b91506143f1826143b0565b602082019050919050565b60006020820190508181036000830152614415816143d9565b9050919050565b7f53616c65206973206e6f74206163746976652063757272656e746c792e000000600082015250565b6000614452601d8361393b565b915061445d8261441c565b602082019050919050565b6000602082019050818103600083015261448181614445565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006144c282613841565b91506144cd83613841565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561450257614501614488565b5b828201905092915050565b7f546f74616c20737570706c792065786365656465642e00000000000000000000600082015250565b600061454360168361393b565b915061454e8261450d565b602082019050919050565b6000602082019050818103600083015261457281614536565b9050919050565b7f546f74616c20737570706c79207370656e742e00000000000000000000000000600082015250565b60006145af60138361393b565b91506145ba82614579565b602082019050919050565b600060208201905081810360008301526145de816145a2565b9050919050565b7f45786365656473206d6178696d756d20616c6c6f77656420746f6b656e730000600082015250565b600061461b601e8361393b565b9150614626826145e5565b602082019050919050565b6000602082019050818103600083015261464a8161460e565b9050919050565b600061465c82613841565b915061466783613841565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156146a05761469f614488565b5b828202905092915050565b7f496e7375666669656e742045544820616d6f756e742073656e742e0000000000600082015250565b60006146e1601b8361393b565b91506146ec826146ab565b602082019050919050565b60006020820190508181036000830152614710816146d4565b9050919050565b600060408201905061472c600083018561384b565b6147396020830184613a44565b9392505050565b600061474b82613841565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561477e5761477d614488565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b6000614814602c8361393b565b915061481f826147b8565b604082019050919050565b6000602082019050818103600083015261484381614807565b9050919050565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b60006148a660298361393b565b91506148b18261484a565b604082019050919050565b600060208201905081810360008301526148d581614899565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b6000614938602a8361393b565b9150614943826148dc565b604082019050919050565b600060208201905081810360008301526149678161492b565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006149a460208361393b565b91506149af8261496e565b602082019050919050565b600060208201905081810360008301526149d381614997565b9050919050565b7f4d61782052657365727665732074616b656e20616c7265616479210000000000600082015250565b6000614a10601b8361393b565b9150614a1b826149da565b602082019050919050565b60006020820190508181036000830152614a3f81614a03565b9050919050565b7f43616e2774206164642061206e756c6c20616464726573730000000000000000600082015250565b6000614a7c60188361393b565b9150614a8782614a46565b602082019050919050565b60006020820190508181036000830152614aab81614a6f565b9050919050565b7f416c6c6f77204c697374206973206e6f74206163746976650000000000000000600082015250565b6000614ae860188361393b565b9150614af382614ab2565b602082019050919050565b60006020820190508181036000830152614b1781614adb565b9050919050565b7f596f7520617265206e6f74206f6e2074686520416c6c6f77204c697374000000600082015250565b6000614b54601d8361393b565b9150614b5f82614b1e565b602082019050919050565b60006020820190508181036000830152614b8381614b47565b9050919050565b7f416c6c20746f6b656e732068617665206265656e206d696e7465640000000000600082015250565b6000614bc0601b8361393b565b9150614bcb82614b8a565b602082019050919050565b60006020820190508181036000830152614bef81614bb3565b9050919050565b7f43616e6e6f742070757263686173652074686973206d616e7920746f6b656e73600082015250565b6000614c2c60208361393b565b9150614c3782614bf6565b602082019050919050565b60006020820190508181036000830152614c5b81614c1f565b9050919050565b7f50757263686173652065786365656473206d617820616c6c6f77656400000000600082015250565b6000614c98601c8361393b565b9150614ca382614c62565b602082019050919050565b60006020820190508181036000830152614cc781614c8b565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000614d0460198361393b565b9150614d0f82614cce565b602082019050919050565b60006020820190508181036000830152614d3381614cf7565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000614d96602f8361393b565b9150614da182614d3a565b604082019050919050565b60006020820190508181036000830152614dc581614d89565b9050919050565b600081905092915050565b6000614de282613930565b614dec8185614dcc565b9350614dfc81856020860161394c565b80840191505092915050565b6000614e148285614dd7565b9150614e208284614dd7565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614e8860268361393b565b9150614e9382614e2c565b604082019050919050565b60006020820190508181036000830152614eb781614e7b565b9050919050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000614f1a602c8361393b565b9150614f2582614ebe565b604082019050919050565b60006020820190508181036000830152614f4981614f0d565b9050919050565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b6000614fac60298361393b565b9150614fb782614f50565b604082019050919050565b60006020820190508181036000830152614fdb81614f9f565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061503e60248361393b565b915061504982614fe2565b604082019050919050565b6000602082019050818103600083015261506d81615031565b9050919050565b600061507f82613841565b915061508a83613841565b92508282101561509d5761509c614488565b5b828203905092915050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b600061510460328361393b565b915061510f826150a8565b604082019050919050565b60006020820190508181036000830152615133816150f7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061517482613841565b915061517f83613841565b92508261518f5761518e61513a565b5b828204905092915050565b60006151a582613841565b91506151b083613841565b9250826151c0576151bf61513a565b5b828206905092915050565b600081519050919050565b600082825260208201905092915050565b60006151f2826151cb565b6151fc81856151d6565b935061520c81856020860161394c565b6152158161397f565b840191505092915050565b60006080820190506152356000830187613a44565b6152426020830186613a44565b61524f604083018561384b565b818103606083015261526181846151e7565b905095945050505050565b60008151905061527b816138a1565b92915050565b600060208284031215615297576152966137ac565b5b60006152a58482850161526c565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b600061531360208361393b565b915061531e826152dd565b602082019050919050565b6000602082019050818103600083015261534281615306565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b600061537f601c8361393b565b915061538a82615349565b602082019050919050565b600060208201905081810360008301526153ae81615372565b905091905056fea26469706673582212201bb9188e8512b1bd4a5ad8b7b6a0c101882f79d23d8bf95d282d336ba596c80964736f6c634300080900330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000005568747470733a2f2f63726f70636c6173682e6d7970696e6174612e636c6f75642f697066732f516d516257716e5541314137325a7967764461596a7047457236585641754744796964616f594d67796d527379672f0000000000000000000000

Deployed Bytecode

0x60806040526004361061027c5760003560e01c8063715018a61161014f5780639a3bf728116100c1578063c4e41b221161007a578063c4e41b2214610965578063c87b56dd14610990578063e7b62d96146109cd578063e985e9c5146109f8578063f2fde38b14610a35578063f6c9d9e314610a5e5761027c565b80639a3bf7281461086b578063a22cb46514610896578063a51312c8146108bf578063acec338a146108e8578063ad06d75814610911578063b88d4fde1461093c5761027c565b80637a6685f1116101135780637a6685f11461076d5780637f44ab2f146107965780638da5cb5b146107c157806391b7f5ed146107ec57806395d89b411461081557806398d5fdca146108405761027c565b8063715018a6146106d1578063718bc4af146106e857806371e3500c146107115780637263cfe2146107285780637835c635146107515761027c565b80632f745c59116101f35780634dfea627116101ac5780634dfea6271461059f5780634f6ccce7146105c857806355f804b31461060557806356a87caa1461062e5780636352211e1461065757806370a08231146106945761027c565b80632f745c591461049e5780633ccfd60b146104db57806340c10f19146104f257806342842e0e1461050e578063438b630014610537578063442890d5146105745761027c565b806318160ddd1161024557806318160ddd1461038c57806322e63d2e146103b757806322f3e2d4146103e257806323b872dd1461040d57806329fc6bae146104365780632c1205f4146104615761027c565b806208ffdd1461028157806301ffc9a7146102be57806306fdde03146102fb578063081812fc14610326578063095ea7b314610363575b600080fd5b34801561028d57600080fd5b506102a860048036038101906102a39190613814565b610a87565b6040516102b5919061385a565b60405180910390f35b3480156102ca57600080fd5b506102e560048036038101906102e091906138cd565b610b3f565b6040516102f29190613915565b60405180910390f35b34801561030757600080fd5b50610310610bb9565b60405161031d91906139c9565b60405180910390f35b34801561033257600080fd5b5061034d60048036038101906103489190613a17565b610c4b565b60405161035a9190613a53565b60405180910390f35b34801561036f57600080fd5b5061038a60048036038101906103859190613a6e565b610cd0565b005b34801561039857600080fd5b506103a1610de8565b6040516103ae919061385a565b60405180910390f35b3480156103c357600080fd5b506103cc610df5565b6040516103d9919061385a565b60405180910390f35b3480156103ee57600080fd5b506103f7610dfb565b6040516104049190613915565b60405180910390f35b34801561041957600080fd5b50610434600480360381019061042f9190613aae565b610e0e565b005b34801561044257600080fd5b5061044b610e6e565b6040516104589190613915565b60405180910390f35b34801561046d57600080fd5b5061048860048036038101906104839190613814565b610e81565b6040516104959190613915565b60405180910390f35b3480156104aa57600080fd5b506104c560048036038101906104c09190613a6e565b610ed7565b6040516104d2919061385a565b60405180910390f35b3480156104e757600080fd5b506104f0610f7c565b005b61050c60048036038101906105079190613a6e565b61100b565b005b34801561051a57600080fd5b5061053560048036038101906105309190613aae565b61128d565b005b34801561054357600080fd5b5061055e60048036038101906105599190613814565b6112ad565b60405161056b9190613bbf565b60405180910390f35b34801561058057600080fd5b5061058961135b565b6040516105969190613a53565b60405180910390f35b3480156105ab57600080fd5b506105c660048036038101906105c19190613a17565b61136a565b005b3480156105d457600080fd5b506105ef60048036038101906105ea9190613a17565b6113b3565b6040516105fc919061385a565b60405180910390f35b34801561061157600080fd5b5061062c60048036038101906106279190613d16565b611424565b005b34801561063a57600080fd5b5061065560048036038101906106509190613a17565b61147d565b005b34801561066357600080fd5b5061067e60048036038101906106799190613a17565b6114c6565b60405161068b9190613a53565b60405180910390f35b3480156106a057600080fd5b506106bb60048036038101906106b69190613814565b611578565b6040516106c8919061385a565b60405180910390f35b3480156106dd57600080fd5b506106e6611630565b005b3480156106f457600080fd5b5061070f600480360381019061070a9190613d8b565b6116b8565b005b34801561071d57600080fd5b50610726611714565b005b34801561073457600080fd5b5061074f600480360381019061074a9190613e18565b61183b565b005b61076b60048036038101906107669190613a17565b611a94565b005b34801561077957600080fd5b50610794600480360381019061078f9190613a17565b611df4565b005b3480156107a257600080fd5b506107ab611e3d565b6040516107b8919061385a565b60405180910390f35b3480156107cd57600080fd5b506107d6611e43565b6040516107e39190613a53565b60405180910390f35b3480156107f857600080fd5b50610813600480360381019061080e9190613a17565b611e6d565b005b34801561082157600080fd5b5061082a611eb6565b60405161083791906139c9565b60405180910390f35b34801561084c57600080fd5b50610855611f48565b604051610862919061385a565b60405180910390f35b34801561087757600080fd5b50610880611f52565b60405161088d919061385a565b60405180910390f35b3480156108a257600080fd5b506108bd60048036038101906108b89190613e65565b611f58565b005b3480156108cb57600080fd5b506108e660048036038101906108e19190613e18565b6120d9565b005b3480156108f457600080fd5b5061090f600480360381019061090a9190613d8b565b612254565b005b34801561091d57600080fd5b506109266122e7565b604051610933919061385a565b60405180910390f35b34801561094857600080fd5b50610963600480360381019061095e9190613f46565b612330565b005b34801561097157600080fd5b5061097a612392565b604051610987919061385a565b60405180910390f35b34801561099c57600080fd5b506109b760048036038101906109b29190613a17565b6123a1565b6040516109c491906139c9565b60405180910390f35b3480156109d957600080fd5b506109e2612448565b6040516109ef919061385a565b60405180910390f35b348015610a0457600080fd5b50610a1f6004803603810190610a1a9190613fc9565b612452565b604051610a2c9190613915565b60405180910390f35b348015610a4157600080fd5b50610a5c6004803603810190610a579190613814565b6124e6565b005b348015610a6a57600080fd5b50610a856004803603810190610a809190613a17565b6125de565b005b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610af8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aef90614055565b60405180910390fd5b601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610bb25750610bb182612627565b5b9050919050565b606060008054610bc8906140a4565b80601f0160208091040260200160405190810160405280929190818152602001828054610bf4906140a4565b8015610c415780601f10610c1657610100808354040283529160200191610c41565b820191906000526020600020905b815481529060010190602001808311610c2457829003601f168201915b5050505050905090565b6000610c5682612709565b610c95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8c90614148565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610cdb826114c6565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d43906141da565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610d6b612775565b73ffffffffffffffffffffffffffffffffffffffff161480610d9a5750610d9981610d94612775565b612452565b5b610dd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd09061426c565b60405180910390fd5b610de3838361277d565b505050565b6000600880549050905090565b611d4c81565b601060009054906101000a900460ff1681565b610e1f610e19612775565b82612836565b610e5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e55906142fe565b60405180910390fd5b610e69838383612914565b505050565b601060019054906101000a900460ff1681565b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000610ee283611578565b8210610f23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1a90614390565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16610f9b611e43565b73ffffffffffffffffffffffffffffffffffffffff1614610fbb57600080fd5b610fc3611e43565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611008573d6000803e3d6000fd5b50565b611d4c611016610de8565b1115611057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104e906143fc565b60405180910390fd5b61105f611e43565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110e157601060009054906101000a900460ff166110e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d790614468565b60405180910390fd5b5b611d4c816110ed610de8565b6110f791906144b7565b1115611138576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112f90614559565b60405180910390fd5b611d4c611143610de8565b1115611184576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117b906145c5565b60405180910390fd5b6011548111156111c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c090614631565b60405180910390fd5b80600b546111d79190614651565b341015611219576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611210906146f7565b60405180910390fd5b60005b81811015611288577f55f284809f4c5b7377fbe62f2feeb9686e3834dcae5f3ca955140fe6547cd35561124d610de8565b8460405161125c929190614717565b60405180910390a161127583611270610de8565b612b70565b808061128090614740565b91505061121c565b505050565b6112a883838360405180602001604052806000815250612330565b505050565b606060006112ba83611578565b905060008167ffffffffffffffff8111156112d8576112d7613beb565b5b6040519080825280602002602001820160405280156113065781602001602082028036833780820191505090505b50905060005b828110156113505761131e8582610ed7565b82828151811061133157611330614789565b5b602002602001018181525050808061134890614740565b91505061130c565b508092505050919050565b6000611365611e43565b905090565b3373ffffffffffffffffffffffffffffffffffffffff16611389611e43565b73ffffffffffffffffffffffffffffffffffffffff16146113a957600080fd5b8060118190555050565b60006113bd610de8565b82106113fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f59061482a565b60405180910390fd5b6008828154811061141257611411614789565b5b90600052602060002001549050919050565b3373ffffffffffffffffffffffffffffffffffffffff16611443611e43565b73ffffffffffffffffffffffffffffffffffffffff161461146357600080fd5b80600f90805190602001906114799291906136ff565b5050565b3373ffffffffffffffffffffffffffffffffffffffff1661149c611e43565b73ffffffffffffffffffffffffffffffffffffffff16146114bc57600080fd5b80600e8190555050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561156f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611566906148bc565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e09061494e565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611638612775565b73ffffffffffffffffffffffffffffffffffffffff16611656611e43565b73ffffffffffffffffffffffffffffffffffffffff16146116ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a3906149ba565b60405180910390fd5b6116b66000612b8e565b565b3373ffffffffffffffffffffffffffffffffffffffff166116d7611e43565b73ffffffffffffffffffffffffffffffffffffffff16146116f757600080fd5b80601060016101000a81548160ff02191690831515021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16611733611e43565b73ffffffffffffffffffffffffffffffffffffffff161461175357600080fd5b600e54600d54111561179a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179190614a26565b60405180910390fd5b60006117a4610de8565b905060005b600c54811015611837577f55f284809f4c5b7377fbe62f2feeb9686e3834dcae5f3ca955140fe6547cd35581836117e091906144b7565b336040516117ef929190614717565b60405180910390a161180c33828461180791906144b7565b612b70565b600d600081548092919061181f90614740565b9190505550808061182f90614740565b9150506117a9565b5050565b3373ffffffffffffffffffffffffffffffffffffffff1661185a611e43565b73ffffffffffffffffffffffffffffffffffffffff161461187a57600080fd5b60005b82829050811015611a8f57600073ffffffffffffffffffffffffffffffffffffffff168383838181106118b3576118b2614789565b5b90506020020160208101906118c89190613814565b73ffffffffffffffffffffffffffffffffffffffff16141561191f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191690614a92565b60405180910390fd5b60016013600085858581811061193857611937614789565b5b905060200201602081019061194d9190613814565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000601460008585858181106119b7576119b6614789565b5b90506020020160208101906119cc9190613814565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611a13576000611a7b565b60146000848484818110611a2a57611a29614789565b5b9050602002016020810190611a3f9190613814565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020545b508080611a8790614740565b91505061187d565b505050565b611d4c611a9f610de8565b1115611ae0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad7906143fc565b60405180910390fd5b601060019054906101000a900460ff16611b2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2690614afe565b60405180910390fd5b601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611bbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb290614b6a565b60405180910390fd5b611d4c611bc6610de8565b10611c06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfd90614bd6565b60405180910390fd5b601254811115611c4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4290614c42565b60405180910390fd5b60125481601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c9991906144b7565b1115611cda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd190614cae565b60405180910390fd5b80600b54611ce89190614651565b341015611d2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d21906146f7565b60405180910390fd5b60005b81811015611df0576001601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d8591906144b7565b925050819055507f55f284809f4c5b7377fbe62f2feeb9686e3834dcae5f3ca955140fe6547cd355611db5610de8565b33604051611dc4929190614717565b60405180910390a1611ddd33611dd8610de8565b612b70565b8080611de890614740565b915050611d2d565b5050565b3373ffffffffffffffffffffffffffffffffffffffff16611e13611e43565b73ffffffffffffffffffffffffffffffffffffffff1614611e3357600080fd5b8060128190555050565b60125481565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b3373ffffffffffffffffffffffffffffffffffffffff16611e8c611e43565b73ffffffffffffffffffffffffffffffffffffffff1614611eac57600080fd5b80600b8190555050565b606060018054611ec5906140a4565b80601f0160208091040260200160405190810160405280929190818152602001828054611ef1906140a4565b8015611f3e5780601f10611f1357610100808354040283529160200191611f3e565b820191906000526020600020905b815481529060010190602001808311611f2157829003601f168201915b5050505050905090565b6000600b54905090565b60115481565b611f60612775565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611fce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc590614d1a565b60405180910390fd5b8060056000611fdb612775565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16612088612775565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516120cd9190613915565b60405180910390a35050565b3373ffffffffffffffffffffffffffffffffffffffff166120f8611e43565b73ffffffffffffffffffffffffffffffffffffffff161461211857600080fd5b60005b8282905081101561224f57600073ffffffffffffffffffffffffffffffffffffffff1683838381811061215157612150614789565b5b90506020020160208101906121669190613814565b73ffffffffffffffffffffffffffffffffffffffff1614156121bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b490614a92565b60405180910390fd5b6000601360008585858181106121d6576121d5614789565b5b90506020020160208101906121eb9190613814565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061224790614740565b91505061211b565b505050565b3373ffffffffffffffffffffffffffffffffffffffff16612273611e43565b73ffffffffffffffffffffffffffffffffffffffff161461229357600080fd5b80601060006101000a81548160ff0219169083151502179055507f58655b75d3df612fe99ead00dbf0812d415d35078fe06217a94c0818bb13967f816040516122dc9190613915565b60405180910390a150565b60003373ffffffffffffffffffffffffffffffffffffffff16612308611e43565b73ffffffffffffffffffffffffffffffffffffffff161461232857600080fd5b601154905090565b61234161233b612775565b83612836565b612380576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612377906142fe565b60405180910390fd5b61238c84848484612c54565b50505050565b600061239c610de8565b905090565b60606123ac82612709565b6123eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e290614dac565b60405180910390fd5b60006123f5612cb0565b905060008151116124155760405180602001604052806000815250612440565b8061241f84612d42565b604051602001612430929190614e08565b6040516020818303038152906040525b915050919050565b6000600c54905090565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6124ee612775565b73ffffffffffffffffffffffffffffffffffffffff1661250c611e43565b73ffffffffffffffffffffffffffffffffffffffff1614612562576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612559906149ba565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156125d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c990614e9e565b60405180910390fd5b6125db81612b8e565b50565b3373ffffffffffffffffffffffffffffffffffffffff166125fd611e43565b73ffffffffffffffffffffffffffffffffffffffff161461261d57600080fd5b80600c8190555050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806126f257507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80612702575061270182612ea3565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166127f0836114c6565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600061284182612709565b612880576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287790614f30565b60405180910390fd5b600061288b836114c6565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806128fa57508373ffffffffffffffffffffffffffffffffffffffff166128e284610c4b565b73ffffffffffffffffffffffffffffffffffffffff16145b8061290b575061290a8185612452565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16612934826114c6565b73ffffffffffffffffffffffffffffffffffffffff161461298a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298190614fc2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156129fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f190615054565b60405180910390fd5b612a05838383612f0d565b612a1060008261277d565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612a609190615074565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612ab791906144b7565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b612b8a828260405180602001604052806000815250613021565b5050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612c5f848484612914565b612c6b8484848461307c565b612caa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ca19061511a565b60405180910390fd5b50505050565b6060600f8054612cbf906140a4565b80601f0160208091040260200160405190810160405280929190818152602001828054612ceb906140a4565b8015612d385780601f10612d0d57610100808354040283529160200191612d38565b820191906000526020600020905b815481529060010190602001808311612d1b57829003601f168201915b5050505050905090565b60606000821415612d8a576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612e9e565b600082905060005b60008214612dbc578080612da590614740565b915050600a82612db59190615169565b9150612d92565b60008167ffffffffffffffff811115612dd857612dd7613beb565b5b6040519080825280601f01601f191660200182016040528015612e0a5781602001600182028036833780820191505090505b5090505b60008514612e9757600182612e239190615074565b9150600a85612e32919061519a565b6030612e3e91906144b7565b60f81b818381518110612e5457612e53614789565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612e909190615169565b9450612e0e565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b612f18838383613213565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612f5b57612f5681613218565b612f9a565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612f9957612f988382613261565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612fdd57612fd8816133ce565b61301c565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461301b5761301a828261349f565b5b5b505050565b61302b838361351e565b613038600084848461307c565b613077576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161306e9061511a565b60405180910390fd5b505050565b600061309d8473ffffffffffffffffffffffffffffffffffffffff166136ec565b15613206578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026130c6612775565b8786866040518563ffffffff1660e01b81526004016130e89493929190615220565b602060405180830381600087803b15801561310257600080fd5b505af192505050801561313357506040513d601f19601f820116820180604052508101906131309190615281565b60015b6131b6573d8060008114613163576040519150601f19603f3d011682016040523d82523d6000602084013e613168565b606091505b506000815114156131ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131a59061511a565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505061320b565b600190505b949350505050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161326e84611578565b6132789190615074565b905060006007600084815260200190815260200160002054905081811461335d576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016008805490506133e29190615074565b905060006009600084815260200190815260200160002054905060006008838154811061341257613411614789565b5b90600052602060002001549050806008838154811061343457613433614789565b5b906000526020600020018190555081600960008381526020019081526020016000208190555060096000858152602001908152602001600020600090556008805480613483576134826152ae565b5b6001900381819060005260206000200160009055905550505050565b60006134aa83611578565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561358e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161358590615329565b60405180910390fd5b61359781612709565b156135d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135ce90615395565b60405180910390fd5b6135e360008383612f0d565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461363391906144b7565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b82805461370b906140a4565b90600052602060002090601f01602090048101928261372d5760008555613774565b82601f1061374657805160ff1916838001178555613774565b82800160010185558215613774579182015b82811115613773578251825591602001919060010190613758565b5b5090506137819190613785565b5090565b5b8082111561379e576000816000905550600101613786565b5090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006137e1826137b6565b9050919050565b6137f1816137d6565b81146137fc57600080fd5b50565b60008135905061380e816137e8565b92915050565b60006020828403121561382a576138296137ac565b5b6000613838848285016137ff565b91505092915050565b6000819050919050565b61385481613841565b82525050565b600060208201905061386f600083018461384b565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6138aa81613875565b81146138b557600080fd5b50565b6000813590506138c7816138a1565b92915050565b6000602082840312156138e3576138e26137ac565b5b60006138f1848285016138b8565b91505092915050565b60008115159050919050565b61390f816138fa565b82525050565b600060208201905061392a6000830184613906565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561396a57808201518184015260208101905061394f565b83811115613979576000848401525b50505050565b6000601f19601f8301169050919050565b600061399b82613930565b6139a5818561393b565b93506139b581856020860161394c565b6139be8161397f565b840191505092915050565b600060208201905081810360008301526139e38184613990565b905092915050565b6139f481613841565b81146139ff57600080fd5b50565b600081359050613a11816139eb565b92915050565b600060208284031215613a2d57613a2c6137ac565b5b6000613a3b84828501613a02565b91505092915050565b613a4d816137d6565b82525050565b6000602082019050613a686000830184613a44565b92915050565b60008060408385031215613a8557613a846137ac565b5b6000613a93858286016137ff565b9250506020613aa485828601613a02565b9150509250929050565b600080600060608486031215613ac757613ac66137ac565b5b6000613ad5868287016137ff565b9350506020613ae6868287016137ff565b9250506040613af786828701613a02565b9150509250925092565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613b3681613841565b82525050565b6000613b488383613b2d565b60208301905092915050565b6000602082019050919050565b6000613b6c82613b01565b613b768185613b0c565b9350613b8183613b1d565b8060005b83811015613bb2578151613b998882613b3c565b9750613ba483613b54565b925050600181019050613b85565b5085935050505092915050565b60006020820190508181036000830152613bd98184613b61565b905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613c238261397f565b810181811067ffffffffffffffff82111715613c4257613c41613beb565b5b80604052505050565b6000613c556137a2565b9050613c618282613c1a565b919050565b600067ffffffffffffffff821115613c8157613c80613beb565b5b613c8a8261397f565b9050602081019050919050565b82818337600083830152505050565b6000613cb9613cb484613c66565b613c4b565b905082815260208101848484011115613cd557613cd4613be6565b5b613ce0848285613c97565b509392505050565b600082601f830112613cfd57613cfc613be1565b5b8135613d0d848260208601613ca6565b91505092915050565b600060208284031215613d2c57613d2b6137ac565b5b600082013567ffffffffffffffff811115613d4a57613d496137b1565b5b613d5684828501613ce8565b91505092915050565b613d68816138fa565b8114613d7357600080fd5b50565b600081359050613d8581613d5f565b92915050565b600060208284031215613da157613da06137ac565b5b6000613daf84828501613d76565b91505092915050565b600080fd5b600080fd5b60008083601f840112613dd857613dd7613be1565b5b8235905067ffffffffffffffff811115613df557613df4613db8565b5b602083019150836020820283011115613e1157613e10613dbd565b5b9250929050565b60008060208385031215613e2f57613e2e6137ac565b5b600083013567ffffffffffffffff811115613e4d57613e4c6137b1565b5b613e5985828601613dc2565b92509250509250929050565b60008060408385031215613e7c57613e7b6137ac565b5b6000613e8a858286016137ff565b9250506020613e9b85828601613d76565b9150509250929050565b600067ffffffffffffffff821115613ec057613ebf613beb565b5b613ec98261397f565b9050602081019050919050565b6000613ee9613ee484613ea5565b613c4b565b905082815260208101848484011115613f0557613f04613be6565b5b613f10848285613c97565b509392505050565b600082601f830112613f2d57613f2c613be1565b5b8135613f3d848260208601613ed6565b91505092915050565b60008060008060808587031215613f6057613f5f6137ac565b5b6000613f6e878288016137ff565b9450506020613f7f878288016137ff565b9350506040613f9087828801613a02565b925050606085013567ffffffffffffffff811115613fb157613fb06137b1565b5b613fbd87828801613f18565b91505092959194509250565b60008060408385031215613fe057613fdf6137ac565b5b6000613fee858286016137ff565b9250506020613fff858286016137ff565b9150509250929050565b7f5a65726f2061646472657373206e6f74206f6e20416c6c6f77204c6973740000600082015250565b600061403f601e8361393b565b915061404a82614009565b602082019050919050565b6000602082019050818103600083015261406e81614032565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806140bc57607f821691505b602082108114156140d0576140cf614075565b5b50919050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000614132602c8361393b565b915061413d826140d6565b604082019050919050565b6000602082019050818103600083015261416181614125565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006141c460218361393b565b91506141cf82614168565b604082019050919050565b600060208201905081810360008301526141f3816141b7565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b600061425660388361393b565b9150614261826141fa565b604082019050919050565b6000602082019050818103600083015261428581614249565b9050919050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b60006142e860318361393b565b91506142f38261428c565b604082019050919050565b60006020820190508181036000830152614317816142db565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b600061437a602b8361393b565b91506143858261431e565b604082019050919050565b600060208201905081810360008301526143a98161436d565b9050919050565b7f53616c652068617320656e6465642e0000000000000000000000000000000000600082015250565b60006143e6600f8361393b565b91506143f1826143b0565b602082019050919050565b60006020820190508181036000830152614415816143d9565b9050919050565b7f53616c65206973206e6f74206163746976652063757272656e746c792e000000600082015250565b6000614452601d8361393b565b915061445d8261441c565b602082019050919050565b6000602082019050818103600083015261448181614445565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006144c282613841565b91506144cd83613841565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561450257614501614488565b5b828201905092915050565b7f546f74616c20737570706c792065786365656465642e00000000000000000000600082015250565b600061454360168361393b565b915061454e8261450d565b602082019050919050565b6000602082019050818103600083015261457281614536565b9050919050565b7f546f74616c20737570706c79207370656e742e00000000000000000000000000600082015250565b60006145af60138361393b565b91506145ba82614579565b602082019050919050565b600060208201905081810360008301526145de816145a2565b9050919050565b7f45786365656473206d6178696d756d20616c6c6f77656420746f6b656e730000600082015250565b600061461b601e8361393b565b9150614626826145e5565b602082019050919050565b6000602082019050818103600083015261464a8161460e565b9050919050565b600061465c82613841565b915061466783613841565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156146a05761469f614488565b5b828202905092915050565b7f496e7375666669656e742045544820616d6f756e742073656e742e0000000000600082015250565b60006146e1601b8361393b565b91506146ec826146ab565b602082019050919050565b60006020820190508181036000830152614710816146d4565b9050919050565b600060408201905061472c600083018561384b565b6147396020830184613a44565b9392505050565b600061474b82613841565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561477e5761477d614488565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b6000614814602c8361393b565b915061481f826147b8565b604082019050919050565b6000602082019050818103600083015261484381614807565b9050919050565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b60006148a660298361393b565b91506148b18261484a565b604082019050919050565b600060208201905081810360008301526148d581614899565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b6000614938602a8361393b565b9150614943826148dc565b604082019050919050565b600060208201905081810360008301526149678161492b565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006149a460208361393b565b91506149af8261496e565b602082019050919050565b600060208201905081810360008301526149d381614997565b9050919050565b7f4d61782052657365727665732074616b656e20616c7265616479210000000000600082015250565b6000614a10601b8361393b565b9150614a1b826149da565b602082019050919050565b60006020820190508181036000830152614a3f81614a03565b9050919050565b7f43616e2774206164642061206e756c6c20616464726573730000000000000000600082015250565b6000614a7c60188361393b565b9150614a8782614a46565b602082019050919050565b60006020820190508181036000830152614aab81614a6f565b9050919050565b7f416c6c6f77204c697374206973206e6f74206163746976650000000000000000600082015250565b6000614ae860188361393b565b9150614af382614ab2565b602082019050919050565b60006020820190508181036000830152614b1781614adb565b9050919050565b7f596f7520617265206e6f74206f6e2074686520416c6c6f77204c697374000000600082015250565b6000614b54601d8361393b565b9150614b5f82614b1e565b602082019050919050565b60006020820190508181036000830152614b8381614b47565b9050919050565b7f416c6c20746f6b656e732068617665206265656e206d696e7465640000000000600082015250565b6000614bc0601b8361393b565b9150614bcb82614b8a565b602082019050919050565b60006020820190508181036000830152614bef81614bb3565b9050919050565b7f43616e6e6f742070757263686173652074686973206d616e7920746f6b656e73600082015250565b6000614c2c60208361393b565b9150614c3782614bf6565b602082019050919050565b60006020820190508181036000830152614c5b81614c1f565b9050919050565b7f50757263686173652065786365656473206d617820616c6c6f77656400000000600082015250565b6000614c98601c8361393b565b9150614ca382614c62565b602082019050919050565b60006020820190508181036000830152614cc781614c8b565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000614d0460198361393b565b9150614d0f82614cce565b602082019050919050565b60006020820190508181036000830152614d3381614cf7565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000614d96602f8361393b565b9150614da182614d3a565b604082019050919050565b60006020820190508181036000830152614dc581614d89565b9050919050565b600081905092915050565b6000614de282613930565b614dec8185614dcc565b9350614dfc81856020860161394c565b80840191505092915050565b6000614e148285614dd7565b9150614e208284614dd7565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614e8860268361393b565b9150614e9382614e2c565b604082019050919050565b60006020820190508181036000830152614eb781614e7b565b9050919050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000614f1a602c8361393b565b9150614f2582614ebe565b604082019050919050565b60006020820190508181036000830152614f4981614f0d565b9050919050565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b6000614fac60298361393b565b9150614fb782614f50565b604082019050919050565b60006020820190508181036000830152614fdb81614f9f565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061503e60248361393b565b915061504982614fe2565b604082019050919050565b6000602082019050818103600083015261506d81615031565b9050919050565b600061507f82613841565b915061508a83613841565b92508282101561509d5761509c614488565b5b828203905092915050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b600061510460328361393b565b915061510f826150a8565b604082019050919050565b60006020820190508181036000830152615133816150f7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061517482613841565b915061517f83613841565b92508261518f5761518e61513a565b5b828204905092915050565b60006151a582613841565b91506151b083613841565b9250826151c0576151bf61513a565b5b828206905092915050565b600081519050919050565b600082825260208201905092915050565b60006151f2826151cb565b6151fc81856151d6565b935061520c81856020860161394c565b6152158161397f565b840191505092915050565b60006080820190506152356000830187613a44565b6152426020830186613a44565b61524f604083018561384b565b818103606083015261526181846151e7565b905095945050505050565b60008151905061527b816138a1565b92915050565b600060208284031215615297576152966137ac565b5b60006152a58482850161526c565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b600061531360208361393b565b915061531e826152dd565b602082019050919050565b6000602082019050818103600083015261534281615306565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b600061537f601c8361393b565b915061538a82615349565b602082019050919050565b600060208201905081810360008301526153ae81615372565b905091905056fea26469706673582212201bb9188e8512b1bd4a5ad8b7b6a0c101882f79d23d8bf95d282d336ba596c80964736f6c63430008090033

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

0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000005568747470733a2f2f63726f70636c6173682e6d7970696e6174612e636c6f75642f697066732f516d516257716e5541314137325a7967764461596a7047457236585641754744796964616f594d67796d527379672f0000000000000000000000

-----Decoded View---------------
Arg [0] : baseURI (string): https://cropclash.mypinata.cloud/ipfs/QmQbWqnUA1A72ZygvDaYjpGEr6XVAuGDyidaoYMgymRsyg/

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000055
Arg [2] : 68747470733a2f2f63726f70636c6173682e6d7970696e6174612e636c6f7564
Arg [3] : 2f697066732f516d516257716e5541314137325a7967764461596a7047457236
Arg [4] : 585641754744796964616f594d67796d527379672f0000000000000000000000


Deployed Bytecode Sourcemap

21410:5945:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23754:195;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17198:224;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10397:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11480:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11061:411;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17694:113;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21768:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21687:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12184:339;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21722:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23352:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17430:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27247:105;;;;;;;;;;;;;:::i;:::-;;25459:723;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12531:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26927:314;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24842:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22458:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17815:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24273:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24066:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10150:239;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9934:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20693:103;;;;;;;;;;;;;:::i;:::-;;22723:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25063:388;;;;;;;;;;;;;:::i;:::-;;22991:353;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26188:733;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22867:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21878:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20470:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24172:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10505:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24533:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21820:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11709:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23471:275;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22596:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24388:137;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12724:328;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24737:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10617:334;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24628:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12012:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20804:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23957:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23754:195;23820:7;23862:1;23845:19;;:5;:19;;;;23837:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;23917:17;:24;23935:5;23917:24;;;;;;;;;;;;;;;;23910:31;;23754:195;;;:::o;17198:224::-;17300:4;17339:35;17324:50;;;:11;:50;;;;:90;;;;17378:36;17402:11;17378:23;:36::i;:::-;17324:90;17317:97;;17198:224;;;:::o;10397:100::-;10451:13;10484:5;10477:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10397:100;:::o;11480:221::-;11556:7;11584:16;11592:7;11584;:16::i;:::-;11576:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;11669:15;:24;11685:7;11669:24;;;;;;;;;;;;;;;;;;;;;11662:31;;11480:221;;;:::o;11061:411::-;11142:13;11158:23;11173:7;11158:14;:23::i;:::-;11142:39;;11206:5;11200:11;;:2;:11;;;;11192:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;11300:5;11284:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;11309:37;11326:5;11333:12;:10;:12::i;:::-;11309:16;:37::i;:::-;11284:62;11262:168;;;;;;;;;;;;:::i;:::-;;;;;;;;;11443:21;11452:2;11456:7;11443:8;:21::i;:::-;11131:341;11061:411;;:::o;17694:113::-;17755:7;17782:10;:17;;;;17775:24;;17694:113;:::o;21768:45::-;21809:4;21768:45;:::o;21687:28::-;;;;;;;;;;;;;:::o;12184:339::-;12379:41;12398:12;:10;:12::i;:::-;12412:7;12379:18;:41::i;:::-;12371:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;12487:28;12497:4;12503:2;12507:7;12487:9;:28::i;:::-;12184:339;;;:::o;21722:37::-;;;;;;;;;;;;;:::o;23352:111::-;23417:4;23439:10;:16;23450:4;23439:16;;;;;;;;;;;;;;;;;;;;;;;;;23432:23;;23352:111;;;:::o;17430:256::-;17527:7;17563:23;17580:5;17563:16;:23::i;:::-;17555:5;:31;17547:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;17652:12;:19;17665:5;17652:19;;;;;;;;;;;;;;;:26;17672:5;17652:26;;;;;;;;;;;;17645:33;;17430:256;;;;:::o;27247:105::-;22419:10;22408:21;;:7;:5;:7::i;:::-;:21;;;22400:30;;;;;;27306:7:::1;:5;:7::i;:::-;27298:25;;:48;27324:21;27298:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;27247:105::o:0;25459:723::-;21809:4;22284:13;:11;:13::i;:::-;:31;;22276:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;25557:7:::1;:5;:7::i;:::-;25543:21;;:10;:21;;;25539:104;;25589:8;;;;;;;;;;;25581:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;25539:104;21809:4;25679:6;25663:13;:11;:13::i;:::-;:22;;;;:::i;:::-;:40;;25655:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;21809:4;25749:13;:11;:13::i;:::-;:31;;25741:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;25847:31;;25837:6;:41;;25815:121;;;;;;;;;;;;:::i;:::-;;;;;;;;;25980:6;25968:9;;:18;;;;:::i;:::-;25955:9;:31;;25947:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;26036:9;26031:144;26055:6;26051:1;:10;26031:144;;;26088:31;26100:13;:11;:13::i;:::-;26115:3;26088:31;;;;;;;:::i;:::-;;;;;;;;26134:29;26144:3;26149:13;:11;:13::i;:::-;26134:9;:29::i;:::-;26063:3;;;;;:::i;:::-;;;;26031:144;;;;25459:723:::0;;:::o;12531:185::-;12669:39;12686:4;12692:2;12696:7;12669:39;;;;;;;;;;;;:16;:39::i;:::-;12531:185;;;:::o;26927:314::-;26988:16;27013:15;27031:17;27041:6;27031:9;:17::i;:::-;27013:35;;27055:25;27097:10;27083:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27055:53;;27119:6;27115:99;27135:10;27131:1;:14;27115:99;;;27176:30;27196:6;27204:1;27176:19;:30::i;:::-;27162:8;27171:1;27162:11;;;;;;;;:::i;:::-;;;;;;;:44;;;;;27147:3;;;;;:::i;:::-;;;;27115:99;;;;27227:8;27220:15;;;;26927:314;;;:::o;24842:91::-;24891:7;24918;:5;:7::i;:::-;24911:14;;24842:91;:::o;22458:130::-;22419:10;22408:21;;:7;:5;:7::i;:::-;:21;;;22400:30;;;;;;22574:6:::1;22540:31;:40;;;;22458:130:::0;:::o;17815:233::-;17890:7;17926:30;:28;:30::i;:::-;17918:5;:38;17910:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;18023:10;18034:5;18023:17;;;;;;;;:::i;:::-;;;;;;;;;;18016:24;;17815:233;;;:::o;24273:107::-;22419:10;22408:21;;:7;:5;:7::i;:::-;:21;;;22400:30;;;;;;24365:7:::1;24349:13;:23;;;;;;;;;;;;:::i;:::-;;24273:107:::0;:::o;24066:98::-;22419:10;22408:21;;:7;:5;:7::i;:::-;:21;;;22400:30;;;;;;24153:3:::1;24135:15;:21;;;;24066:98:::0;:::o;10150:239::-;10222:7;10242:13;10258:7;:16;10266:7;10258:16;;;;;;;;;;;;;;;;;;;;;10242:32;;10310:1;10293:19;;:5;:19;;;;10285:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;10376:5;10369:12;;;10150:239;;;:::o;9934:208::-;10006:7;10051:1;10034:19;;:5;:19;;;;10026:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;10118:9;:16;10128:5;10118:16;;;;;;;;;;;;;;;;10111:23;;9934:208;;;:::o;20693:103::-;20616:12;:10;:12::i;:::-;20605:23;;:7;:5;:7::i;:::-;:23;;;20597:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20758:30:::1;20785:1;20758:18;:30::i;:::-;20693:103::o:0;22723:136::-;22419:10;22408:21;;:7;:5;:7::i;:::-;:21;;;22400:30;;;;;;22833:18:::1;22813:17;;:38;;;;;;;;;;;;;;;;;;22723:136:::0;:::o;25063:388::-;22419:10;22408:21;;:7;:5;:7::i;:::-;:21;;;22400:30;;;;;;25143:15:::1;;25126:13;;:32;;25118:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;25201:14;25218:13;:11;:13::i;:::-;25201:30;;25242:9;25262:182;25278:14;;25274:1;:18;25262:182;;;25319:35;25340:1;25331:6;:10;;;;:::i;:::-;25343;25319:35;;;;;;;:::i;:::-;;;;;;;;25369:33;25379:10;25400:1;25391:6;:10;;;;:::i;:::-;25369:9;:33::i;:::-;25417:13;;:15;;;;;;;;;:::i;:::-;;;;;;25294:3;;;;;:::i;:::-;;;;25262:182;;;25107:344;;25063:388::o:0;22991:353::-;22419:10;22408:21;;:7;:5;:7::i;:::-;:21;;;22400:30;;;;;;23083:9:::1;23078:259;23102:9;;:16;;23098:1;:20;23078:259;;;23168:1;23144:26;;:9;;23154:1;23144:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;:26;;;;23136:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;23239:4;23212:10;:24;23223:9;;23233:1;23223:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;23212:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;23288:1;23254:17;:31;23272:9;;23282:1;23272:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;23254:31;;;;;;;;;;;;;;;;:35;:73;;23326:1;23254:73;;;23292:17;:31;23310:9;;23320:1;23310:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;23292:31;;;;;;;;;;;;;;;;23254:73;;23120:3;;;;;:::i;:::-;;;;23078:259;;;;22991:353:::0;;:::o;26188:733::-;21809:4;22284:13;:11;:13::i;:::-;:31;;22276:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;26266:17:::1;;;;;;;;;;;26258:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;26327:10;:22;26338:10;26327:22;;;;;;;;;;;;;;;;;;;;;;;;;26319:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;21809:4;26398:13;:11;:13::i;:::-;:30;26390:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;26485:16;;26475:6;:26;;26467:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;26595:16;;26585:6;26553:17;:29;26571:10;26553:29;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;:58;;26545:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;26684:6;26672:9;;:18;;;;:::i;:::-;26659:9;:31;;26651:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;26736:9;26731:185;26755:6;26751:1;:10;26731:185;;;26810:1;26777:17;:29;26795:10;26777:29;;;;;;;;;;;;;;;;:34;;;;;;;:::i;:::-;;;;;;;;26825:38;26837:13;:11;:13::i;:::-;26852:10;26825:38;;;;;;;:::i;:::-;;;;;;;;26872:36;26882:10;26894:13;:11;:13::i;:::-;26872:9;:36::i;:::-;26763:3;;;;;:::i;:::-;;;;26731:185;;;;26188:733:::0;:::o;22867:116::-;22419:10;22408:21;;:7;:5;:7::i;:::-;:21;;;22400:30;;;;;;22968:7:::1;22949:16;:26;;;;22867:116:::0;:::o;21878:35::-;;;;:::o;20470:87::-;20516:7;20543:6;;;;;;;;;;;20536:13;;20470:87;:::o;24172:93::-;22419:10;22408:21;;:7;:5;:7::i;:::-;:21;;;22400:30;;;;;;24251:6:::1;24239:9;:18;;;;24172:93:::0;:::o;10505:104::-;10561:13;10594:7;10587:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10505:104;:::o;24533:87::-;24576:7;24603:9;;24596:16;;24533:87;:::o;21820:51::-;;;;:::o;11709:295::-;11824:12;:10;:12::i;:::-;11812:24;;:8;:24;;;;11804:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;11924:8;11879:18;:32;11898:12;:10;:12::i;:::-;11879:32;;;;;;;;;;;;;;;:42;11912:8;11879:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;11977:8;11948:48;;11963:12;:10;:12::i;:::-;11948:48;;;11987:8;11948:48;;;;;;:::i;:::-;;;;;;;;11709:295;;:::o;23471:275::-;22419:10;22408:21;;:7;:5;:7::i;:::-;:21;;;22400:30;;;;;;23568:9:::1;23563:176;23587:9;;:16;;23583:1;:20;23563:176;;;23653:1;23629:26;;:9;;23639:1;23629:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;:26;;;;23621:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;23724:5;23697:10;:24;23708:9;;23718:1;23708:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;23697:24;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;23605:3;;;;;:::i;:::-;;;;23563:176;;;;23471:275:::0;;:::o;22596:119::-;22419:10;22408:21;;:7;:5;:7::i;:::-;:21;;;22400:30;;;;;;22669:3:::1;22658:8;;:14;;;;;;;;;;;;;;;;;;22688:19;22703:3;22688:19;;;;;;:::i;:::-;;;;;;;;22596:119:::0;:::o;24388:137::-;24459:7;22419:10;22408:21;;:7;:5;:7::i;:::-;:21;;;22400:30;;;;;;24486:31:::1;;24479:38;;24388:137:::0;:::o;12724:328::-;12899:41;12918:12;:10;:12::i;:::-;12932:7;12899:18;:41::i;:::-;12891:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;13005:39;13019:4;13025:2;13029:7;13038:5;13005:13;:39::i;:::-;12724:328;;;;:::o;24737:97::-;24786:7;24813:13;:11;:13::i;:::-;24806:20;;24737:97;:::o;10617:334::-;10690:13;10724:16;10732:7;10724;:16::i;:::-;10716:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;10805:21;10829:10;:8;:10::i;:::-;10805:34;;10881:1;10863:7;10857:21;:25;:86;;;;;;;;;;;;;;;;;10909:7;10918:18;:7;:16;:18::i;:::-;10892:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;10857:86;10850:93;;;10617:334;;;:::o;24628:101::-;24680:7;24707:14;;24700:21;;24628:101;:::o;12012:164::-;12109:4;12133:18;:25;12152:5;12133:25;;;;;;;;;;;;;;;:35;12159:8;12133:35;;;;;;;;;;;;;;;;;;;;;;;;;12126:42;;12012:164;;;;:::o;20804:201::-;20616:12;:10;:12::i;:::-;20605:23;;:7;:5;:7::i;:::-;:23;;;20597:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20913:1:::1;20893:22;;:8;:22;;;;20885:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;20969:28;20988:8;20969:18;:28::i;:::-;20804:201:::0;:::o;23957:101::-;22419:10;22408:21;;:7;:5;:7::i;:::-;:21;;;22400:30;;;;;;24047:3:::1;24030:14;:20;;;;23957:101:::0;:::o;9621:305::-;9723:4;9775:25;9760:40;;;:11;:40;;;;:105;;;;9832:33;9817:48;;;:11;:48;;;;9760:105;:158;;;;9882:36;9906:11;9882:23;:36::i;:::-;9760:158;9740:178;;9621:305;;;:::o;13383:127::-;13448:4;13500:1;13472:30;;:7;:16;13480:7;13472:16;;;;;;;;;;;;;;;;;;;;;:30;;;;13465:37;;13383:127;;;:::o;8669:98::-;8722:7;8749:10;8742:17;;8669:98;:::o;15569:174::-;15671:2;15644:15;:24;15660:7;15644:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;15727:7;15723:2;15689:46;;15698:23;15713:7;15698:14;:23::i;:::-;15689:46;;;;;;;;;;;;15569:174;;:::o;13518:348::-;13611:4;13636:16;13644:7;13636;:16::i;:::-;13628:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;13712:13;13728:23;13743:7;13728:14;:23::i;:::-;13712:39;;13781:5;13770:16;;:7;:16;;;:51;;;;13814:7;13790:31;;:20;13802:7;13790:11;:20::i;:::-;:31;;;13770:51;:87;;;;13825:32;13842:5;13849:7;13825:16;:32::i;:::-;13770:87;13762:96;;;13518:348;;;;:::o;15043:518::-;15202:4;15175:31;;:23;15190:7;15175:14;:23::i;:::-;:31;;;15167:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;15285:1;15271:16;;:2;:16;;;;15263:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;15339:39;15360:4;15366:2;15370:7;15339:20;:39::i;:::-;15389:29;15406:1;15410:7;15389:8;:29::i;:::-;15448:1;15429:9;:15;15439:4;15429:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;15477:1;15460:9;:13;15470:2;15460:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;15508:2;15489:7;:16;15497:7;15489:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;15545:7;15541:2;15526:27;;15535:4;15526:27;;;;;;;;;;;;15043:518;;;:::o;13874:110::-;13950:26;13960:2;13964:7;13950:26;;;;;;;;;;;;:9;:26::i;:::-;13874:110;;:::o;21013:191::-;21087:16;21106:6;;;;;;;;;;;21087:25;;21132:8;21123:6;;:17;;;;;;;;;;;;;;;;;;21187:8;21156:40;;21177:8;21156:40;;;;;;;;;;;;21076:128;21013:191;:::o;13060:315::-;13217:28;13227:4;13233:2;13237:7;13217:9;:28::i;:::-;13264:48;13287:4;13293:2;13297:7;13306:5;13264:22;:48::i;:::-;13256:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;13060:315;;;;:::o;24941:114::-;25001:13;25034;25027:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24941:114;:::o;6700:534::-;6756:13;6797:1;6788:5;:10;6784:53;;;6815:10;;;;;;;;;;;;;;;;;;;;;6784:53;6847:12;6862:5;6847:20;;6878:14;6903:78;6918:1;6910:4;:9;6903:78;;6936:8;;;;;:::i;:::-;;;;6967:2;6959:10;;;;;:::i;:::-;;;6903:78;;;6991:19;7023:6;7013:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6991:39;;7041:154;7057:1;7048:5;:10;7041:154;;7085:1;7075:11;;;;;:::i;:::-;;;7152:2;7144:5;:10;;;;:::i;:::-;7131:2;:24;;;;:::i;:::-;7118:39;;7101:6;7108;7101:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;7181:2;7172:11;;;;;:::i;:::-;;;7041:154;;;7219:6;7205:21;;;;;6700:534;;;;:::o;8281:157::-;8366:4;8405:25;8390:40;;;:11;:40;;;;8383:47;;8281:157;;;:::o;18056:587::-;18200:45;18227:4;18233:2;18237:7;18200:26;:45::i;:::-;18276:1;18260:18;;:4;:18;;;18256:187;;;18295:40;18327:7;18295:31;:40::i;:::-;18256:187;;;18365:2;18357:10;;:4;:10;;;18353:90;;18384:47;18417:4;18423:7;18384:32;:47::i;:::-;18353:90;18256:187;18471:1;18457:16;;:2;:16;;;18453:183;;;18490:45;18527:7;18490:36;:45::i;:::-;18453:183;;;18563:4;18557:10;;:2;:10;;;18553:83;;18584:40;18612:2;18616:7;18584:27;:40::i;:::-;18553:83;18453:183;18056:587;;;:::o;13992:321::-;14122:18;14128:2;14132:7;14122:5;:18::i;:::-;14173:54;14204:1;14208:2;14212:7;14221:5;14173:22;:54::i;:::-;14151:154;;;;;;;;;;;;:::i;:::-;;;;;;;;;13992:321;;;:::o;15751:799::-;15906:4;15927:15;:2;:13;;;:15::i;:::-;15923:620;;;15979:2;15963:36;;;16000:12;:10;:12::i;:::-;16014:4;16020:7;16029:5;15963:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;15959:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16222:1;16205:6;:13;:18;16201:272;;;16248:60;;;;;;;;;;:::i;:::-;;;;;;;;16201:272;16423:6;16417:13;16408:6;16404:2;16400:15;16393:38;15959:529;16096:41;;;16086:51;;;:6;:51;;;;16079:58;;;;;15923:620;16527:4;16520:11;;15751:799;;;;;;;:::o;16558:126::-;;;;:::o;18880:164::-;18984:10;:17;;;;18957:15;:24;18973:7;18957:24;;;;;;;;;;;:44;;;;19012:10;19028:7;19012:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18880:164;:::o;19052:553::-;19144:22;19194:1;19169:22;19186:4;19169:16;:22::i;:::-;:26;;;;:::i;:::-;19144:51;;19206:18;19227:17;:26;19245:7;19227:26;;;;;;;;;;;;19206:47;;19284:14;19270:10;:28;19266:234;;19315:19;19337:12;:18;19350:4;19337:18;;;;;;;;;;;;;;;:34;19356:14;19337:34;;;;;;;;;;;;19315:56;;19419:11;19386:12;:18;19399:4;19386:18;;;;;;;;;;;;;;;:30;19405:10;19386:30;;;;;;;;;;;:44;;;;19478:10;19445:17;:30;19463:11;19445:30;;;;;;;;;;;:43;;;;19300:200;19266:234;19519:17;:26;19537:7;19519:26;;;;;;;;;;;19512:33;;;19563:12;:18;19576:4;19563:18;;;;;;;;;;;;;;;:34;19582:14;19563:34;;;;;;;;;;;19556:41;;;19133:472;;19052:553;;:::o;19613:419::-;19695:22;19740:1;19720:10;:17;;;;:21;;;;:::i;:::-;19695:46;;19752:18;19773:15;:24;19789:7;19773:24;;;;;;;;;;;;19752:45;;19808:19;19830:10;19841:14;19830:26;;;;;;;;:::i;:::-;;;;;;;;;;19808:48;;19892:11;19867:10;19878;19867:22;;;;;;;;:::i;:::-;;;;;;;;;:36;;;;19945:10;19914:15;:28;19930:11;19914:28;;;;;;;;;;;:41;;;;19973:15;:24;19989:7;19973:24;;;;;;;;;;;19966:31;;;20008:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19684:348;;;19613:419;:::o;18651:221::-;18736:14;18753:20;18770:2;18753:16;:20::i;:::-;18736:37;;18811:7;18784:12;:16;18797:2;18784:16;;;;;;;;;;;;;;;:24;18801:6;18784:24;;;;;;;;;;;:34;;;;18858:6;18829:17;:26;18847:7;18829:26;;;;;;;;;;;:35;;;;18725:147;18651:221;;:::o;14321:382::-;14415:1;14401:16;;:2;:16;;;;14393:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;14474:16;14482:7;14474;:16::i;:::-;14473:17;14465:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;14536:45;14565:1;14569:2;14573:7;14536:20;:45::i;:::-;14611:1;14594:9;:13;14604:2;14594:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;14642:2;14623:7;:16;14631:7;14623:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;14687:7;14683:2;14662:33;;14679:1;14662:33;;;;;;;;;;;;14321:382;;:::o;2905:196::-;2965:4;2982:12;3049:7;3037:20;3029:28;;3092:1;3085:4;:8;3078:15;;;2905: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:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:329::-;900:6;949:2;937:9;928:7;924:23;920:32;917:119;;;955:79;;:::i;:::-;917:119;1075:1;1100:53;1145:7;1136:6;1125:9;1121:22;1100:53;:::i;:::-;1090:63;;1046:117;841:329;;;;:::o;1176:77::-;1213:7;1242:5;1231:16;;1176:77;;;:::o;1259:118::-;1346:24;1364:5;1346:24;:::i;:::-;1341:3;1334:37;1259:118;;:::o;1383:222::-;1476:4;1514:2;1503:9;1499:18;1491:26;;1527:71;1595:1;1584:9;1580:17;1571:6;1527:71;:::i;:::-;1383:222;;;;:::o;1611:149::-;1647:7;1687:66;1680:5;1676:78;1665:89;;1611:149;;;:::o;1766:120::-;1838:23;1855:5;1838:23;:::i;:::-;1831:5;1828:34;1818:62;;1876:1;1873;1866:12;1818:62;1766:120;:::o;1892:137::-;1937:5;1975:6;1962:20;1953:29;;1991:32;2017:5;1991:32;:::i;:::-;1892:137;;;;:::o;2035:327::-;2093:6;2142:2;2130:9;2121:7;2117:23;2113:32;2110:119;;;2148:79;;:::i;:::-;2110:119;2268:1;2293:52;2337:7;2328:6;2317:9;2313:22;2293:52;:::i;:::-;2283:62;;2239:116;2035:327;;;;:::o;2368:90::-;2402:7;2445:5;2438:13;2431:21;2420:32;;2368:90;;;:::o;2464:109::-;2545:21;2560:5;2545:21;:::i;:::-;2540:3;2533:34;2464:109;;:::o;2579:210::-;2666:4;2704:2;2693:9;2689:18;2681:26;;2717:65;2779:1;2768:9;2764:17;2755:6;2717:65;:::i;:::-;2579:210;;;;:::o;2795:99::-;2847:6;2881:5;2875:12;2865:22;;2795:99;;;:::o;2900:169::-;2984:11;3018:6;3013:3;3006:19;3058:4;3053:3;3049:14;3034:29;;2900:169;;;;:::o;3075:307::-;3143:1;3153:113;3167:6;3164:1;3161:13;3153:113;;;3252:1;3247:3;3243:11;3237:18;3233:1;3228:3;3224:11;3217:39;3189:2;3186:1;3182:10;3177:15;;3153:113;;;3284:6;3281:1;3278:13;3275:101;;;3364:1;3355:6;3350:3;3346:16;3339:27;3275:101;3124:258;3075:307;;;:::o;3388:102::-;3429:6;3480:2;3476:7;3471:2;3464:5;3460:14;3456:28;3446:38;;3388:102;;;:::o;3496:364::-;3584:3;3612:39;3645:5;3612:39;:::i;:::-;3667:71;3731:6;3726:3;3667:71;:::i;:::-;3660:78;;3747:52;3792:6;3787:3;3780:4;3773:5;3769:16;3747:52;:::i;:::-;3824:29;3846:6;3824:29;:::i;:::-;3819:3;3815:39;3808:46;;3588:272;3496:364;;;;:::o;3866:313::-;3979:4;4017:2;4006:9;4002:18;3994:26;;4066:9;4060:4;4056:20;4052:1;4041:9;4037:17;4030:47;4094:78;4167:4;4158:6;4094:78;:::i;:::-;4086:86;;3866:313;;;;:::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:329::-;4517:6;4566:2;4554:9;4545:7;4541:23;4537:32;4534:119;;;4572:79;;:::i;:::-;4534:119;4692:1;4717:53;4762:7;4753:6;4742:9;4738:22;4717:53;:::i;:::-;4707:63;;4663:117;4458:329;;;;:::o;4793:118::-;4880:24;4898:5;4880:24;:::i;:::-;4875:3;4868:37;4793:118;;:::o;4917:222::-;5010:4;5048:2;5037:9;5033:18;5025:26;;5061:71;5129:1;5118:9;5114:17;5105:6;5061:71;:::i;:::-;4917:222;;;;:::o;5145:474::-;5213:6;5221;5270:2;5258:9;5249:7;5245:23;5241:32;5238:119;;;5276:79;;:::i;:::-;5238:119;5396:1;5421:53;5466:7;5457:6;5446:9;5442:22;5421:53;:::i;:::-;5411:63;;5367:117;5523:2;5549:53;5594:7;5585:6;5574:9;5570:22;5549:53;:::i;:::-;5539:63;;5494:118;5145:474;;;;;:::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:114::-;6317:6;6351:5;6345:12;6335:22;;6250:114;;;:::o;6370:184::-;6469:11;6503:6;6498:3;6491:19;6543:4;6538:3;6534:14;6519:29;;6370:184;;;;:::o;6560:132::-;6627:4;6650:3;6642:11;;6680:4;6675:3;6671:14;6663:22;;6560:132;;;:::o;6698:108::-;6775:24;6793:5;6775:24;:::i;:::-;6770:3;6763:37;6698:108;;:::o;6812:179::-;6881:10;6902:46;6944:3;6936:6;6902:46;:::i;:::-;6980:4;6975:3;6971:14;6957:28;;6812:179;;;;:::o;6997:113::-;7067:4;7099;7094:3;7090:14;7082:22;;6997:113;;;:::o;7146:732::-;7265:3;7294:54;7342:5;7294:54;:::i;:::-;7364:86;7443:6;7438:3;7364:86;:::i;:::-;7357:93;;7474:56;7524:5;7474:56;:::i;:::-;7553:7;7584:1;7569:284;7594:6;7591:1;7588:13;7569:284;;;7670:6;7664:13;7697:63;7756:3;7741:13;7697:63;:::i;:::-;7690:70;;7783:60;7836:6;7783:60;:::i;:::-;7773:70;;7629:224;7616:1;7613;7609:9;7604:14;;7569:284;;;7573:14;7869:3;7862:10;;7270:608;;;7146:732;;;;:::o;7884:373::-;8027:4;8065:2;8054:9;8050:18;8042:26;;8114:9;8108:4;8104:20;8100:1;8089:9;8085:17;8078:47;8142:108;8245:4;8236:6;8142:108;:::i;:::-;8134:116;;7884:373;;;;:::o;8263:117::-;8372:1;8369;8362:12;8386:117;8495:1;8492;8485:12;8509:180;8557:77;8554:1;8547:88;8654:4;8651:1;8644:15;8678:4;8675:1;8668:15;8695:281;8778:27;8800:4;8778:27;:::i;:::-;8770:6;8766:40;8908:6;8896:10;8893:22;8872:18;8860:10;8857:34;8854:62;8851:88;;;8919:18;;:::i;:::-;8851:88;8959:10;8955:2;8948:22;8738:238;8695:281;;:::o;8982:129::-;9016:6;9043:20;;:::i;:::-;9033:30;;9072:33;9100:4;9092:6;9072:33;:::i;:::-;8982:129;;;:::o;9117:308::-;9179:4;9269:18;9261:6;9258:30;9255:56;;;9291:18;;:::i;:::-;9255:56;9329:29;9351:6;9329:29;:::i;:::-;9321:37;;9413:4;9407;9403:15;9395:23;;9117:308;;;:::o;9431:154::-;9515:6;9510:3;9505;9492:30;9577:1;9568:6;9563:3;9559:16;9552:27;9431:154;;;:::o;9591:412::-;9669:5;9694:66;9710:49;9752:6;9710:49;:::i;:::-;9694:66;:::i;:::-;9685:75;;9783:6;9776:5;9769:21;9821:4;9814:5;9810:16;9859:3;9850:6;9845:3;9841:16;9838:25;9835:112;;;9866:79;;:::i;:::-;9835:112;9956:41;9990:6;9985:3;9980;9956:41;:::i;:::-;9675:328;9591:412;;;;;:::o;10023:340::-;10079:5;10128:3;10121:4;10113:6;10109:17;10105:27;10095:122;;10136:79;;:::i;:::-;10095:122;10253:6;10240:20;10278:79;10353:3;10345:6;10338:4;10330:6;10326:17;10278:79;:::i;:::-;10269:88;;10085:278;10023:340;;;;:::o;10369:509::-;10438:6;10487:2;10475:9;10466:7;10462:23;10458:32;10455:119;;;10493:79;;:::i;:::-;10455:119;10641:1;10630:9;10626:17;10613:31;10671:18;10663:6;10660:30;10657:117;;;10693:79;;:::i;:::-;10657:117;10798:63;10853:7;10844:6;10833:9;10829:22;10798:63;:::i;:::-;10788:73;;10584:287;10369:509;;;;:::o;10884:116::-;10954:21;10969:5;10954:21;:::i;:::-;10947:5;10944:32;10934:60;;10990:1;10987;10980:12;10934:60;10884:116;:::o;11006:133::-;11049:5;11087:6;11074:20;11065:29;;11103:30;11127:5;11103:30;:::i;:::-;11006:133;;;;:::o;11145:323::-;11201:6;11250:2;11238:9;11229:7;11225:23;11221:32;11218:119;;;11256:79;;:::i;:::-;11218:119;11376:1;11401:50;11443:7;11434:6;11423:9;11419:22;11401:50;:::i;:::-;11391:60;;11347:114;11145:323;;;;:::o;11474:117::-;11583:1;11580;11573:12;11597:117;11706:1;11703;11696:12;11737:568;11810:8;11820:6;11870:3;11863:4;11855:6;11851:17;11847:27;11837:122;;11878:79;;:::i;:::-;11837:122;11991:6;11978:20;11968:30;;12021:18;12013:6;12010:30;12007:117;;;12043:79;;:::i;:::-;12007:117;12157:4;12149:6;12145:17;12133:29;;12211:3;12203:4;12195:6;12191:17;12181:8;12177:32;12174:41;12171:128;;;12218:79;;:::i;:::-;12171:128;11737:568;;;;;:::o;12311:559::-;12397:6;12405;12454:2;12442:9;12433:7;12429:23;12425:32;12422:119;;;12460:79;;:::i;:::-;12422:119;12608:1;12597:9;12593:17;12580:31;12638:18;12630:6;12627:30;12624:117;;;12660:79;;:::i;:::-;12624:117;12773:80;12845:7;12836:6;12825:9;12821:22;12773:80;:::i;:::-;12755:98;;;;12551:312;12311:559;;;;;:::o;12876:468::-;12941:6;12949;12998:2;12986:9;12977:7;12973:23;12969:32;12966:119;;;13004:79;;:::i;:::-;12966:119;13124:1;13149:53;13194:7;13185:6;13174:9;13170:22;13149:53;:::i;:::-;13139:63;;13095:117;13251:2;13277:50;13319:7;13310:6;13299:9;13295:22;13277:50;:::i;:::-;13267:60;;13222:115;12876:468;;;;;:::o;13350:307::-;13411:4;13501:18;13493:6;13490:30;13487:56;;;13523:18;;:::i;:::-;13487:56;13561:29;13583:6;13561:29;:::i;:::-;13553:37;;13645:4;13639;13635:15;13627:23;;13350:307;;;:::o;13663:410::-;13740:5;13765:65;13781:48;13822:6;13781:48;:::i;:::-;13765:65;:::i;:::-;13756:74;;13853:6;13846:5;13839:21;13891:4;13884:5;13880:16;13929:3;13920:6;13915:3;13911:16;13908:25;13905:112;;;13936:79;;:::i;:::-;13905:112;14026:41;14060:6;14055:3;14050;14026:41;:::i;:::-;13746:327;13663:410;;;;;:::o;14092:338::-;14147:5;14196:3;14189:4;14181:6;14177:17;14173:27;14163:122;;14204:79;;:::i;:::-;14163:122;14321:6;14308:20;14346:78;14420:3;14412:6;14405:4;14397:6;14393:17;14346:78;:::i;:::-;14337:87;;14153:277;14092:338;;;;:::o;14436:943::-;14531:6;14539;14547;14555;14604:3;14592:9;14583:7;14579:23;14575:33;14572:120;;;14611:79;;:::i;:::-;14572:120;14731:1;14756:53;14801:7;14792:6;14781:9;14777:22;14756:53;:::i;:::-;14746:63;;14702:117;14858:2;14884:53;14929:7;14920:6;14909:9;14905:22;14884:53;:::i;:::-;14874:63;;14829:118;14986:2;15012:53;15057:7;15048:6;15037:9;15033:22;15012:53;:::i;:::-;15002:63;;14957:118;15142:2;15131:9;15127:18;15114:32;15173:18;15165:6;15162:30;15159:117;;;15195:79;;:::i;:::-;15159:117;15300:62;15354:7;15345:6;15334:9;15330:22;15300:62;:::i;:::-;15290:72;;15085:287;14436:943;;;;;;;:::o;15385:474::-;15453:6;15461;15510:2;15498:9;15489:7;15485:23;15481:32;15478:119;;;15516:79;;:::i;:::-;15478:119;15636:1;15661:53;15706:7;15697:6;15686:9;15682:22;15661:53;:::i;:::-;15651:63;;15607:117;15763:2;15789:53;15834:7;15825:6;15814:9;15810:22;15789:53;:::i;:::-;15779:63;;15734:118;15385:474;;;;;:::o;15865:180::-;16005:32;16001:1;15993:6;15989:14;15982:56;15865:180;:::o;16051:366::-;16193:3;16214:67;16278:2;16273:3;16214:67;:::i;:::-;16207:74;;16290:93;16379:3;16290:93;:::i;:::-;16408:2;16403:3;16399:12;16392:19;;16051:366;;;:::o;16423:419::-;16589:4;16627:2;16616:9;16612:18;16604:26;;16676:9;16670:4;16666:20;16662:1;16651:9;16647:17;16640:47;16704:131;16830:4;16704:131;:::i;:::-;16696:139;;16423:419;;;:::o;16848:180::-;16896:77;16893:1;16886:88;16993:4;16990:1;16983:15;17017:4;17014:1;17007:15;17034:320;17078:6;17115:1;17109:4;17105:12;17095:22;;17162:1;17156:4;17152:12;17183:18;17173:81;;17239:4;17231:6;17227:17;17217:27;;17173:81;17301:2;17293:6;17290:14;17270:18;17267:38;17264:84;;;17320:18;;:::i;:::-;17264:84;17085:269;17034:320;;;:::o;17360:231::-;17500:34;17496:1;17488:6;17484:14;17477:58;17569:14;17564:2;17556:6;17552:15;17545:39;17360:231;:::o;17597:366::-;17739:3;17760:67;17824:2;17819:3;17760:67;:::i;:::-;17753:74;;17836:93;17925:3;17836:93;:::i;:::-;17954:2;17949:3;17945:12;17938:19;;17597:366;;;:::o;17969:419::-;18135:4;18173:2;18162:9;18158:18;18150:26;;18222:9;18216:4;18212:20;18208:1;18197:9;18193:17;18186:47;18250:131;18376:4;18250:131;:::i;:::-;18242:139;;17969:419;;;:::o;18394:220::-;18534:34;18530:1;18522:6;18518:14;18511:58;18603:3;18598:2;18590:6;18586:15;18579:28;18394:220;:::o;18620:366::-;18762:3;18783:67;18847:2;18842:3;18783:67;:::i;:::-;18776:74;;18859:93;18948:3;18859:93;:::i;:::-;18977:2;18972:3;18968:12;18961:19;;18620:366;;;:::o;18992:419::-;19158:4;19196:2;19185:9;19181:18;19173:26;;19245:9;19239:4;19235:20;19231:1;19220:9;19216:17;19209:47;19273:131;19399:4;19273:131;:::i;:::-;19265:139;;18992:419;;;:::o;19417:243::-;19557:34;19553:1;19545:6;19541:14;19534:58;19626:26;19621:2;19613:6;19609:15;19602:51;19417:243;:::o;19666:366::-;19808:3;19829:67;19893:2;19888:3;19829:67;:::i;:::-;19822:74;;19905:93;19994:3;19905:93;:::i;:::-;20023:2;20018:3;20014:12;20007:19;;19666:366;;;:::o;20038:419::-;20204:4;20242:2;20231:9;20227:18;20219:26;;20291:9;20285:4;20281:20;20277:1;20266:9;20262:17;20255:47;20319:131;20445:4;20319:131;:::i;:::-;20311:139;;20038:419;;;:::o;20463:236::-;20603:34;20599:1;20591:6;20587:14;20580:58;20672:19;20667:2;20659:6;20655:15;20648:44;20463:236;:::o;20705:366::-;20847:3;20868:67;20932:2;20927:3;20868:67;:::i;:::-;20861:74;;20944:93;21033:3;20944:93;:::i;:::-;21062:2;21057:3;21053:12;21046:19;;20705:366;;;:::o;21077:419::-;21243:4;21281:2;21270:9;21266:18;21258:26;;21330:9;21324:4;21320:20;21316:1;21305:9;21301:17;21294:47;21358:131;21484:4;21358:131;:::i;:::-;21350:139;;21077:419;;;:::o;21502:230::-;21642:34;21638:1;21630:6;21626:14;21619:58;21711:13;21706:2;21698:6;21694:15;21687:38;21502:230;:::o;21738:366::-;21880:3;21901:67;21965:2;21960:3;21901:67;:::i;:::-;21894:74;;21977:93;22066:3;21977:93;:::i;:::-;22095:2;22090:3;22086:12;22079:19;;21738:366;;;:::o;22110:419::-;22276:4;22314:2;22303:9;22299:18;22291:26;;22363:9;22357:4;22353:20;22349:1;22338:9;22334:17;22327:47;22391:131;22517:4;22391:131;:::i;:::-;22383:139;;22110:419;;;:::o;22535:165::-;22675:17;22671:1;22663:6;22659:14;22652:41;22535:165;:::o;22706:366::-;22848:3;22869:67;22933:2;22928:3;22869:67;:::i;:::-;22862:74;;22945:93;23034:3;22945:93;:::i;:::-;23063:2;23058:3;23054:12;23047:19;;22706:366;;;:::o;23078:419::-;23244:4;23282:2;23271:9;23267:18;23259:26;;23331:9;23325:4;23321:20;23317:1;23306:9;23302:17;23295:47;23359:131;23485:4;23359:131;:::i;:::-;23351:139;;23078:419;;;:::o;23503:179::-;23643:31;23639:1;23631:6;23627:14;23620:55;23503:179;:::o;23688:366::-;23830:3;23851:67;23915:2;23910:3;23851:67;:::i;:::-;23844:74;;23927:93;24016:3;23927:93;:::i;:::-;24045:2;24040:3;24036:12;24029:19;;23688:366;;;:::o;24060:419::-;24226:4;24264:2;24253:9;24249:18;24241:26;;24313:9;24307:4;24303:20;24299:1;24288:9;24284:17;24277:47;24341:131;24467:4;24341:131;:::i;:::-;24333:139;;24060:419;;;:::o;24485:180::-;24533:77;24530:1;24523:88;24630:4;24627:1;24620:15;24654:4;24651:1;24644:15;24671:305;24711:3;24730:20;24748:1;24730:20;:::i;:::-;24725:25;;24764:20;24782:1;24764:20;:::i;:::-;24759:25;;24918:1;24850:66;24846:74;24843:1;24840:81;24837:107;;;24924:18;;:::i;:::-;24837:107;24968:1;24965;24961:9;24954:16;;24671:305;;;;:::o;24982:172::-;25122:24;25118:1;25110:6;25106:14;25099:48;24982:172;:::o;25160:366::-;25302:3;25323:67;25387:2;25382:3;25323:67;:::i;:::-;25316:74;;25399:93;25488:3;25399:93;:::i;:::-;25517:2;25512:3;25508:12;25501:19;;25160:366;;;:::o;25532:419::-;25698:4;25736:2;25725:9;25721:18;25713:26;;25785:9;25779:4;25775:20;25771:1;25760:9;25756:17;25749:47;25813:131;25939:4;25813:131;:::i;:::-;25805:139;;25532:419;;;:::o;25957:169::-;26097:21;26093:1;26085:6;26081:14;26074:45;25957:169;:::o;26132:366::-;26274:3;26295:67;26359:2;26354:3;26295:67;:::i;:::-;26288:74;;26371:93;26460:3;26371:93;:::i;:::-;26489:2;26484:3;26480:12;26473:19;;26132:366;;;:::o;26504:419::-;26670:4;26708:2;26697:9;26693:18;26685:26;;26757:9;26751:4;26747:20;26743:1;26732:9;26728:17;26721:47;26785:131;26911:4;26785:131;:::i;:::-;26777:139;;26504:419;;;:::o;26929:180::-;27069:32;27065:1;27057:6;27053:14;27046:56;26929:180;:::o;27115:366::-;27257:3;27278:67;27342:2;27337:3;27278:67;:::i;:::-;27271:74;;27354:93;27443:3;27354:93;:::i;:::-;27472:2;27467:3;27463:12;27456:19;;27115:366;;;:::o;27487:419::-;27653:4;27691:2;27680:9;27676:18;27668:26;;27740:9;27734:4;27730:20;27726:1;27715:9;27711:17;27704:47;27768:131;27894:4;27768:131;:::i;:::-;27760:139;;27487:419;;;:::o;27912:348::-;27952:7;27975:20;27993:1;27975:20;:::i;:::-;27970:25;;28009:20;28027:1;28009:20;:::i;:::-;28004:25;;28197:1;28129:66;28125:74;28122:1;28119:81;28114:1;28107:9;28100:17;28096:105;28093:131;;;28204:18;;:::i;:::-;28093:131;28252:1;28249;28245:9;28234:20;;27912:348;;;;:::o;28266:177::-;28406:29;28402:1;28394:6;28390:14;28383:53;28266:177;:::o;28449:366::-;28591:3;28612:67;28676:2;28671:3;28612:67;:::i;:::-;28605:74;;28688:93;28777:3;28688:93;:::i;:::-;28806:2;28801:3;28797:12;28790:19;;28449:366;;;:::o;28821:419::-;28987:4;29025:2;29014:9;29010:18;29002:26;;29074:9;29068:4;29064:20;29060:1;29049:9;29045:17;29038:47;29102:131;29228:4;29102:131;:::i;:::-;29094:139;;28821:419;;;:::o;29246:332::-;29367:4;29405:2;29394:9;29390:18;29382:26;;29418:71;29486:1;29475:9;29471:17;29462:6;29418:71;:::i;:::-;29499:72;29567:2;29556:9;29552:18;29543:6;29499:72;:::i;:::-;29246:332;;;;;:::o;29584:233::-;29623:3;29646:24;29664:5;29646:24;:::i;:::-;29637:33;;29692:66;29685:5;29682:77;29679:103;;;29762:18;;:::i;:::-;29679:103;29809:1;29802:5;29798:13;29791:20;;29584:233;;;:::o;29823:180::-;29871:77;29868:1;29861:88;29968:4;29965:1;29958:15;29992:4;29989:1;29982:15;30009:231;30149:34;30145:1;30137:6;30133:14;30126:58;30218:14;30213:2;30205:6;30201:15;30194:39;30009:231;:::o;30246:366::-;30388:3;30409:67;30473:2;30468:3;30409:67;:::i;:::-;30402:74;;30485:93;30574:3;30485:93;:::i;:::-;30603:2;30598:3;30594:12;30587:19;;30246:366;;;:::o;30618:419::-;30784:4;30822:2;30811:9;30807:18;30799:26;;30871:9;30865:4;30861:20;30857:1;30846:9;30842:17;30835:47;30899:131;31025:4;30899:131;:::i;:::-;30891:139;;30618:419;;;:::o;31043:228::-;31183:34;31179:1;31171:6;31167:14;31160:58;31252:11;31247:2;31239:6;31235:15;31228:36;31043:228;:::o;31277:366::-;31419:3;31440:67;31504:2;31499:3;31440:67;:::i;:::-;31433:74;;31516:93;31605:3;31516:93;:::i;:::-;31634:2;31629:3;31625:12;31618:19;;31277:366;;;:::o;31649:419::-;31815:4;31853:2;31842:9;31838:18;31830:26;;31902:9;31896:4;31892:20;31888:1;31877:9;31873:17;31866:47;31930:131;32056:4;31930:131;:::i;:::-;31922:139;;31649:419;;;:::o;32074:229::-;32214:34;32210:1;32202:6;32198:14;32191:58;32283:12;32278:2;32270:6;32266:15;32259:37;32074:229;:::o;32309:366::-;32451:3;32472:67;32536:2;32531:3;32472:67;:::i;:::-;32465:74;;32548:93;32637:3;32548:93;:::i;:::-;32666:2;32661:3;32657:12;32650:19;;32309:366;;;:::o;32681:419::-;32847:4;32885:2;32874:9;32870:18;32862:26;;32934:9;32928:4;32924:20;32920:1;32909:9;32905:17;32898:47;32962:131;33088:4;32962:131;:::i;:::-;32954:139;;32681:419;;;:::o;33106:182::-;33246:34;33242:1;33234:6;33230:14;33223:58;33106:182;:::o;33294:366::-;33436:3;33457:67;33521:2;33516:3;33457:67;:::i;:::-;33450:74;;33533:93;33622:3;33533:93;:::i;:::-;33651:2;33646:3;33642:12;33635:19;;33294:366;;;:::o;33666:419::-;33832:4;33870:2;33859:9;33855:18;33847:26;;33919:9;33913:4;33909:20;33905:1;33894:9;33890:17;33883:47;33947:131;34073:4;33947:131;:::i;:::-;33939:139;;33666:419;;;:::o;34091:177::-;34231:29;34227:1;34219:6;34215:14;34208:53;34091:177;:::o;34274:366::-;34416:3;34437:67;34501:2;34496:3;34437:67;:::i;:::-;34430:74;;34513:93;34602:3;34513:93;:::i;:::-;34631:2;34626:3;34622:12;34615:19;;34274:366;;;:::o;34646:419::-;34812:4;34850:2;34839:9;34835:18;34827:26;;34899:9;34893:4;34889:20;34885:1;34874:9;34870:17;34863:47;34927:131;35053:4;34927:131;:::i;:::-;34919:139;;34646:419;;;:::o;35071:174::-;35211:26;35207:1;35199:6;35195:14;35188:50;35071:174;:::o;35251:366::-;35393:3;35414:67;35478:2;35473:3;35414:67;:::i;:::-;35407:74;;35490:93;35579:3;35490:93;:::i;:::-;35608:2;35603:3;35599:12;35592:19;;35251:366;;;:::o;35623:419::-;35789:4;35827:2;35816:9;35812:18;35804:26;;35876:9;35870:4;35866:20;35862:1;35851:9;35847:17;35840:47;35904:131;36030:4;35904:131;:::i;:::-;35896:139;;35623:419;;;:::o;36048:174::-;36188:26;36184:1;36176:6;36172:14;36165:50;36048:174;:::o;36228:366::-;36370:3;36391:67;36455:2;36450:3;36391:67;:::i;:::-;36384:74;;36467:93;36556:3;36467:93;:::i;:::-;36585:2;36580:3;36576:12;36569:19;;36228:366;;;:::o;36600:419::-;36766:4;36804:2;36793:9;36789:18;36781:26;;36853:9;36847:4;36843:20;36839:1;36828:9;36824:17;36817:47;36881:131;37007:4;36881:131;:::i;:::-;36873:139;;36600:419;;;:::o;37025:179::-;37165:31;37161:1;37153:6;37149:14;37142:55;37025:179;:::o;37210:366::-;37352:3;37373:67;37437:2;37432:3;37373:67;:::i;:::-;37366:74;;37449:93;37538:3;37449:93;:::i;:::-;37567:2;37562:3;37558:12;37551:19;;37210:366;;;:::o;37582:419::-;37748:4;37786:2;37775:9;37771:18;37763:26;;37835:9;37829:4;37825:20;37821:1;37810:9;37806:17;37799:47;37863:131;37989:4;37863:131;:::i;:::-;37855:139;;37582:419;;;:::o;38007:177::-;38147:29;38143:1;38135:6;38131:14;38124:53;38007:177;:::o;38190:366::-;38332:3;38353:67;38417:2;38412:3;38353:67;:::i;:::-;38346:74;;38429:93;38518:3;38429:93;:::i;:::-;38547:2;38542:3;38538:12;38531:19;;38190:366;;;:::o;38562:419::-;38728:4;38766:2;38755:9;38751:18;38743:26;;38815:9;38809:4;38805:20;38801:1;38790:9;38786:17;38779:47;38843:131;38969:4;38843:131;:::i;:::-;38835:139;;38562:419;;;:::o;38987:182::-;39127:34;39123:1;39115:6;39111:14;39104:58;38987:182;:::o;39175:366::-;39317:3;39338:67;39402:2;39397:3;39338:67;:::i;:::-;39331:74;;39414:93;39503:3;39414:93;:::i;:::-;39532:2;39527:3;39523:12;39516:19;;39175:366;;;:::o;39547:419::-;39713:4;39751:2;39740:9;39736:18;39728:26;;39800:9;39794:4;39790:20;39786:1;39775:9;39771:17;39764:47;39828:131;39954:4;39828:131;:::i;:::-;39820:139;;39547:419;;;:::o;39972:178::-;40112:30;40108:1;40100:6;40096:14;40089:54;39972:178;:::o;40156:366::-;40298:3;40319:67;40383:2;40378:3;40319:67;:::i;:::-;40312:74;;40395:93;40484:3;40395:93;:::i;:::-;40513:2;40508:3;40504:12;40497:19;;40156:366;;;:::o;40528:419::-;40694:4;40732:2;40721:9;40717:18;40709:26;;40781:9;40775:4;40771:20;40767:1;40756:9;40752:17;40745:47;40809:131;40935:4;40809:131;:::i;:::-;40801:139;;40528:419;;;:::o;40953:175::-;41093:27;41089:1;41081:6;41077:14;41070:51;40953:175;:::o;41134:366::-;41276:3;41297:67;41361:2;41356:3;41297:67;:::i;:::-;41290:74;;41373:93;41462:3;41373:93;:::i;:::-;41491:2;41486:3;41482:12;41475:19;;41134:366;;;:::o;41506:419::-;41672:4;41710:2;41699:9;41695:18;41687:26;;41759:9;41753:4;41749:20;41745:1;41734:9;41730:17;41723:47;41787:131;41913:4;41787:131;:::i;:::-;41779:139;;41506:419;;;:::o;41931:234::-;42071:34;42067:1;42059:6;42055:14;42048:58;42140:17;42135:2;42127:6;42123:15;42116:42;41931:234;:::o;42171:366::-;42313:3;42334:67;42398:2;42393:3;42334:67;:::i;:::-;42327:74;;42410:93;42499:3;42410:93;:::i;:::-;42528:2;42523:3;42519:12;42512:19;;42171:366;;;:::o;42543:419::-;42709:4;42747:2;42736:9;42732:18;42724:26;;42796:9;42790:4;42786:20;42782:1;42771:9;42767:17;42760:47;42824:131;42950:4;42824:131;:::i;:::-;42816:139;;42543:419;;;:::o;42968:148::-;43070:11;43107:3;43092:18;;42968:148;;;;:::o;43122:377::-;43228:3;43256:39;43289:5;43256:39;:::i;:::-;43311:89;43393:6;43388:3;43311:89;:::i;:::-;43304:96;;43409:52;43454:6;43449:3;43442:4;43435:5;43431:16;43409:52;:::i;:::-;43486:6;43481:3;43477:16;43470:23;;43232:267;43122:377;;;;:::o;43505:435::-;43685:3;43707:95;43798:3;43789:6;43707:95;:::i;:::-;43700:102;;43819:95;43910:3;43901:6;43819:95;:::i;:::-;43812:102;;43931:3;43924:10;;43505:435;;;;;:::o;43946:225::-;44086:34;44082:1;44074:6;44070:14;44063:58;44155:8;44150:2;44142:6;44138:15;44131:33;43946:225;:::o;44177:366::-;44319:3;44340:67;44404:2;44399:3;44340:67;:::i;:::-;44333:74;;44416:93;44505:3;44416:93;:::i;:::-;44534:2;44529:3;44525:12;44518:19;;44177:366;;;:::o;44549:419::-;44715:4;44753:2;44742:9;44738:18;44730:26;;44802:9;44796:4;44792:20;44788:1;44777:9;44773:17;44766:47;44830:131;44956:4;44830:131;:::i;:::-;44822:139;;44549:419;;;:::o;44974:231::-;45114:34;45110:1;45102:6;45098:14;45091:58;45183:14;45178:2;45170:6;45166:15;45159:39;44974:231;:::o;45211:366::-;45353:3;45374:67;45438:2;45433:3;45374:67;:::i;:::-;45367:74;;45450:93;45539:3;45450:93;:::i;:::-;45568:2;45563:3;45559:12;45552:19;;45211:366;;;:::o;45583:419::-;45749:4;45787:2;45776:9;45772:18;45764:26;;45836:9;45830:4;45826:20;45822:1;45811:9;45807:17;45800:47;45864:131;45990:4;45864:131;:::i;:::-;45856:139;;45583:419;;;:::o;46008:228::-;46148:34;46144:1;46136:6;46132:14;46125:58;46217:11;46212:2;46204:6;46200:15;46193:36;46008:228;:::o;46242:366::-;46384:3;46405:67;46469:2;46464:3;46405:67;:::i;:::-;46398:74;;46481:93;46570:3;46481:93;:::i;:::-;46599:2;46594:3;46590:12;46583:19;;46242:366;;;:::o;46614:419::-;46780:4;46818:2;46807:9;46803:18;46795:26;;46867:9;46861:4;46857:20;46853:1;46842:9;46838:17;46831:47;46895:131;47021:4;46895:131;:::i;:::-;46887:139;;46614:419;;;:::o;47039:223::-;47179:34;47175:1;47167:6;47163:14;47156:58;47248:6;47243:2;47235:6;47231:15;47224:31;47039:223;:::o;47268:366::-;47410:3;47431:67;47495:2;47490:3;47431:67;:::i;:::-;47424:74;;47507:93;47596:3;47507:93;:::i;:::-;47625:2;47620:3;47616:12;47609:19;;47268:366;;;:::o;47640:419::-;47806:4;47844:2;47833:9;47829:18;47821:26;;47893:9;47887:4;47883:20;47879:1;47868:9;47864:17;47857:47;47921:131;48047:4;47921:131;:::i;:::-;47913:139;;47640:419;;;:::o;48065:191::-;48105:4;48125:20;48143:1;48125:20;:::i;:::-;48120:25;;48159:20;48177:1;48159:20;:::i;:::-;48154:25;;48198:1;48195;48192:8;48189:34;;;48203:18;;:::i;:::-;48189:34;48248:1;48245;48241:9;48233:17;;48065:191;;;;:::o;48262:237::-;48402:34;48398:1;48390:6;48386:14;48379:58;48471:20;48466:2;48458:6;48454:15;48447:45;48262:237;:::o;48505:366::-;48647:3;48668:67;48732:2;48727:3;48668:67;:::i;:::-;48661:74;;48744:93;48833:3;48744:93;:::i;:::-;48862:2;48857:3;48853:12;48846:19;;48505:366;;;:::o;48877:419::-;49043:4;49081:2;49070:9;49066:18;49058:26;;49130:9;49124:4;49120:20;49116:1;49105:9;49101:17;49094:47;49158:131;49284:4;49158:131;:::i;:::-;49150:139;;48877:419;;;:::o;49302:180::-;49350:77;49347:1;49340:88;49447:4;49444:1;49437:15;49471:4;49468:1;49461:15;49488:185;49528:1;49545:20;49563:1;49545:20;:::i;:::-;49540:25;;49579:20;49597:1;49579:20;:::i;:::-;49574:25;;49618:1;49608:35;;49623:18;;:::i;:::-;49608:35;49665:1;49662;49658:9;49653:14;;49488:185;;;;:::o;49679:176::-;49711:1;49728:20;49746:1;49728:20;:::i;:::-;49723:25;;49762:20;49780:1;49762:20;:::i;:::-;49757:25;;49801:1;49791:35;;49806:18;;:::i;:::-;49791:35;49847:1;49844;49840:9;49835:14;;49679:176;;;;:::o;49861:98::-;49912:6;49946:5;49940:12;49930:22;;49861:98;;;:::o;49965:168::-;50048:11;50082:6;50077:3;50070:19;50122:4;50117:3;50113:14;50098:29;;49965:168;;;;:::o;50139:360::-;50225:3;50253:38;50285:5;50253:38;:::i;:::-;50307:70;50370:6;50365:3;50307:70;:::i;:::-;50300:77;;50386:52;50431:6;50426:3;50419:4;50412:5;50408:16;50386:52;:::i;:::-;50463:29;50485:6;50463:29;:::i;:::-;50458:3;50454:39;50447:46;;50229:270;50139:360;;;;:::o;50505:640::-;50700:4;50738:3;50727:9;50723:19;50715:27;;50752:71;50820:1;50809:9;50805:17;50796:6;50752:71;:::i;:::-;50833:72;50901:2;50890:9;50886:18;50877:6;50833:72;:::i;:::-;50915;50983:2;50972:9;50968:18;50959:6;50915:72;:::i;:::-;51034:9;51028:4;51024:20;51019:2;51008:9;51004:18;50997:48;51062:76;51133:4;51124:6;51062:76;:::i;:::-;51054:84;;50505:640;;;;;;;:::o;51151:141::-;51207:5;51238:6;51232:13;51223:22;;51254:32;51280:5;51254:32;:::i;:::-;51151:141;;;;:::o;51298:349::-;51367:6;51416:2;51404:9;51395:7;51391:23;51387:32;51384:119;;;51422:79;;:::i;:::-;51384:119;51542:1;51567:63;51622:7;51613:6;51602:9;51598:22;51567:63;:::i;:::-;51557:73;;51513:127;51298:349;;;;:::o;51653:180::-;51701:77;51698:1;51691:88;51798:4;51795:1;51788:15;51822:4;51819:1;51812:15;51839:182;51979:34;51975:1;51967:6;51963:14;51956:58;51839:182;:::o;52027:366::-;52169:3;52190:67;52254:2;52249:3;52190:67;:::i;:::-;52183:74;;52266:93;52355:3;52266:93;:::i;:::-;52384:2;52379:3;52375:12;52368:19;;52027:366;;;:::o;52399:419::-;52565:4;52603:2;52592:9;52588:18;52580:26;;52652:9;52646:4;52642:20;52638:1;52627:9;52623:17;52616:47;52680:131;52806:4;52680:131;:::i;:::-;52672:139;;52399:419;;;:::o;52824:178::-;52964:30;52960:1;52952:6;52948:14;52941:54;52824:178;:::o;53008:366::-;53150:3;53171:67;53235:2;53230:3;53171:67;:::i;:::-;53164:74;;53247:93;53336:3;53247:93;:::i;:::-;53365:2;53360:3;53356:12;53349:19;;53008:366;;;:::o;53380:419::-;53546:4;53584:2;53573:9;53569:18;53561:26;;53633:9;53627:4;53623:20;53619:1;53608:9;53604:17;53597:47;53661:131;53787:4;53661:131;:::i;:::-;53653:139;;53380:419;;;:::o

Swarm Source

ipfs://1bb9188e8512b1bd4a5ad8b7b6a0c101882f79d23d8bf95d282d336ba596c809
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.