ETH Price: $3,300.85 (-3.47%)
Gas: 13 Gwei

Token

Space Yetis (YETI)
 

Overview

Max Total Supply

3,042 YETI

Holders

1,238

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Balance
1 YETI
0x7018dddce2dafd7b38ef11dd3fc61649f717f760
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:
SpaceYetis

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

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

/*  ERC721I - ERC721I (ERC721 0xInuarashi Edition) - Gas Optimized
    Contributors: 0xInuarashi (Message to Martians, Anonymice), 0xBasset (Ether Orcs) */

contract ERC721I {

    string public name; string public symbol;
    string internal baseTokenURI; string internal baseTokenURI_EXT;
    constructor(string memory name_, string memory symbol_) { name = name_; symbol = symbol_; }

    uint256 public totalSupply; 
    mapping(uint256 => address) public ownerOf; 
    mapping(address => uint256) public balanceOf; 

    mapping(uint256 => address) public getApproved; 
    mapping(address => mapping(address => bool)) public isApprovedForAll; 

    // Events
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
    event Mint(address indexed to, uint256 tokenId);
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    // // internal write functions
    // mint
    function _mint(address to_, uint256 tokenId_) internal virtual {
        require(to_ != address(0x0), "ERC721I: _mint() Mint to Zero Address");
        require(ownerOf[tokenId_] == address(0x0), "ERC721I: _mint() Token to Mint Already Exists!");

        // ERC721I Starts Here
        ownerOf[tokenId_] = to_;
        balanceOf[to_]++;
        totalSupply++; 
        // ERC721I Ends Here

        emit Transfer(address(0x0), to_, tokenId_);
        emit Mint(to_, tokenId_);
    }

    // transfer
    function _transfer(address from_, address to_, uint256 tokenId_) internal virtual {
        require(from_ == ownerOf[tokenId_], "ERC721I: _transfer() Transfer Not Owner of Token!");
        require(to_ != address(0x0), "ERC721I: _transfer() Transfer to Zero Address!");

        // ERC721I Starts Here
        // checks if there is an approved address clears it if there is
        if (getApproved[tokenId_] != address(0x0)) { 
            _approve(address(0x0), tokenId_); 
        } 

        ownerOf[tokenId_] = to_; 
        balanceOf[from_]--;
        balanceOf[to_]++;
        // ERC721I Ends Here

        emit Transfer(from_, to_, tokenId_);
    }

    // approve
    function _approve(address to_, uint256 tokenId_) internal virtual {
        if (getApproved[tokenId_] != to_) {
            getApproved[tokenId_] = to_;
            emit Approval(ownerOf[tokenId_], to_, tokenId_);
        }
    }
    function _setApprovalForAll(address owner_, address operator_, bool approved_) internal virtual {
        require(owner_ != operator_, "ERC721I: _setApprovalForAll() Owner must not be the Operator!");
        isApprovedForAll[owner_][operator_] = approved_;
        emit ApprovalForAll(owner_, operator_, approved_);
    }

    // token uri
    function _setBaseTokenURI(string memory uri_) internal virtual {
        baseTokenURI = uri_;
    }
    function _setBaseTokenURI_EXT(string memory ext_) internal virtual {
        baseTokenURI_EXT = ext_;
    }

    // // Internal View Functions
    // Embedded Libraries
    function _toString(uint256 value_) internal pure returns (string memory) {
        if (value_ == 0) { return "0"; }
        uint256 _iterate = value_; uint256 _digits;
        while (_iterate != 0) { _digits++; _iterate /= 10; } // get digits in value_
        bytes memory _buffer = new bytes(_digits);
        while (value_ != 0) { _digits--; _buffer[_digits] = bytes1(uint8(48 + uint256(value_ % 10 ))); value_ /= 10; } // create bytes of value_
        return string(_buffer); // return string converted bytes of value_
    }

    // Functional Views
    function _isApprovedOrOwner(address spender_, uint256 tokenId_) internal view virtual returns (bool) {
        require(ownerOf[tokenId_] != address(0x0), "ERC721I: _isApprovedOrOwner() Owner is Zero Address!");
        address _owner = ownerOf[tokenId_];
        return (spender_ == _owner || spender_ == getApproved[tokenId_] || isApprovedForAll[_owner][spender_]);
    }
    function _exists(uint256 tokenId_) internal view virtual returns (bool) {
        return ownerOf[tokenId_] != address(0x0);
    }

    // // public write functions
    function approve(address to_, uint256 tokenId_) public virtual {
        address _owner = ownerOf[tokenId_];
        require(to_ != _owner, "ERC721I: approve() Cannot approve yourself!");
        require(msg.sender == _owner || isApprovedForAll[_owner][msg.sender], "ERC721I: Caller not owner or Approved!");
        _approve(to_, tokenId_);
    }
    function setApprovalForAll(address operator_, bool approved_) public virtual {
        _setApprovalForAll(msg.sender, operator_, approved_);
    }
    function transferFrom(address from_, address to_, uint256 tokenId_) public virtual {
        require(_isApprovedOrOwner(msg.sender, tokenId_), "ERC721I: transferFrom() _isApprovedOrOwner = false!");
        _transfer(from_, to_, tokenId_);
    }
    function safeTransferFrom(address from_, address to_, uint256 tokenId_, bytes memory data_) public virtual {
        _transfer(from_, to_, tokenId_);
        if (to_.code.length != 0) {
            (, bytes memory _returned) = to_.staticcall(abi.encodeWithSelector(0x150b7a02, msg.sender, from_, tokenId_, data_));
            bytes4 _selector = abi.decode(_returned, (bytes4));
            require(_selector == 0x150b7a02, "ERC721I: safeTransferFrom() to_ not ERC721Receivable!");
        }
    }
    function safeTransferFrom(address from_, address to_, uint256 tokenId_) public virtual {
        safeTransferFrom(from_, to_, tokenId_, "");
    }

    // 0xInuarashi Custom Functions
    function multiTransferFrom(address from_, address to_, uint256[] memory tokenIds_) public virtual {
        for (uint256 i = 0; i < tokenIds_.length; i++) {
            transferFrom(from_, to_, tokenIds_[i]);
        }
    }
    function multiSafeTransferFrom(address from_, address to_, uint256[] memory tokenIds_, bytes memory data_) public virtual {
        for (uint256 i = 0; i < tokenIds_.length; i++) {
            safeTransferFrom(from_, to_, tokenIds_[i], data_);
        }
    }

    // OZ Standard Stuff
    function supportsInterface(bytes4 interfaceId_) public pure returns (bool) {
        return (interfaceId_ == 0x80ac58cd || interfaceId_ == 0x5b5e139f);
    }

    function tokenURI(uint256 tokenId_) public view virtual returns (string memory) {
        require(ownerOf[tokenId_] != address(0x0), "ERC721I: tokenURI() Token does not exist!");
        return string(abi.encodePacked(baseTokenURI, _toString(tokenId_), baseTokenURI_EXT));
    }
    // // public view functions
    // never use these for functions ever, they are expensive af and for view only (this will be an issue in the future for interfaces)
    function walletOfOwner(address address_) public virtual view returns (uint256[] memory) {
        uint256 _balance = balanceOf[address_];
        uint256[] memory _tokens = new uint256[] (_balance);
        uint256 _index;
        uint256 _loopThrough = totalSupply;
        for (uint256 i = 0; i < _loopThrough; i++) {
            if (ownerOf[i] == address(0x0) && _tokens[_balance - 1] == 0) { _loopThrough++; }
            if (ownerOf[i] == address_) { _tokens[_index] = i; _index++; }
        }
        return _tokens;
    }
}

abstract contract MerkleWhitelist {
    bytes32 internal _merkleRoot;
    function _setMerkleRoot(bytes32 merkleRoot_) internal virtual {
        _merkleRoot = merkleRoot_;
    }
    function isWhitelisted(address address_, bytes32[] memory proof_) public view returns (bool) {
        bytes32 _leaf = keccak256(abi.encodePacked(address_));
        for (uint256 i = 0; i < proof_.length; i++) {
            _leaf = _leaf < proof_[i] ? keccak256(abi.encodePacked(_leaf, proof_[i])) : keccak256(abi.encodePacked(proof_[i], _leaf));
        }
        return _leaf == _merkleRoot;
    }
}

abstract contract Security {
    // Prevent Smart Contracts
    modifier onlySender {
        require(msg.sender == tx.origin, "No Smart Contracts!"); _; }
}

abstract contract Ownable {
    address public owner;
    event OwnershipTransferred(address indexed oldOwner_, address indexed newOwner_);
    constructor() { owner = msg.sender; }
    modifier onlyOwner {
        require(owner == msg.sender, "Ownable: caller is not the owner");
        _;
    }
    function _transferOwnership(address newOwner_) internal virtual {
        address _oldOwner = owner;
        owner = newOwner_;
        emit OwnershipTransferred(_oldOwner, newOwner_);    
    }
    function transferOwnership(address newOwner_) public virtual onlyOwner {
        require(newOwner_ != address(0x0), "Ownable: new owner is the zero address!");
        _transferOwnership(newOwner_);
    }
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0x0));
    }
}

// Open0x Payable Governance Module by 0xInuarashi
// This abstract contract utilizes for loops in order to iterate things in order to be modular
// It is not the most gas-effective implementation. 
// We sacrified gas-effectiveness for Modularity instead.
abstract contract PayableGovernance is Ownable {
    // Special Access
    address _payableGovernanceSetter;
    constructor() payable { _payableGovernanceSetter = msg.sender; }
    modifier onlyPayableGovernanceSetter {
        require(msg.sender == _payableGovernanceSetter, "PayableGovernance: Caller is not Setter!"); _; }
    function reouncePayableGovernancePermissions() public onlyPayableGovernanceSetter {
        _payableGovernanceSetter = address(0x0); }

    // Receivable Fallback
    event Received(address from, uint amount);
    receive() external payable { emit Received(msg.sender, msg.value); }

    // Required Variables
    address payable[] internal _payableGovernanceAddresses;
    uint256[] internal _payableGovernanceShares;    
    mapping(address => bool) public addressToEmergencyUnlocked;

    // Withdraw Functionality
    function _withdraw(address payable address_, uint256 amount_) internal {
        (bool success, ) = payable(address_).call{value: amount_}("");
        require(success, "Transfer failed");
    }

    // Governance Functions
    function setPayableGovernanceShareholders(address payable[] memory addresses_, uint256[] memory shares_) public onlyPayableGovernanceSetter {
        require(_payableGovernanceAddresses.length == 0 && _payableGovernanceShares.length == 0, "Payable Governance already set! To set again, reset first!");
        require(addresses_.length == shares_.length, "Address and Shares length mismatch!");
        uint256 _totalShares;
        for (uint256 i = 0; i < addresses_.length; i++) {
            _totalShares += shares_[i];
            _payableGovernanceAddresses.push(addresses_[i]);
            _payableGovernanceShares.push(shares_[i]);
        }
        require(_totalShares == 1000, "Total Shares is not 1000!");
    }
    function resetPayableGovernanceShareholders() public onlyPayableGovernanceSetter {
        while (_payableGovernanceAddresses.length != 0) {
            _payableGovernanceAddresses.pop(); }
        while (_payableGovernanceShares.length != 0) {
            _payableGovernanceShares.pop(); }
    }

    // Governance View Functions
    function balance() public view returns (uint256) {
        return address(this).balance;
    }
    function payableGovernanceAddresses() public view returns (address payable[] memory) {
        return _payableGovernanceAddresses;
    }
    function payableGovernanceShares() public view returns (uint256[] memory) {
        return _payableGovernanceShares;
    }

    // Withdraw Functions
    function withdrawEther() public onlyOwner {
        // require that there has been payable governance set.
        require(_payableGovernanceAddresses.length > 0 && _payableGovernanceShares.length > 0, "Payable governance not set yet!");
         // this should never happen
        require(_payableGovernanceAddresses.length == _payableGovernanceShares.length, "Payable governance length mismatch!");
        
        // now, we check that the governance shares equal to 1000.
        uint256 _totalPayableShares;
        for (uint256 i = 0; i < _payableGovernanceShares.length; i++) {
            _totalPayableShares += _payableGovernanceShares[i]; }
        require(_totalPayableShares == 1000, "Payable Governance Shares is not 1000!");
        
        // // now, we start the withdrawal process if all conditionals pass
        // store current balance in local memory
        uint256 _totalETH = address(this).balance; 

        // withdraw loop for payable governance
        for (uint256 i = 0; i < _payableGovernanceAddresses.length; i++) {
            uint256 _ethToWithdraw = ((_totalETH * _payableGovernanceShares[i]) / 1000);
            _withdraw(_payableGovernanceAddresses[i], _ethToWithdraw);
        }
    }

    function viewWithdrawAmounts() public view onlyOwner returns (uint256[] memory) {
        // require that there has been payable governance set.
        require(_payableGovernanceAddresses.length > 0 && _payableGovernanceShares.length > 0, "Payable governance not set yet!");
         // this should never happen
        require(_payableGovernanceAddresses.length == _payableGovernanceShares.length, "Payable governance length mismatch!");
        
        // now, we check that the governance shares equal to 1000.
        uint256 _totalPayableShares;
        for (uint256 i = 0; i < _payableGovernanceShares.length; i++) {
            _totalPayableShares += _payableGovernanceShares[i]; }
        require(_totalPayableShares == 1000, "Payable Governance Shares is not 1000!");
        
        // // now, we start the array creation process if all conditionals pass
        // store current balance in local memory and instantiate array for input
        uint256 _totalETH = address(this).balance; 
        uint256[] memory _withdrawals = new uint256[] (_payableGovernanceAddresses.length + 2);

        // array creation loop for payable governance values 
        for (uint256 i = 0; i < _payableGovernanceAddresses.length; i++) {
            _withdrawals[i] = ( (_totalETH * _payableGovernanceShares[i]) / 1000 );
        }
        
        // push two last array spots as total eth and added eths of withdrawals
        _withdrawals[_payableGovernanceAddresses.length] = _totalETH;
        for (uint256 i = 0; i < _payableGovernanceAddresses.length; i++) {
            _withdrawals[_payableGovernanceAddresses.length + 1] += _withdrawals[i]; }

        // return the final array data
        return _withdrawals;
    }

    // Shareholder Governance
    modifier onlyShareholder {
        bool _isShareholder;
        for (uint256 i = 0; i < _payableGovernanceAddresses.length; i++) {
            if (msg.sender == _payableGovernanceAddresses[i]) {
                _isShareholder = true;
            }
        }
        require(_isShareholder, "You are not a shareholder!");
        _;
    }
    function unlockEmergencyFunctionsAsShareholder() public onlyShareholder {
        addressToEmergencyUnlocked[msg.sender] = true;
    }

    // Emergency Functions
    modifier onlyEmergency {
        for (uint256 i = 0; i < _payableGovernanceAddresses.length; i++) {
            require(addressToEmergencyUnlocked[_payableGovernanceAddresses[i]], "Emergency Functions are not unlocked!");
        }
        _;
    }
    function emergencyWithdrawEther() public onlyOwner onlyEmergency {
        _withdraw(payable(msg.sender), address(this).balance);
    }
}

abstract contract PublicMint {
    // Public Minting
    bool public _publicMint; uint256 public _publicMintTime;
    function _setPublicMint(bool bool_, uint256 time_) internal {
        _publicMint = bool_; _publicMintTime = time_; }
    modifier publicMintEnabled { 
        require(_publicMint && _publicMintTime <= block.timestamp, 
            "Public Mint is not enabled yet!"); _; }
    function publicMintStatus() external view returns (bool) {
        return _publicMint && _publicMintTime <= block.timestamp; }
}

abstract contract WhitelistMint {
    // Whitelist Minting
    bool internal _whitelistMint; uint256 public _whitelistMintTime;
    function _setWhitelistMint(bool bool_, uint256 time_) internal {
        _whitelistMint = bool_; _whitelistMintTime = time_; }
    modifier whitelistMintEnabled {
        require(_whitelistMint && _whitelistMintTime <= block.timestamp, 
            "Whitelist Mint is not enabled yet!"); _; } 
    function whitelistMintStatus() external view returns (bool) {
        return _whitelistMint && _whitelistMintTime <= block.timestamp; }
}

abstract contract SatelliteMint {
    // Satellite Minting
    bool internal _satelliteMintEnabled; uint256 public _satelliteMintTime;
    function _setSatelliteMint(bool bool_, uint256 time_) internal {
        _satelliteMintEnabled = bool_; _satelliteMintTime = time_; }
    modifier satelliteMintEnabled {
        require(_satelliteMintEnabled && _satelliteMintTime <= block.timestamp, 
            "Satellite Mint is not enabled yet!"); _; } 
    function satelliteMintStatus() external view returns (bool) {
        return _satelliteMintEnabled && _satelliteMintTime <= block.timestamp; }
}

abstract contract SatelliteReceiver {
    // DO NOT CHANGE THIS
    address public satelliteStationAddress = 0x69F7f7053024cd5923A11718F3A28cC62F2AF3a7;
    uint256 public SSTokensMinted = 0;

    // YOU CAN CONFIGURE THIS YOURSELF
    address public SSTokenReceiver = 0x05b19Db67f83850fd79FDd308eaEDAA8fd9d8381;
    address public SSTokenAddress = 0x984b6968132DA160122ddfddcc4461C995741513;
    uint256 public SSTokensPerMint = 20 ether;
    uint256 public SSTokensAvailable = 25;
    uint256 public SSMintsPerAddress = 1;
    
    mapping(address => uint256) public SSAddressToMints;

    function _satelliteMint(uint256 amount_) internal {
        require(msg.sender == satelliteStationAddress, "_satelliteMint: msg.sender is not Satellite Station!");
        require(SSTokensAvailable >= SSTokensMinted + amount_, "_satelliteMint: amount_ requested over maximum avaialble tokens!");
        require(SSMintsPerAddress >= SSAddressToMints[tx.origin] + amount_, "_satelliteMint: amount exceeds mints available per address!");

        SSAddressToMints[tx.origin] += amount_;
        SSTokensMinted += amount_;
    }
}

interface iPlasma {
    function updateReward(address address_) external;
}

contract SpaceYetis is ERC721I, MerkleWhitelist, Security, Ownable, SatelliteReceiver, SatelliteMint, PayableGovernance, PublicMint, WhitelistMint {
    constructor() ERC721I("Space Yetis", "YETI") {}

    // General NFT Variables
    uint256 public maxSupply = 4444;
    uint256 public mintPrice = 0.08 ether;
    uint256 public publicMaxMintsPerTx = 5;

    // Token Yield Variables
    address public plasmaAddress;
    iPlasma public Plasma;
    function setPlasma(address address_) external onlyOwner { plasmaAddress = address_; Plasma = iPlasma(address_); }

    // Contract Administration
    function setMerkleRoot(bytes32 merkleRoot_) external onlyOwner { _setMerkleRoot(merkleRoot_); }
    function setMintPrice(uint256 mintPrice_) external onlyOwner { mintPrice = mintPrice_; }

    function setSatelliteMint(bool bool_, uint256 time_) external onlyOwner { _setSatelliteMint(bool_, time_); }
    function setWhitelisMint(bool bool_, uint256 time_) external onlyOwner { _setWhitelistMint(bool_, time_); }
    function setPublicMint(bool bool_, uint256 time_) external onlyOwner { _setPublicMint(bool_, time_); }
    
    // Internal Functions
    function _mintMany(address to_, uint256 amount_) internal {
        require(maxSupply >= totalSupply + amount_, "_mintMany: amount exceeds maxSupply");
        for (uint256 i = 0; i < amount_; i++) {
            _mint(to_, (totalSupply + 1)); // iterate from 1
        }
        Plasma.updateReward(to_);
    }

    // Onwer Mint
    function ownerMintMany(address[] memory tos_, uint256[] memory amounts_) external onlyOwner {
        require(tos_.length == amounts_.length, "ownerMintMany: array length mismatch!");
        for (uint256 i = 0; i < tos_.length; i++) { 
            _mintMany(tos_[i], amounts_[i]); 
        }
    }

    // Satellite Mint
    function satelliteMint(uint256 amount_) external satelliteMintEnabled {
        require(SSMintsPerAddress >= amount_, "Over maximum mints per address for Satellite Mints!");
        _satelliteMint(amount_);
        _mintMany(tx.origin, amount_);
    }

    // Whitelist Mint
    uint256 public maxMintsPerWL = 3;
    mapping(address => uint256) public addressToWLMinted; 
    
    function whitelistMint(uint256 amount_, bytes32[] memory proof_) external payable onlySender whitelistMintEnabled {
        require(isWhitelisted(msg.sender, proof_), "You are not whitelisted!");
        require(maxMintsPerWL >= amount_, "Maximum 3 mints per tx for whitelist!");
        require(maxMintsPerWL >= addressToWLMinted[msg.sender] + amount_, "Amount exceeds available for whitelist!");
        require(msg.value == mintPrice * amount_, "Invalid value sent!");

        addressToWLMinted[msg.sender] += amount_;

        _mintMany(msg.sender, amount_);
    }

    // Public Mint
    function mint(uint256 amount_) external payable onlySender publicMintEnabled {
        require(publicMaxMintsPerTx >= amount_, "Maximum 5 mints per tx!");
        require(msg.value == mintPrice * amount_, "Invalid value sent!");
        _mintMany(msg.sender, amount_);
    }

    // Token Overrides for Transfer-Hook token yield
    function __yieldTransferHook(address from_, address to_) internal {
        Plasma.updateReward(from_); 
        Plasma.updateReward(to_); 
    }
    function transferFrom(address from_, address to_, uint256 tokenId_) public override {
        __yieldTransferHook(from_, to_);
        ERC721I.transferFrom(from_, to_, tokenId_);
    }
    function safeTransferFrom(address from_, address to_, uint256 tokenId_, bytes memory data_) public override {
        __yieldTransferHook(from_, to_);
        ERC721I.safeTransferFrom(from_, to_, tokenId_, data_);
    }

    // TokenURI Stuffs
    function setBaseTokenURI(string memory uri_) external onlyOwner {
        _setBaseTokenURI(uri_);
    }
    function setBaseTokenURI_EXT(string memory ext_) external onlyOwner {
        _setBaseTokenURI_EXT(ext_);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner_","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner_","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Received","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":"Plasma","outputs":[{"internalType":"contract iPlasma","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"SSAddressToMints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SSMintsPerAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SSTokenAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SSTokenReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SSTokensAvailable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SSTokensMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SSTokensPerMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_publicMint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_publicMintTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_satelliteMintTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_whitelistMintTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"addressToEmergencyUnlocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"addressToWLMinted","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":[],"name":"balance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emergencyWithdrawEther","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"},{"internalType":"bytes32[]","name":"proof_","type":"bytes32[]"}],"name":"isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxMintsPerWL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"mintPrice","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":"tokenIds_","type":"uint256[]"},{"internalType":"bytes","name":"data_","type":"bytes"}],"name":"multiSafeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from_","type":"address"},{"internalType":"address","name":"to_","type":"address"},{"internalType":"uint256[]","name":"tokenIds_","type":"uint256[]"}],"name":"multiTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"tos_","type":"address[]"},{"internalType":"uint256[]","name":"amounts_","type":"uint256[]"}],"name":"ownerMintMany","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"payableGovernanceAddresses","outputs":[{"internalType":"address payable[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"payableGovernanceShares","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"plasmaAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicMaxMintsPerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicMintStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reouncePayableGovernancePermissions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resetPayableGovernanceShareholders","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":"uint256","name":"amount_","type":"uint256"}],"name":"satelliteMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"satelliteMintStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"satelliteStationAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"uri_","type":"string"}],"name":"setBaseTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"ext_","type":"string"}],"name":"setBaseTokenURI_EXT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"merkleRoot_","type":"bytes32"}],"name":"setMerkleRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"mintPrice_","type":"uint256"}],"name":"setMintPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable[]","name":"addresses_","type":"address[]"},{"internalType":"uint256[]","name":"shares_","type":"uint256[]"}],"name":"setPayableGovernanceShareholders","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"setPlasma","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"bool_","type":"bool"},{"internalType":"uint256","name":"time_","type":"uint256"}],"name":"setPublicMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"bool_","type":"bool"},{"internalType":"uint256","name":"time_","type":"uint256"}],"name":"setSatelliteMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"bool_","type":"bool"},{"internalType":"uint256","name":"time_","type":"uint256"}],"name":"setWhitelisMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId_","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId_","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from_","type":"address"},{"internalType":"address","name":"to_","type":"address"},{"internalType":"uint256","name":"tokenId_","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner_","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unlockEmergencyFunctionsAsShareholder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"viewWithdrawAmounts","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"walletOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount_","type":"uint256"},{"internalType":"bytes32[]","name":"proof_","type":"bytes32[]"}],"name":"whitelistMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"whitelistMintStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawEther","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600b80546001600160a01b03199081167369f7f7053024cd5923a11718f3a28cc62f2af3a7179091556000600c55600d805482167305b19db67f83850fd79fdd308eaedaa8fd9d8381179055600e805490911673984b6968132da160122ddfddcc4461c9957415131790556801158e460913d00000600f556019601055600160115561115c601d5567011c37937e080000601e556005601f556003602255348015620000af57600080fd5b50604080518082018252600b81526a537061636520596574697360a81b6020808301918252835180850190945260048452635945544960e01b908401528151919291620000ff9160009162000140565b5080516200011590600190602084019062000140565b5050600a8054336001600160a01b031991821681179092556015805490911690911790555062000223565b8280546200014e90620001e6565b90600052602060002090601f016020900481019282620001725760008555620001bd565b82601f106200018d57805160ff1916838001178555620001bd565b82800160010185558215620001bd579182015b82811115620001bd578251825591602001919060010190620001a0565b50620001cb929150620001cf565b5090565b5b80821115620001cb5760008155600101620001d0565b600181811c90821680620001fb57607f821691505b602082108114156200021d57634e487b7160e01b600052602260045260246000fd5b50919050565b613ce680620002336000396000f3fe6080604052600436106103dd5760003560e01c80637cb64759116101fd578063c87b56dd11610118578063dc92f8f0116100ab578063f487c6021161007a578063f487c60214610b78578063f4a0a52814610b98578063f66ac73014610bb8578063faf5fd4414610bd8578063fc1b857114610bee57600080fd5b8063dc92f8f014610ae6578063e47fa66e14610afb578063e985e9c514610b1d578063f2fde38b14610b5857600080fd5b8063d311c80d116100e7578063d311c80d14610a8f578063d5abeb0114610aa5578063d663595914610abb578063d9d2b4cd14610ad157600080fd5b8063c87b56dd14610a31578063cb9fe58614610a51578063d04d3f8214610a66578063d2cab05614610a7c57600080fd5b8063a22cb46511610190578063b4f9431e1161015f578063b4f9431e146109c8578063b69ef8a8146109de578063b88d4fde146109f1578063c1f730a414610a1157600080fd5b8063a22cb4651461095d578063a26b1ab11461097d578063a91f883514610993578063acdb4d9f146109a857600080fd5b80639514857d116101cc5780639514857d146108ff57806395d89b411461091f5780639970cc2914610934578063a0712d681461094a57600080fd5b80637cb647591461088a5780637ece7fa6146108aa5780638b2998f8146108ca5780638da5cb5b146108df57600080fd5b806342842e0e116102f85780636817c76c1161028b578063715018a61161025a578063715018a61461080057806371ba36121461081557806371cf94a6146108355780637362377b146108555780637c45f3df1461086a57600080fd5b80636817c76c146107705780636e770abe146107865780636e9d287b146107b357806370a08231146107d357600080fd5b80634ee09efb116102c75780634ee09efb146106f0578063524c7ff8146107055780635a23dd991461071a5780636352211e1461073a57600080fd5b806342842e0e1461066e578063438b63001461068e5780634959f0f5146106bb5780634be66f3e146106d057600080fd5b8063185eb6ec1161037057806323b872dd1161033f57806323b872dd146105f9578063262023701461061957806330176e131461062e5780633a3473b61461064e57600080fd5b8063185eb6ec14610579578063213cc76c1461058f57806321d7b649146105af57806323af3126146105c957600080fd5b8063095ea7b3116103ac578063095ea7b3146104e85780630e6aeab0146105085780630edc92e61461054357806318160ddd1461056357600080fd5b806301ffc9a71461042157806302ffaed11461045657806306fdde0314610478578063081812fc1461049a57600080fd5b3661041c57604080513381523460208201527f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874910160405180910390a1005b600080fd5b34801561042d57600080fd5b5061044161043c366004613713565b610c04565b60405190151581526020015b60405180910390f35b34801561046257600080fd5b5061047661047136600461374d565b610c3b565b005b34801561048457600080fd5b5061048d610c7a565b60405161044d919061399c565b3480156104a657600080fd5b506104d06104b53660046136fa565b6007602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161044d565b3480156104f457600080fd5b5061047661050336600461355a565b610d08565b34801561051457600080fd5b506105356105233660046132f7565b60126020526000908152604090205481565b60405190815260200161044d565b34801561054f57600080fd5b50600b546104d0906001600160a01b031681565b34801561056f57600080fd5b5061053560045481565b34801561058557600080fd5b5061053560105481565b34801561059b57600080fd5b506104766105aa3660046136de565b610e2c565b3480156105bb57600080fd5b506019546104419060ff1681565b3480156105d557600080fd5b506104416105e43660046132f7565b60186020526000908152604090205460ff1681565b34801561060557600080fd5b50610476610614366004613436565b610e71565b34801561062557600080fd5b50610441610e86565b34801561063a57600080fd5b5061047661064936600461374d565b610ea2565b34801561065a57600080fd5b506104766106693660046133ae565b610ed5565b34801561067a57600080fd5b50610476610689366004613436565b610f1f565b34801561069a57600080fd5b506106ae6106a93660046132f7565b610f3a565b60405161044d9190613964565b3480156106c757600080fd5b50610476611071565b3480156106dc57600080fd5b506104766106eb366004613586565b611111565b3480156106fc57600080fd5b506104416111f4565b34801561071157600080fd5b506106ae61120f565b34801561072657600080fd5b506104416107353660046134d6565b611491565b34801561074657600080fd5b506104d06107553660046136fa565b6005602052600090815260409020546001600160a01b031681565b34801561077c57600080fd5b50610535601e5481565b34801561079257600080fd5b506105356107a13660046132f7565b60236020526000908152604090205481565b3480156107bf57600080fd5b506104766107ce366004613644565b6115b5565b3480156107df57600080fd5b506105356107ee3660046132f7565b60066020526000908152604090205481565b34801561080c57600080fd5b506104766117db565b34801561082157600080fd5b506021546104d0906001600160a01b031681565b34801561084157600080fd5b506020546104d0906001600160a01b031681565b34801561086157600080fd5b5061047661180f565b34801561087657600080fd5b506104766108853660046132f7565b6119b3565b34801561089657600080fd5b506104766108a53660046136fa565b611a09565b3480156108b657600080fd5b50600d546104d0906001600160a01b031681565b3480156108d657600080fd5b506106ae611a3c565b3480156108eb57600080fd5b50600a546104d0906001600160a01b031681565b34801561090b57600080fd5b5061047661091a3660046136fa565b611a94565b34801561092b57600080fd5b5061048d611b80565b34801561094057600080fd5b5061053560225481565b6104766109583660046136fa565b611b8d565b34801561096957600080fd5b50610476610978366004613525565b611ce0565b34801561098957600080fd5b50610535600f5481565b34801561099f57600080fd5b50610476611ceb565b3480156109b457600080fd5b50600e546104d0906001600160a01b031681565b3480156109d457600080fd5b5061053560115481565b3480156109ea57600080fd5b5047610535565b3480156109fd57600080fd5b50610476610a0c366004613477565b611d27565b348015610a1d57600080fd5b50610476610a2c3660046136de565b611d43565b348015610a3d57600080fd5b5061048d610a4c3660046136fa565b611d84565b348015610a5d57600080fd5b50610441611e32565b348015610a7257600080fd5b50610535601f5481565b610476610a8a366004613795565b611e4d565b348015610a9b57600080fd5b50610535601c5481565b348015610ab157600080fd5b50610535601d5481565b348015610ac757600080fd5b50610535601a5481565b348015610add57600080fd5b506104766120b0565b348015610af257600080fd5b5061047661216f565b348015610b0757600080fd5b50610b1061225c565b60405161044d9190613917565b348015610b2957600080fd5b50610441610b38366004613314565b600860209081526000928352604080842090915290825290205460ff1681565b348015610b6457600080fd5b50610476610b733660046132f7565b6122bd565b348015610b8457600080fd5b50610476610b9336600461334d565b612356565b348015610ba457600080fd5b50610476610bb33660046136fa565b612398565b348015610bc457600080fd5b50610476610bd33660046136de565b6123c7565b348015610be457600080fd5b5061053560145481565b348015610bfa57600080fd5b50610535600c5481565b60006380ac58cd60e01b6001600160e01b031983161480610c355750635b5e139f60e01b6001600160e01b03198316145b92915050565b600a546001600160a01b03163314610c6e5760405162461bcd60e51b8152600401610c6590613a3a565b60405180910390fd5b610c7781612408565b50565b60008054610c8790613bad565b80601f0160208091040260200160405190810160405280929190818152602001828054610cb390613bad565b8015610d005780601f10610cd557610100808354040283529160200191610d00565b820191906000526020600020905b815481529060010190602001808311610ce357829003601f168201915b505050505081565b6000818152600560205260409020546001600160a01b03908116908316811415610d885760405162461bcd60e51b815260206004820152602b60248201527f455243373231493a20617070726f766528292043616e6e6f7420617070726f7660448201526a6520796f757273656c662160a81b6064820152608401610c65565b336001600160a01b0382161480610dc257506001600160a01b038116600090815260086020908152604080832033845290915290205460ff165b610e1d5760405162461bcd60e51b815260206004820152602660248201527f455243373231493a2043616c6c6572206e6f74206f776e6572206f7220417070604482015265726f7665642160d01b6064820152608401610c65565b610e27838361241b565b505050565b600a546001600160a01b03163314610e565760405162461bcd60e51b8152600401610c6590613a3a565b6013805460ff191683151517905560148190555050565b5050565b610e7b83836124a3565b610e27838383612566565b60195460009060ff168015610e9d575042601a5411155b905090565b600a546001600160a01b03163314610ecc5760405162461bcd60e51b8152600401610c6590613a3a565b610c77816125e3565b60005b8251811015610f1857610f068585858481518110610ef857610ef8613c59565b602002602001015185611d27565b80610f1081613be8565b915050610ed8565b5050505050565b610e2783838360405180602001604052806000815250611d27565b6001600160a01b038116600090815260066020526040812054606091816001600160401b03811115610f6e57610f6e613c6f565b604051908082528060200260200182016040528015610f97578160200160208202803683370190505b50600454909150600090815b81811015611066576000818152600560205260409020546001600160a01b0316158015610ff3575083610fd7600187613b53565b81518110610fe757610fe7613c59565b60200260200101516000145b15611006578161100281613be8565b9250505b6000818152600560205260409020546001600160a01b0388811691161415611054578084848151811061103b5761103b613c59565b60209081029190910101528261105081613be8565b9350505b8061105e81613be8565b915050610fa3565b509195945050505050565b6015546001600160a01b0316331461109b5760405162461bcd60e51b8152600401610c65906139af565b601654156110db5760168054806110b4576110b4613c43565b600082815260209020810160001990810180546001600160a01b031916905501905561109b565b6017541561110f5760178054806110f4576110f4613c43565b600190038181906000526020600020016000905590556110db565b565b600a546001600160a01b0316331461113b5760405162461bcd60e51b8152600401610c6590613a3a565b805182511461119a5760405162461bcd60e51b815260206004820152602560248201527f6f776e65724d696e744d616e793a206172726179206c656e677468206d69736d604482015264617463682160d81b6064820152608401610c65565b60005b8251811015610e27576111e28382815181106111bb576111bb613c59565b60200260200101518383815181106111d5576111d5613c59565b60200260200101516125f6565b806111ec81613be8565b91505061119d565b60135460009060ff168015610e9d5750426014541115905090565b600a546060906001600160a01b0316331461123c5760405162461bcd60e51b8152600401610c6590613a3a565b6016541580159061124e575060175415155b61129a5760405162461bcd60e51b815260206004820152601f60248201527f50617961626c6520676f7665726e616e6365206e6f74207365742079657421006044820152606401610c65565b601754601654146112bd5760405162461bcd60e51b8152600401610c65906139f7565b6000805b60175481101561130857601781815481106112de576112de613c59565b9060005260206000200154826112f49190613b08565b91508061130081613be8565b9150506112c1565b50806103e81461132a5760405162461bcd60e51b8152600401610c6590613a6f565b601654479060009061133d906002613b08565b6001600160401b0381111561135457611354613c6f565b60405190808252806020026020018201604052801561137d578160200160208202803683370190505b50905060005b6016548110156113f2576103e8601782815481106113a3576113a3613c59565b9060005260206000200154846113b99190613b34565b6113c39190613b20565b8282815181106113d5576113d5613c59565b6020908102919091010152806113ea81613be8565b915050611383565b50601654815183918391811061140a5761140a613c59565b60200260200101818152505060005b6016548110156114895781818151811061143557611435613c59565b60200260200101518260168054905060016114509190613b08565b8151811061146057611460613c59565b602002602001018181516114749190613b08565b9052508061148181613be8565b915050611419565b509250505090565b6040516bffffffffffffffffffffffff19606084901b166020820152600090819060340160405160208183030381529060405280519060200120905060005b83518110156115a9578381815181106114eb576114eb613c59565b602002602001015182106115495783818151811061150b5761150b613c59565b60200260200101518260405160200161152e929190918252602082015260400190565b60405160208183030381529060405280519060200120611595565b8184828151811061155c5761155c613c59565b602002602001015160405160200161157e929190918252602082015260400190565b604051602081830303815290604052805190602001205b9150806115a181613be8565b9150506114d0565b50600954149392505050565b6015546001600160a01b031633146115df5760405162461bcd60e51b8152600401610c65906139af565b6016541580156115ef5750601754155b6116615760405162461bcd60e51b815260206004820152603a60248201527f50617961626c6520476f7665726e616e636520616c726561647920736574212060448201527f546f2073657420616761696e2c207265736574206669727374210000000000006064820152608401610c65565b80518251146116be5760405162461bcd60e51b815260206004820152602360248201527f4164647265737320616e6420536861726573206c656e677468206d69736d617460448201526263682160e81b6064820152608401610c65565b6000805b8351811015611789578281815181106116dd576116dd613c59565b6020026020010151826116f09190613b08565b9150601684828151811061170657611706613c59565b60209081029190910181015182546001810184556000938452919092200180546001600160a01b0319166001600160a01b03909216919091179055825160179084908390811061175857611758613c59565b602090810291909101810151825460018101845560009384529190922001558061178181613be8565b9150506116c2565b50806103e814610e275760405162461bcd60e51b815260206004820152601960248201527f546f74616c20536861726573206973206e6f74203130303021000000000000006044820152606401610c65565b600a546001600160a01b031633146118055760405162461bcd60e51b8152600401610c6590613a3a565b61110f60006126c9565b600a546001600160a01b031633146118395760405162461bcd60e51b8152600401610c6590613a3a565b6016541580159061184b575060175415155b6118975760405162461bcd60e51b815260206004820152601f60248201527f50617961626c6520676f7665726e616e6365206e6f74207365742079657421006044820152606401610c65565b601754601654146118ba5760405162461bcd60e51b8152600401610c65906139f7565b6000805b60175481101561190557601781815481106118db576118db613c59565b9060005260206000200154826118f19190613b08565b9150806118fd81613be8565b9150506118be565b50806103e8146119275760405162461bcd60e51b8152600401610c6590613a6f565b4760005b601654811015610e275760006103e86017838154811061194d5761194d613c59565b9060005260206000200154846119639190613b34565b61196d9190613b20565b90506119a06016838154811061198557611985613c59565b6000918252602090912001546001600160a01b03168261271b565b50806119ab81613be8565b91505061192b565b600a546001600160a01b031633146119dd5760405162461bcd60e51b8152600401610c6590613a3a565b602080546001600160a01b039092166001600160a01b0319928316811790915560218054909216179055565b600a546001600160a01b03163314611a335760405162461bcd60e51b8152600401610c6590613a3a565b610c7781600955565b60606017805480602002602001604051908101604052809291908181526020018280548015611a8a57602002820191906000526020600020905b815481526020019060010190808311611a76575b5050505050905090565b60135460ff168015611aa857504260145411155b611aff5760405162461bcd60e51b815260206004820152602260248201527f536174656c6c697465204d696e74206973206e6f7420656e61626c6564207965604482015261742160f01b6064820152608401610c65565b806011541015611b6d5760405162461bcd60e51b815260206004820152603360248201527f4f766572206d6178696d756d206d696e747320706572206164647265737320666044820152726f7220536174656c6c697465204d696e74732160681b6064820152608401610c65565b611b76816127b0565b610c7732826125f6565b60018054610c8790613bad565b333214611bd25760405162461bcd60e51b81526020600482015260136024820152724e6f20536d61727420436f6e7472616374732160681b6044820152606401610c65565b60195460ff168015611be6575042601a5411155b611c325760405162461bcd60e51b815260206004820152601f60248201527f5075626c6963204d696e74206973206e6f7420656e61626c65642079657421006044820152606401610c65565b80601f541015611c845760405162461bcd60e51b815260206004820152601760248201527f4d6178696d756d2035206d696e747320706572207478210000000000000000006044820152606401610c65565b80601e54611c929190613b34565b3414611cd65760405162461bcd60e51b8152602060048201526013602482015272496e76616c69642076616c75652073656e742160681b6044820152606401610c65565b610c7733826125f6565b610e6d338383612980565b6015546001600160a01b03163314611d155760405162461bcd60e51b8152600401610c65906139af565b601580546001600160a01b0319169055565b611d3184846124a3565b611d3d84848484612a75565b50505050565b600a546001600160a01b03163314611d6d5760405162461bcd60e51b8152600401610c6590613a3a565b6019805460ff1916831515179055601a8190555050565b6000818152600560205260409020546060906001600160a01b0316611dfd5760405162461bcd60e51b815260206004820152602960248201527f455243373231493a20746f6b656e555249282920546f6b656e20646f6573206e6044820152686f742065786973742160b81b6064820152608401610c65565b6002611e0883612bcb565b6003604051602001611e1c939291906138a7565b6040516020818303038152906040529050919050565b601b5460009060ff168015610e9d575042601c541115905090565b333214611e925760405162461bcd60e51b81526020600482015260136024820152724e6f20536d61727420436f6e7472616374732160681b6044820152606401610c65565b601b5460ff168015611ea6575042601c5411155b611efd5760405162461bcd60e51b815260206004820152602260248201527f57686974656c697374204d696e74206973206e6f7420656e61626c6564207965604482015261742160f01b6064820152608401610c65565b611f073382611491565b611f535760405162461bcd60e51b815260206004820152601860248201527f596f7520617265206e6f742077686974656c69737465642100000000000000006044820152606401610c65565b816022541015611fb35760405162461bcd60e51b815260206004820152602560248201527f4d6178696d756d2033206d696e74732070657220747820666f722077686974656044820152646c6973742160d81b6064820152608401610c65565b33600090815260236020526040902054611fce908390613b08565b602254101561202f5760405162461bcd60e51b815260206004820152602760248201527f416d6f756e74206578636565647320617661696c61626c6520666f722077686960448201526674656c6973742160c81b6064820152608401610c65565b81601e5461203d9190613b34565b34146120815760405162461bcd60e51b8152602060048201526013602482015272496e76616c69642076616c75652073656e742160681b6044820152606401610c65565b33600090815260236020526040812080548492906120a0908490613b08565b90915550610e6d905033836125f6565b6000805b60165481101561210457601681815481106120d1576120d1613c59565b6000918252602090912001546001600160a01b03163314156120f257600191505b806120fc81613be8565b9150506120b4565b50806121525760405162461bcd60e51b815260206004820152601a60248201527f596f7520617265206e6f742061207368617265686f6c646572210000000000006044820152606401610c65565b50336000908152601860205260409020805460ff19166001179055565b600a546001600160a01b031633146121995760405162461bcd60e51b8152600401610c6590613a3a565b60005b6016548110156122515760186000601683815481106121bd576121bd613c59565b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff1661223f5760405162461bcd60e51b815260206004820152602560248201527f456d657267656e63792046756e6374696f6e7320617265206e6f7420756e6c6f604482015264636b65642160d81b6064820152608401610c65565b8061224981613be8565b91505061219c565b5061110f334761271b565b60606016805480602002602001604051908101604052809291908181526020018280548015611a8a57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612296575050505050905090565b600a546001600160a01b031633146122e75760405162461bcd60e51b8152600401610c6590613a3a565b6001600160a01b03811661234d5760405162461bcd60e51b815260206004820152602760248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616044820152666464726573732160c81b6064820152608401610c65565b610c77816126c9565b60005b8151811015611d3d57612386848484848151811061237957612379613c59565b6020026020010151610e71565b8061239081613be8565b915050612359565b600a546001600160a01b031633146123c25760405162461bcd60e51b8152600401610c6590613a3a565b601e55565b600a546001600160a01b031633146123f15760405162461bcd60e51b8152600401610c6590613a3a565b601b805460ff1916831515179055601c8190555050565b8051610e6d906003906020840190613159565b6000818152600760205260409020546001600160a01b03838116911614610e6d57600081815260076020908152604080832080546001600160a01b0319166001600160a01b038781169182179092556005909352818420549151859492909116917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a45050565b60215460405163632447c960e01b81526001600160a01b0384811660048301529091169063632447c990602401600060405180830381600087803b1580156124ea57600080fd5b505af11580156124fe573d6000803e3d6000fd5b505060215460405163632447c960e01b81526001600160a01b038581166004830152909116925063632447c991506024015b600060405180830381600087803b15801561254a57600080fd5b505af115801561255e573d6000803e3d6000fd5b505050505050565b6125703382612cd1565b6125d85760405162461bcd60e51b815260206004820152603360248201527f455243373231493a207472616e7366657246726f6d2829205f6973417070726f6044820152727665644f724f776e6572203d2066616c73652160681b6064820152608401610c65565b610e27838383612dcc565b8051610e6d906002906020840190613159565b806004546126049190613b08565b601d5410156126615760405162461bcd60e51b815260206004820152602360248201527f5f6d696e744d616e793a20616d6f756e742065786365656473206d6178537570604482015262706c7960e81b6064820152608401610c65565b60005b818110156126965761268483600454600161267f9190613b08565b612f9e565b8061268e81613be8565b915050612664565b5060215460405163632447c960e01b81526001600160a01b0384811660048301529091169063632447c990602401612530565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612768576040519150601f19603f3d011682016040523d82523d6000602084013e61276d565b606091505b5050905080610e275760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610c65565b600b546001600160a01b031633146128275760405162461bcd60e51b815260206004820152603460248201527f5f736174656c6c6974654d696e743a206d73672e73656e646572206973206e6f6044820152737420536174656c6c6974652053746174696f6e2160601b6064820152608401610c65565b80600c546128359190613b08565b60105410156128ae576040805162461bcd60e51b81526020600482015260248101919091527f5f736174656c6c6974654d696e743a20616d6f756e745f20726571756573746560448201527f64206f766572206d6178696d756d2061766169616c626c6520746f6b656e73216064820152608401610c65565b326000908152601260205260409020546128c9908290613b08565b60115410156129405760405162461bcd60e51b815260206004820152603b60248201527f5f736174656c6c6974654d696e743a20616d6f756e742065786365656473206d60448201527f696e747320617661696c61626c652070657220616464726573732100000000006064820152608401610c65565b326000908152601260205260408120805483929061295f908490613b08565b9250508190555080600c60008282546129789190613b08565b909155505050565b816001600160a01b0316836001600160a01b03161415612a085760405162461bcd60e51b815260206004820152603d60248201527f455243373231493a205f736574417070726f76616c466f72416c6c2829204f7760448201527f6e6572206d757374206e6f7420626520746865204f70657261746f72210000006064820152608401610c65565b6001600160a01b03838116600081815260086020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b612a80848484612dcc565b6001600160a01b0383163b15611d3d576000836001600160a01b031663150b7a0233878686604051602401612ab894939291906138da565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050604051612af1919061388b565b600060405180830381855afa9150503d8060008114612b2c576040519150601f19603f3d011682016040523d82523d6000602084013e612b31565b606091505b50915050600081806020019051810190612b4b9190613730565b9050630a85bd0160e11b6001600160e01b031982161461255e5760405162461bcd60e51b815260206004820152603560248201527f455243373231493a20736166655472616e7366657246726f6d282920746f5f206044820152746e6f742045524337323152656365697661626c652160581b6064820152608401610c65565b606081612bef5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115612c195780612c0381613be8565b9150612c129050600a83613b20565b9150612bf3565b6000816001600160401b03811115612c3357612c33613c6f565b6040519080825280601f01601f191660200182016040528015612c5d576020820181803683370190505b5090505b8415612cc95781612c7181613b96565b9250612c809050600a86613c03565b612c8b906030613b08565b60f81b818381518110612ca057612ca0613c59565b60200101906001600160f81b031916908160001a905350612cc2600a86613b20565b9450612c61565b949350505050565b6000818152600560205260408120546001600160a01b0316612d525760405162461bcd60e51b815260206004820152603460248201527f455243373231493a205f6973417070726f7665644f724f776e65722829204f776044820152736e6572206973205a65726f20416464726573732160601b6064820152608401610c65565b6000828152600560205260409020546001600160a01b03908116908416811480612d9557506000838152600760205260409020546001600160a01b038581169116145b80612cc957506001600160a01b0380821660009081526008602090815260408083209388168352929052205460ff16949350505050565b6000818152600560205260409020546001600160a01b03848116911614612e4f5760405162461bcd60e51b815260206004820152603160248201527f455243373231493a205f7472616e736665722829205472616e73666572204e6f60448201527074204f776e6572206f6620546f6b656e2160781b6064820152608401610c65565b6001600160a01b038216612ebc5760405162461bcd60e51b815260206004820152602e60248201527f455243373231493a205f7472616e736665722829205472616e7366657220746f60448201526d205a65726f20416464726573732160901b6064820152608401610c65565b6000818152600760205260409020546001600160a01b031615612ee457612ee460008261241b565b600081815260056020908152604080832080546001600160a01b0319166001600160a01b03878116919091179091558616835260069091528120805491612f2a83613b96565b90915550506001600160a01b0382166000908152600660205260408120805491612f5383613be8565b919050555080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6001600160a01b0382166130025760405162461bcd60e51b815260206004820152602560248201527f455243373231493a205f6d696e742829204d696e7420746f205a65726f204164604482015264647265737360d81b6064820152608401610c65565b6000818152600560205260409020546001600160a01b03161561307e5760405162461bcd60e51b815260206004820152602e60248201527f455243373231493a205f6d696e74282920546f6b656e20746f204d696e74204160448201526d6c7265616479204578697374732160901b6064820152608401610c65565b600081815260056020908152604080832080546001600160a01b0319166001600160a01b0387169081179091558352600690915281208054916130c083613be8565b9091555050600480549060006130d583613be8565b909155505060405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4816001600160a01b03167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858260405161314d91815260200190565b60405180910390a25050565b82805461316590613bad565b90600052602060002090601f01602090048101928261318757600085556131cd565b82601f106131a057805160ff19168380011785556131cd565b828001600101855582156131cd579182015b828111156131cd5782518255916020019190600101906131b2565b506131d99291506131dd565b5090565b5b808211156131d957600081556001016131de565b60006001600160401b0383111561320b5761320b613c6f565b61321e601f8401601f1916602001613ab5565b905082815283838301111561323257600080fd5b828260208301376000602084830101529392505050565b600082601f83011261325a57600080fd5b8135602061326f61326a83613ae5565b613ab5565b80838252828201915082860187848660051b890101111561328f57600080fd5b60005b858110156132ae57813584529284019290840190600101613292565b5090979650505050505050565b803580151581146132cb57600080fd5b919050565b600082601f8301126132e157600080fd5b6132f0838335602085016131f2565b9392505050565b60006020828403121561330957600080fd5b81356132f081613c85565b6000806040838503121561332757600080fd5b823561333281613c85565b9150602083013561334281613c85565b809150509250929050565b60008060006060848603121561336257600080fd5b833561336d81613c85565b9250602084013561337d81613c85565b915060408401356001600160401b0381111561339857600080fd5b6133a486828701613249565b9150509250925092565b600080600080608085870312156133c457600080fd5b84356133cf81613c85565b935060208501356133df81613c85565b925060408501356001600160401b03808211156133fb57600080fd5b61340788838901613249565b9350606087013591508082111561341d57600080fd5b5061342a878288016132d0565b91505092959194509250565b60008060006060848603121561344b57600080fd5b833561345681613c85565b9250602084013561346681613c85565b929592945050506040919091013590565b6000806000806080858703121561348d57600080fd5b843561349881613c85565b935060208501356134a881613c85565b92506040850135915060608501356001600160401b038111156134ca57600080fd5b61342a878288016132d0565b600080604083850312156134e957600080fd5b82356134f481613c85565b915060208301356001600160401b0381111561350f57600080fd5b61351b85828601613249565b9150509250929050565b6000806040838503121561353857600080fd5b823561354381613c85565b9150613551602084016132bb565b90509250929050565b6000806040838503121561356d57600080fd5b823561357881613c85565b946020939093013593505050565b6000806040838503121561359957600080fd5b82356001600160401b03808211156135b057600080fd5b818501915085601f8301126135c457600080fd5b813560206135d461326a83613ae5565b8083825282820191508286018a848660051b89010111156135f457600080fd5b600096505b8487101561362057803561360c81613c85565b8352600196909601959183019183016135f9565b509650508601359250508082111561363757600080fd5b5061351b85828601613249565b6000806040838503121561365757600080fd5b82356001600160401b038082111561366e57600080fd5b818501915085601f83011261368257600080fd5b8135602061369261326a83613ae5565b8083825282820191508286018a848660051b89010111156136b257600080fd5b600096505b848710156136205780356136ca81613c85565b8352600196909601959183019183016136b7565b600080604083850312156136f157600080fd5b613578836132bb565b60006020828403121561370c57600080fd5b5035919050565b60006020828403121561372557600080fd5b81356132f081613c9a565b60006020828403121561374257600080fd5b81516132f081613c9a565b60006020828403121561375f57600080fd5b81356001600160401b0381111561377557600080fd5b8201601f8101841361378657600080fd5b612cc9848235602084016131f2565b600080604083850312156137a857600080fd5b8235915060208301356001600160401b0381111561350f57600080fd5b600081518084526137dd816020860160208601613b6a565b601f01601f19169290920160200192915050565b8054600090600181811c908083168061380b57607f831692505b602080841082141561382d57634e487b7160e01b600052602260045260246000fd5b81801561384157600181146138525761387f565b60ff1986168952848901965061387f565b60008881526020902060005b868110156138775781548b82015290850190830161385e565b505084890196505b50505050505092915050565b6000825161389d818460208701613b6a565b9190910192915050565b60006138b382866137f1565b84516138c3818360208901613b6a565b6138cf818301866137f1565b979650505050505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061390d908301846137c5565b9695505050505050565b6020808252825182820181905260009190848201906040850190845b818110156139585783516001600160a01b031683529284019291840191600101613933565b50909695505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561395857835183529284019291840191600101613980565b6020815260006132f060208301846137c5565b60208082526028908201527f50617961626c65476f7665726e616e63653a2043616c6c6572206973206e6f74604082015267205365747465722160c01b606082015260800190565b60208082526023908201527f50617961626c6520676f7665726e616e6365206c656e677468206d69736d617460408201526263682160e81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526026908201527f50617961626c6520476f7665726e616e636520536861726573206973206e6f7460408201526520313030302160d01b606082015260800190565b604051601f8201601f191681016001600160401b0381118282101715613add57613add613c6f565b604052919050565b60006001600160401b03821115613afe57613afe613c6f565b5060051b60200190565b60008219821115613b1b57613b1b613c17565b500190565b600082613b2f57613b2f613c2d565b500490565b6000816000190483118215151615613b4e57613b4e613c17565b500290565b600082821015613b6557613b65613c17565b500390565b60005b83811015613b85578181015183820152602001613b6d565b83811115611d3d5750506000910152565b600081613ba557613ba5613c17565b506000190190565b600181811c90821680613bc157607f821691505b60208210811415613be257634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415613bfc57613bfc613c17565b5060010190565b600082613c1257613c12613c2d565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610c7757600080fd5b6001600160e01b031981168114610c7757600080fdfea2646970667358221220c8c74170ef99f7f119dea3243b0004b2133c0b2fe96b55256cd43300580f45ac64736f6c63430008070033

Deployed Bytecode

0x6080604052600436106103dd5760003560e01c80637cb64759116101fd578063c87b56dd11610118578063dc92f8f0116100ab578063f487c6021161007a578063f487c60214610b78578063f4a0a52814610b98578063f66ac73014610bb8578063faf5fd4414610bd8578063fc1b857114610bee57600080fd5b8063dc92f8f014610ae6578063e47fa66e14610afb578063e985e9c514610b1d578063f2fde38b14610b5857600080fd5b8063d311c80d116100e7578063d311c80d14610a8f578063d5abeb0114610aa5578063d663595914610abb578063d9d2b4cd14610ad157600080fd5b8063c87b56dd14610a31578063cb9fe58614610a51578063d04d3f8214610a66578063d2cab05614610a7c57600080fd5b8063a22cb46511610190578063b4f9431e1161015f578063b4f9431e146109c8578063b69ef8a8146109de578063b88d4fde146109f1578063c1f730a414610a1157600080fd5b8063a22cb4651461095d578063a26b1ab11461097d578063a91f883514610993578063acdb4d9f146109a857600080fd5b80639514857d116101cc5780639514857d146108ff57806395d89b411461091f5780639970cc2914610934578063a0712d681461094a57600080fd5b80637cb647591461088a5780637ece7fa6146108aa5780638b2998f8146108ca5780638da5cb5b146108df57600080fd5b806342842e0e116102f85780636817c76c1161028b578063715018a61161025a578063715018a61461080057806371ba36121461081557806371cf94a6146108355780637362377b146108555780637c45f3df1461086a57600080fd5b80636817c76c146107705780636e770abe146107865780636e9d287b146107b357806370a08231146107d357600080fd5b80634ee09efb116102c75780634ee09efb146106f0578063524c7ff8146107055780635a23dd991461071a5780636352211e1461073a57600080fd5b806342842e0e1461066e578063438b63001461068e5780634959f0f5146106bb5780634be66f3e146106d057600080fd5b8063185eb6ec1161037057806323b872dd1161033f57806323b872dd146105f9578063262023701461061957806330176e131461062e5780633a3473b61461064e57600080fd5b8063185eb6ec14610579578063213cc76c1461058f57806321d7b649146105af57806323af3126146105c957600080fd5b8063095ea7b3116103ac578063095ea7b3146104e85780630e6aeab0146105085780630edc92e61461054357806318160ddd1461056357600080fd5b806301ffc9a71461042157806302ffaed11461045657806306fdde0314610478578063081812fc1461049a57600080fd5b3661041c57604080513381523460208201527f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874910160405180910390a1005b600080fd5b34801561042d57600080fd5b5061044161043c366004613713565b610c04565b60405190151581526020015b60405180910390f35b34801561046257600080fd5b5061047661047136600461374d565b610c3b565b005b34801561048457600080fd5b5061048d610c7a565b60405161044d919061399c565b3480156104a657600080fd5b506104d06104b53660046136fa565b6007602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161044d565b3480156104f457600080fd5b5061047661050336600461355a565b610d08565b34801561051457600080fd5b506105356105233660046132f7565b60126020526000908152604090205481565b60405190815260200161044d565b34801561054f57600080fd5b50600b546104d0906001600160a01b031681565b34801561056f57600080fd5b5061053560045481565b34801561058557600080fd5b5061053560105481565b34801561059b57600080fd5b506104766105aa3660046136de565b610e2c565b3480156105bb57600080fd5b506019546104419060ff1681565b3480156105d557600080fd5b506104416105e43660046132f7565b60186020526000908152604090205460ff1681565b34801561060557600080fd5b50610476610614366004613436565b610e71565b34801561062557600080fd5b50610441610e86565b34801561063a57600080fd5b5061047661064936600461374d565b610ea2565b34801561065a57600080fd5b506104766106693660046133ae565b610ed5565b34801561067a57600080fd5b50610476610689366004613436565b610f1f565b34801561069a57600080fd5b506106ae6106a93660046132f7565b610f3a565b60405161044d9190613964565b3480156106c757600080fd5b50610476611071565b3480156106dc57600080fd5b506104766106eb366004613586565b611111565b3480156106fc57600080fd5b506104416111f4565b34801561071157600080fd5b506106ae61120f565b34801561072657600080fd5b506104416107353660046134d6565b611491565b34801561074657600080fd5b506104d06107553660046136fa565b6005602052600090815260409020546001600160a01b031681565b34801561077c57600080fd5b50610535601e5481565b34801561079257600080fd5b506105356107a13660046132f7565b60236020526000908152604090205481565b3480156107bf57600080fd5b506104766107ce366004613644565b6115b5565b3480156107df57600080fd5b506105356107ee3660046132f7565b60066020526000908152604090205481565b34801561080c57600080fd5b506104766117db565b34801561082157600080fd5b506021546104d0906001600160a01b031681565b34801561084157600080fd5b506020546104d0906001600160a01b031681565b34801561086157600080fd5b5061047661180f565b34801561087657600080fd5b506104766108853660046132f7565b6119b3565b34801561089657600080fd5b506104766108a53660046136fa565b611a09565b3480156108b657600080fd5b50600d546104d0906001600160a01b031681565b3480156108d657600080fd5b506106ae611a3c565b3480156108eb57600080fd5b50600a546104d0906001600160a01b031681565b34801561090b57600080fd5b5061047661091a3660046136fa565b611a94565b34801561092b57600080fd5b5061048d611b80565b34801561094057600080fd5b5061053560225481565b6104766109583660046136fa565b611b8d565b34801561096957600080fd5b50610476610978366004613525565b611ce0565b34801561098957600080fd5b50610535600f5481565b34801561099f57600080fd5b50610476611ceb565b3480156109b457600080fd5b50600e546104d0906001600160a01b031681565b3480156109d457600080fd5b5061053560115481565b3480156109ea57600080fd5b5047610535565b3480156109fd57600080fd5b50610476610a0c366004613477565b611d27565b348015610a1d57600080fd5b50610476610a2c3660046136de565b611d43565b348015610a3d57600080fd5b5061048d610a4c3660046136fa565b611d84565b348015610a5d57600080fd5b50610441611e32565b348015610a7257600080fd5b50610535601f5481565b610476610a8a366004613795565b611e4d565b348015610a9b57600080fd5b50610535601c5481565b348015610ab157600080fd5b50610535601d5481565b348015610ac757600080fd5b50610535601a5481565b348015610add57600080fd5b506104766120b0565b348015610af257600080fd5b5061047661216f565b348015610b0757600080fd5b50610b1061225c565b60405161044d9190613917565b348015610b2957600080fd5b50610441610b38366004613314565b600860209081526000928352604080842090915290825290205460ff1681565b348015610b6457600080fd5b50610476610b733660046132f7565b6122bd565b348015610b8457600080fd5b50610476610b9336600461334d565b612356565b348015610ba457600080fd5b50610476610bb33660046136fa565b612398565b348015610bc457600080fd5b50610476610bd33660046136de565b6123c7565b348015610be457600080fd5b5061053560145481565b348015610bfa57600080fd5b50610535600c5481565b60006380ac58cd60e01b6001600160e01b031983161480610c355750635b5e139f60e01b6001600160e01b03198316145b92915050565b600a546001600160a01b03163314610c6e5760405162461bcd60e51b8152600401610c6590613a3a565b60405180910390fd5b610c7781612408565b50565b60008054610c8790613bad565b80601f0160208091040260200160405190810160405280929190818152602001828054610cb390613bad565b8015610d005780601f10610cd557610100808354040283529160200191610d00565b820191906000526020600020905b815481529060010190602001808311610ce357829003601f168201915b505050505081565b6000818152600560205260409020546001600160a01b03908116908316811415610d885760405162461bcd60e51b815260206004820152602b60248201527f455243373231493a20617070726f766528292043616e6e6f7420617070726f7660448201526a6520796f757273656c662160a81b6064820152608401610c65565b336001600160a01b0382161480610dc257506001600160a01b038116600090815260086020908152604080832033845290915290205460ff165b610e1d5760405162461bcd60e51b815260206004820152602660248201527f455243373231493a2043616c6c6572206e6f74206f776e6572206f7220417070604482015265726f7665642160d01b6064820152608401610c65565b610e27838361241b565b505050565b600a546001600160a01b03163314610e565760405162461bcd60e51b8152600401610c6590613a3a565b6013805460ff191683151517905560148190555050565b5050565b610e7b83836124a3565b610e27838383612566565b60195460009060ff168015610e9d575042601a5411155b905090565b600a546001600160a01b03163314610ecc5760405162461bcd60e51b8152600401610c6590613a3a565b610c77816125e3565b60005b8251811015610f1857610f068585858481518110610ef857610ef8613c59565b602002602001015185611d27565b80610f1081613be8565b915050610ed8565b5050505050565b610e2783838360405180602001604052806000815250611d27565b6001600160a01b038116600090815260066020526040812054606091816001600160401b03811115610f6e57610f6e613c6f565b604051908082528060200260200182016040528015610f97578160200160208202803683370190505b50600454909150600090815b81811015611066576000818152600560205260409020546001600160a01b0316158015610ff3575083610fd7600187613b53565b81518110610fe757610fe7613c59565b60200260200101516000145b15611006578161100281613be8565b9250505b6000818152600560205260409020546001600160a01b0388811691161415611054578084848151811061103b5761103b613c59565b60209081029190910101528261105081613be8565b9350505b8061105e81613be8565b915050610fa3565b509195945050505050565b6015546001600160a01b0316331461109b5760405162461bcd60e51b8152600401610c65906139af565b601654156110db5760168054806110b4576110b4613c43565b600082815260209020810160001990810180546001600160a01b031916905501905561109b565b6017541561110f5760178054806110f4576110f4613c43565b600190038181906000526020600020016000905590556110db565b565b600a546001600160a01b0316331461113b5760405162461bcd60e51b8152600401610c6590613a3a565b805182511461119a5760405162461bcd60e51b815260206004820152602560248201527f6f776e65724d696e744d616e793a206172726179206c656e677468206d69736d604482015264617463682160d81b6064820152608401610c65565b60005b8251811015610e27576111e28382815181106111bb576111bb613c59565b60200260200101518383815181106111d5576111d5613c59565b60200260200101516125f6565b806111ec81613be8565b91505061119d565b60135460009060ff168015610e9d5750426014541115905090565b600a546060906001600160a01b0316331461123c5760405162461bcd60e51b8152600401610c6590613a3a565b6016541580159061124e575060175415155b61129a5760405162461bcd60e51b815260206004820152601f60248201527f50617961626c6520676f7665726e616e6365206e6f74207365742079657421006044820152606401610c65565b601754601654146112bd5760405162461bcd60e51b8152600401610c65906139f7565b6000805b60175481101561130857601781815481106112de576112de613c59565b9060005260206000200154826112f49190613b08565b91508061130081613be8565b9150506112c1565b50806103e81461132a5760405162461bcd60e51b8152600401610c6590613a6f565b601654479060009061133d906002613b08565b6001600160401b0381111561135457611354613c6f565b60405190808252806020026020018201604052801561137d578160200160208202803683370190505b50905060005b6016548110156113f2576103e8601782815481106113a3576113a3613c59565b9060005260206000200154846113b99190613b34565b6113c39190613b20565b8282815181106113d5576113d5613c59565b6020908102919091010152806113ea81613be8565b915050611383565b50601654815183918391811061140a5761140a613c59565b60200260200101818152505060005b6016548110156114895781818151811061143557611435613c59565b60200260200101518260168054905060016114509190613b08565b8151811061146057611460613c59565b602002602001018181516114749190613b08565b9052508061148181613be8565b915050611419565b509250505090565b6040516bffffffffffffffffffffffff19606084901b166020820152600090819060340160405160208183030381529060405280519060200120905060005b83518110156115a9578381815181106114eb576114eb613c59565b602002602001015182106115495783818151811061150b5761150b613c59565b60200260200101518260405160200161152e929190918252602082015260400190565b60405160208183030381529060405280519060200120611595565b8184828151811061155c5761155c613c59565b602002602001015160405160200161157e929190918252602082015260400190565b604051602081830303815290604052805190602001205b9150806115a181613be8565b9150506114d0565b50600954149392505050565b6015546001600160a01b031633146115df5760405162461bcd60e51b8152600401610c65906139af565b6016541580156115ef5750601754155b6116615760405162461bcd60e51b815260206004820152603a60248201527f50617961626c6520476f7665726e616e636520616c726561647920736574212060448201527f546f2073657420616761696e2c207265736574206669727374210000000000006064820152608401610c65565b80518251146116be5760405162461bcd60e51b815260206004820152602360248201527f4164647265737320616e6420536861726573206c656e677468206d69736d617460448201526263682160e81b6064820152608401610c65565b6000805b8351811015611789578281815181106116dd576116dd613c59565b6020026020010151826116f09190613b08565b9150601684828151811061170657611706613c59565b60209081029190910181015182546001810184556000938452919092200180546001600160a01b0319166001600160a01b03909216919091179055825160179084908390811061175857611758613c59565b602090810291909101810151825460018101845560009384529190922001558061178181613be8565b9150506116c2565b50806103e814610e275760405162461bcd60e51b815260206004820152601960248201527f546f74616c20536861726573206973206e6f74203130303021000000000000006044820152606401610c65565b600a546001600160a01b031633146118055760405162461bcd60e51b8152600401610c6590613a3a565b61110f60006126c9565b600a546001600160a01b031633146118395760405162461bcd60e51b8152600401610c6590613a3a565b6016541580159061184b575060175415155b6118975760405162461bcd60e51b815260206004820152601f60248201527f50617961626c6520676f7665726e616e6365206e6f74207365742079657421006044820152606401610c65565b601754601654146118ba5760405162461bcd60e51b8152600401610c65906139f7565b6000805b60175481101561190557601781815481106118db576118db613c59565b9060005260206000200154826118f19190613b08565b9150806118fd81613be8565b9150506118be565b50806103e8146119275760405162461bcd60e51b8152600401610c6590613a6f565b4760005b601654811015610e275760006103e86017838154811061194d5761194d613c59565b9060005260206000200154846119639190613b34565b61196d9190613b20565b90506119a06016838154811061198557611985613c59565b6000918252602090912001546001600160a01b03168261271b565b50806119ab81613be8565b91505061192b565b600a546001600160a01b031633146119dd5760405162461bcd60e51b8152600401610c6590613a3a565b602080546001600160a01b039092166001600160a01b0319928316811790915560218054909216179055565b600a546001600160a01b03163314611a335760405162461bcd60e51b8152600401610c6590613a3a565b610c7781600955565b60606017805480602002602001604051908101604052809291908181526020018280548015611a8a57602002820191906000526020600020905b815481526020019060010190808311611a76575b5050505050905090565b60135460ff168015611aa857504260145411155b611aff5760405162461bcd60e51b815260206004820152602260248201527f536174656c6c697465204d696e74206973206e6f7420656e61626c6564207965604482015261742160f01b6064820152608401610c65565b806011541015611b6d5760405162461bcd60e51b815260206004820152603360248201527f4f766572206d6178696d756d206d696e747320706572206164647265737320666044820152726f7220536174656c6c697465204d696e74732160681b6064820152608401610c65565b611b76816127b0565b610c7732826125f6565b60018054610c8790613bad565b333214611bd25760405162461bcd60e51b81526020600482015260136024820152724e6f20536d61727420436f6e7472616374732160681b6044820152606401610c65565b60195460ff168015611be6575042601a5411155b611c325760405162461bcd60e51b815260206004820152601f60248201527f5075626c6963204d696e74206973206e6f7420656e61626c65642079657421006044820152606401610c65565b80601f541015611c845760405162461bcd60e51b815260206004820152601760248201527f4d6178696d756d2035206d696e747320706572207478210000000000000000006044820152606401610c65565b80601e54611c929190613b34565b3414611cd65760405162461bcd60e51b8152602060048201526013602482015272496e76616c69642076616c75652073656e742160681b6044820152606401610c65565b610c7733826125f6565b610e6d338383612980565b6015546001600160a01b03163314611d155760405162461bcd60e51b8152600401610c65906139af565b601580546001600160a01b0319169055565b611d3184846124a3565b611d3d84848484612a75565b50505050565b600a546001600160a01b03163314611d6d5760405162461bcd60e51b8152600401610c6590613a3a565b6019805460ff1916831515179055601a8190555050565b6000818152600560205260409020546060906001600160a01b0316611dfd5760405162461bcd60e51b815260206004820152602960248201527f455243373231493a20746f6b656e555249282920546f6b656e20646f6573206e6044820152686f742065786973742160b81b6064820152608401610c65565b6002611e0883612bcb565b6003604051602001611e1c939291906138a7565b6040516020818303038152906040529050919050565b601b5460009060ff168015610e9d575042601c541115905090565b333214611e925760405162461bcd60e51b81526020600482015260136024820152724e6f20536d61727420436f6e7472616374732160681b6044820152606401610c65565b601b5460ff168015611ea6575042601c5411155b611efd5760405162461bcd60e51b815260206004820152602260248201527f57686974656c697374204d696e74206973206e6f7420656e61626c6564207965604482015261742160f01b6064820152608401610c65565b611f073382611491565b611f535760405162461bcd60e51b815260206004820152601860248201527f596f7520617265206e6f742077686974656c69737465642100000000000000006044820152606401610c65565b816022541015611fb35760405162461bcd60e51b815260206004820152602560248201527f4d6178696d756d2033206d696e74732070657220747820666f722077686974656044820152646c6973742160d81b6064820152608401610c65565b33600090815260236020526040902054611fce908390613b08565b602254101561202f5760405162461bcd60e51b815260206004820152602760248201527f416d6f756e74206578636565647320617661696c61626c6520666f722077686960448201526674656c6973742160c81b6064820152608401610c65565b81601e5461203d9190613b34565b34146120815760405162461bcd60e51b8152602060048201526013602482015272496e76616c69642076616c75652073656e742160681b6044820152606401610c65565b33600090815260236020526040812080548492906120a0908490613b08565b90915550610e6d905033836125f6565b6000805b60165481101561210457601681815481106120d1576120d1613c59565b6000918252602090912001546001600160a01b03163314156120f257600191505b806120fc81613be8565b9150506120b4565b50806121525760405162461bcd60e51b815260206004820152601a60248201527f596f7520617265206e6f742061207368617265686f6c646572210000000000006044820152606401610c65565b50336000908152601860205260409020805460ff19166001179055565b600a546001600160a01b031633146121995760405162461bcd60e51b8152600401610c6590613a3a565b60005b6016548110156122515760186000601683815481106121bd576121bd613c59565b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff1661223f5760405162461bcd60e51b815260206004820152602560248201527f456d657267656e63792046756e6374696f6e7320617265206e6f7420756e6c6f604482015264636b65642160d81b6064820152608401610c65565b8061224981613be8565b91505061219c565b5061110f334761271b565b60606016805480602002602001604051908101604052809291908181526020018280548015611a8a57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612296575050505050905090565b600a546001600160a01b031633146122e75760405162461bcd60e51b8152600401610c6590613a3a565b6001600160a01b03811661234d5760405162461bcd60e51b815260206004820152602760248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616044820152666464726573732160c81b6064820152608401610c65565b610c77816126c9565b60005b8151811015611d3d57612386848484848151811061237957612379613c59565b6020026020010151610e71565b8061239081613be8565b915050612359565b600a546001600160a01b031633146123c25760405162461bcd60e51b8152600401610c6590613a3a565b601e55565b600a546001600160a01b031633146123f15760405162461bcd60e51b8152600401610c6590613a3a565b601b805460ff1916831515179055601c8190555050565b8051610e6d906003906020840190613159565b6000818152600760205260409020546001600160a01b03838116911614610e6d57600081815260076020908152604080832080546001600160a01b0319166001600160a01b038781169182179092556005909352818420549151859492909116917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a45050565b60215460405163632447c960e01b81526001600160a01b0384811660048301529091169063632447c990602401600060405180830381600087803b1580156124ea57600080fd5b505af11580156124fe573d6000803e3d6000fd5b505060215460405163632447c960e01b81526001600160a01b038581166004830152909116925063632447c991506024015b600060405180830381600087803b15801561254a57600080fd5b505af115801561255e573d6000803e3d6000fd5b505050505050565b6125703382612cd1565b6125d85760405162461bcd60e51b815260206004820152603360248201527f455243373231493a207472616e7366657246726f6d2829205f6973417070726f6044820152727665644f724f776e6572203d2066616c73652160681b6064820152608401610c65565b610e27838383612dcc565b8051610e6d906002906020840190613159565b806004546126049190613b08565b601d5410156126615760405162461bcd60e51b815260206004820152602360248201527f5f6d696e744d616e793a20616d6f756e742065786365656473206d6178537570604482015262706c7960e81b6064820152608401610c65565b60005b818110156126965761268483600454600161267f9190613b08565b612f9e565b8061268e81613be8565b915050612664565b5060215460405163632447c960e01b81526001600160a01b0384811660048301529091169063632447c990602401612530565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612768576040519150601f19603f3d011682016040523d82523d6000602084013e61276d565b606091505b5050905080610e275760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610c65565b600b546001600160a01b031633146128275760405162461bcd60e51b815260206004820152603460248201527f5f736174656c6c6974654d696e743a206d73672e73656e646572206973206e6f6044820152737420536174656c6c6974652053746174696f6e2160601b6064820152608401610c65565b80600c546128359190613b08565b60105410156128ae576040805162461bcd60e51b81526020600482015260248101919091527f5f736174656c6c6974654d696e743a20616d6f756e745f20726571756573746560448201527f64206f766572206d6178696d756d2061766169616c626c6520746f6b656e73216064820152608401610c65565b326000908152601260205260409020546128c9908290613b08565b60115410156129405760405162461bcd60e51b815260206004820152603b60248201527f5f736174656c6c6974654d696e743a20616d6f756e742065786365656473206d60448201527f696e747320617661696c61626c652070657220616464726573732100000000006064820152608401610c65565b326000908152601260205260408120805483929061295f908490613b08565b9250508190555080600c60008282546129789190613b08565b909155505050565b816001600160a01b0316836001600160a01b03161415612a085760405162461bcd60e51b815260206004820152603d60248201527f455243373231493a205f736574417070726f76616c466f72416c6c2829204f7760448201527f6e6572206d757374206e6f7420626520746865204f70657261746f72210000006064820152608401610c65565b6001600160a01b03838116600081815260086020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b612a80848484612dcc565b6001600160a01b0383163b15611d3d576000836001600160a01b031663150b7a0233878686604051602401612ab894939291906138da565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050604051612af1919061388b565b600060405180830381855afa9150503d8060008114612b2c576040519150601f19603f3d011682016040523d82523d6000602084013e612b31565b606091505b50915050600081806020019051810190612b4b9190613730565b9050630a85bd0160e11b6001600160e01b031982161461255e5760405162461bcd60e51b815260206004820152603560248201527f455243373231493a20736166655472616e7366657246726f6d282920746f5f206044820152746e6f742045524337323152656365697661626c652160581b6064820152608401610c65565b606081612bef5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115612c195780612c0381613be8565b9150612c129050600a83613b20565b9150612bf3565b6000816001600160401b03811115612c3357612c33613c6f565b6040519080825280601f01601f191660200182016040528015612c5d576020820181803683370190505b5090505b8415612cc95781612c7181613b96565b9250612c809050600a86613c03565b612c8b906030613b08565b60f81b818381518110612ca057612ca0613c59565b60200101906001600160f81b031916908160001a905350612cc2600a86613b20565b9450612c61565b949350505050565b6000818152600560205260408120546001600160a01b0316612d525760405162461bcd60e51b815260206004820152603460248201527f455243373231493a205f6973417070726f7665644f724f776e65722829204f776044820152736e6572206973205a65726f20416464726573732160601b6064820152608401610c65565b6000828152600560205260409020546001600160a01b03908116908416811480612d9557506000838152600760205260409020546001600160a01b038581169116145b80612cc957506001600160a01b0380821660009081526008602090815260408083209388168352929052205460ff16949350505050565b6000818152600560205260409020546001600160a01b03848116911614612e4f5760405162461bcd60e51b815260206004820152603160248201527f455243373231493a205f7472616e736665722829205472616e73666572204e6f60448201527074204f776e6572206f6620546f6b656e2160781b6064820152608401610c65565b6001600160a01b038216612ebc5760405162461bcd60e51b815260206004820152602e60248201527f455243373231493a205f7472616e736665722829205472616e7366657220746f60448201526d205a65726f20416464726573732160901b6064820152608401610c65565b6000818152600760205260409020546001600160a01b031615612ee457612ee460008261241b565b600081815260056020908152604080832080546001600160a01b0319166001600160a01b03878116919091179091558616835260069091528120805491612f2a83613b96565b90915550506001600160a01b0382166000908152600660205260408120805491612f5383613be8565b919050555080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6001600160a01b0382166130025760405162461bcd60e51b815260206004820152602560248201527f455243373231493a205f6d696e742829204d696e7420746f205a65726f204164604482015264647265737360d81b6064820152608401610c65565b6000818152600560205260409020546001600160a01b03161561307e5760405162461bcd60e51b815260206004820152602e60248201527f455243373231493a205f6d696e74282920546f6b656e20746f204d696e74204160448201526d6c7265616479204578697374732160901b6064820152608401610c65565b600081815260056020908152604080832080546001600160a01b0319166001600160a01b0387169081179091558352600690915281208054916130c083613be8565b9091555050600480549060006130d583613be8565b909155505060405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4816001600160a01b03167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858260405161314d91815260200190565b60405180910390a25050565b82805461316590613bad565b90600052602060002090601f01602090048101928261318757600085556131cd565b82601f106131a057805160ff19168380011785556131cd565b828001600101855582156131cd579182015b828111156131cd5782518255916020019190600101906131b2565b506131d99291506131dd565b5090565b5b808211156131d957600081556001016131de565b60006001600160401b0383111561320b5761320b613c6f565b61321e601f8401601f1916602001613ab5565b905082815283838301111561323257600080fd5b828260208301376000602084830101529392505050565b600082601f83011261325a57600080fd5b8135602061326f61326a83613ae5565b613ab5565b80838252828201915082860187848660051b890101111561328f57600080fd5b60005b858110156132ae57813584529284019290840190600101613292565b5090979650505050505050565b803580151581146132cb57600080fd5b919050565b600082601f8301126132e157600080fd5b6132f0838335602085016131f2565b9392505050565b60006020828403121561330957600080fd5b81356132f081613c85565b6000806040838503121561332757600080fd5b823561333281613c85565b9150602083013561334281613c85565b809150509250929050565b60008060006060848603121561336257600080fd5b833561336d81613c85565b9250602084013561337d81613c85565b915060408401356001600160401b0381111561339857600080fd5b6133a486828701613249565b9150509250925092565b600080600080608085870312156133c457600080fd5b84356133cf81613c85565b935060208501356133df81613c85565b925060408501356001600160401b03808211156133fb57600080fd5b61340788838901613249565b9350606087013591508082111561341d57600080fd5b5061342a878288016132d0565b91505092959194509250565b60008060006060848603121561344b57600080fd5b833561345681613c85565b9250602084013561346681613c85565b929592945050506040919091013590565b6000806000806080858703121561348d57600080fd5b843561349881613c85565b935060208501356134a881613c85565b92506040850135915060608501356001600160401b038111156134ca57600080fd5b61342a878288016132d0565b600080604083850312156134e957600080fd5b82356134f481613c85565b915060208301356001600160401b0381111561350f57600080fd5b61351b85828601613249565b9150509250929050565b6000806040838503121561353857600080fd5b823561354381613c85565b9150613551602084016132bb565b90509250929050565b6000806040838503121561356d57600080fd5b823561357881613c85565b946020939093013593505050565b6000806040838503121561359957600080fd5b82356001600160401b03808211156135b057600080fd5b818501915085601f8301126135c457600080fd5b813560206135d461326a83613ae5565b8083825282820191508286018a848660051b89010111156135f457600080fd5b600096505b8487101561362057803561360c81613c85565b8352600196909601959183019183016135f9565b509650508601359250508082111561363757600080fd5b5061351b85828601613249565b6000806040838503121561365757600080fd5b82356001600160401b038082111561366e57600080fd5b818501915085601f83011261368257600080fd5b8135602061369261326a83613ae5565b8083825282820191508286018a848660051b89010111156136b257600080fd5b600096505b848710156136205780356136ca81613c85565b8352600196909601959183019183016136b7565b600080604083850312156136f157600080fd5b613578836132bb565b60006020828403121561370c57600080fd5b5035919050565b60006020828403121561372557600080fd5b81356132f081613c9a565b60006020828403121561374257600080fd5b81516132f081613c9a565b60006020828403121561375f57600080fd5b81356001600160401b0381111561377557600080fd5b8201601f8101841361378657600080fd5b612cc9848235602084016131f2565b600080604083850312156137a857600080fd5b8235915060208301356001600160401b0381111561350f57600080fd5b600081518084526137dd816020860160208601613b6a565b601f01601f19169290920160200192915050565b8054600090600181811c908083168061380b57607f831692505b602080841082141561382d57634e487b7160e01b600052602260045260246000fd5b81801561384157600181146138525761387f565b60ff1986168952848901965061387f565b60008881526020902060005b868110156138775781548b82015290850190830161385e565b505084890196505b50505050505092915050565b6000825161389d818460208701613b6a565b9190910192915050565b60006138b382866137f1565b84516138c3818360208901613b6a565b6138cf818301866137f1565b979650505050505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061390d908301846137c5565b9695505050505050565b6020808252825182820181905260009190848201906040850190845b818110156139585783516001600160a01b031683529284019291840191600101613933565b50909695505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561395857835183529284019291840191600101613980565b6020815260006132f060208301846137c5565b60208082526028908201527f50617961626c65476f7665726e616e63653a2043616c6c6572206973206e6f74604082015267205365747465722160c01b606082015260800190565b60208082526023908201527f50617961626c6520676f7665726e616e6365206c656e677468206d69736d617460408201526263682160e81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526026908201527f50617961626c6520476f7665726e616e636520536861726573206973206e6f7460408201526520313030302160d01b606082015260800190565b604051601f8201601f191681016001600160401b0381118282101715613add57613add613c6f565b604052919050565b60006001600160401b03821115613afe57613afe613c6f565b5060051b60200190565b60008219821115613b1b57613b1b613c17565b500190565b600082613b2f57613b2f613c2d565b500490565b6000816000190483118215151615613b4e57613b4e613c17565b500290565b600082821015613b6557613b65613c17565b500390565b60005b83811015613b85578181015183820152602001613b6d565b83811115611d3d5750506000910152565b600081613ba557613ba5613c17565b506000190190565b600181811c90821680613bc157607f821691505b60208210811415613be257634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415613bfc57613bfc613c17565b5060010190565b600082613c1257613c12613c2d565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610c7757600080fd5b6001600160e01b031981168114610c7757600080fdfea2646970667358221220c8c74170ef99f7f119dea3243b0004b2133c0b2fe96b55256cd43300580f45ac64736f6c63430008070033

Deployed Bytecode Sourcemap

18894:4021:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9965:31;;;9974:10;13899:51:1;;9986:9:0;13981:2:1;13966:18;;13959:34;9965:31:0;;13872:18:1;9965:31:0;;;;;;;18894:4021;;;;;6341:159;;;;;;;;;;-1:-1:-1;6341:159:0;;;;;:::i;:::-;;:::i;:::-;;;15485:14:1;;15478:22;15460:41;;15448:2;15433:18;6341:159:0;;;;;;;;22799:113;;;;;;;;;;-1:-1:-1;22799:113:0;;;;;:::i;:::-;;:::i;:::-;;246:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;599:46::-;;;;;;;;;;-1:-1:-1;599:46:0;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;599:46:0;;;;;;-1:-1:-1;;;;;13188:32:1;;;13170:51;;13158:2;13143:18;599:46:0;13024:203:1;4341:352:0;;;;;;;;;;-1:-1:-1;4341:352:0;;;;;:::i;:::-;;:::i;18214:51::-;;;;;;;;;;-1:-1:-1;18214:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;31214:25:1;;;31202:2;31187:18;18214:51:0;31068:177:1;17738:83:0;;;;;;;;;;-1:-1:-1;17738:83:0;;;;-1:-1:-1;;;;;17738:83:0;;;461:26;;;;;;;;;;;;;;;;18121:37;;;;;;;;;;;;;;;;19705:108;;;;;;;;;;-1:-1:-1;19705:108:0;;;;;:::i;:::-;;:::i;16000:23::-;;;;;;;;;;-1:-1:-1;16000:23:0;;;;;;;;10149:58;;;;;;;;;;-1:-1:-1;10149:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;22241:187;;;;;;;;;;-1:-1:-1;22241:187:0;;;;;:::i;:::-;;:::i;16344:127::-;;;;;;;;;;;;;:::i;22688:105::-;;;;;;;;;;-1:-1:-1;22688:105:0;;;;;:::i;:::-;;:::i;6044:263::-;;;;;;;;;;-1:-1:-1;6044:263:0;;;;;:::i;:::-;;:::i;5617:148::-;;;;;;;;;;-1:-1:-1;5617:148:0;;;;;:::i;:::-;;:::i;6965:538::-;;;;;;;;;;-1:-1:-1;6965:538:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;11219:301::-;;;;;;;;;;;;;:::i;20416:303::-;;;;;;;;;;-1:-1:-1;20416:303:0;;;;;:::i;:::-;;:::i;17518:143::-;;;;;;;;;;;;;:::i;13222:1753::-;;;;;;;;;;;;;:::i;7698:405::-;;;;;;;;;;-1:-1:-1;7698:405:0;;;;;:::i;:::-;;:::i;495:42::-;;;;;;;;;;-1:-1:-1;495:42:0;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;495:42:0;;;19171:37;;;;;;;;;;;;;;;;21075:52;;;;;;;;;;-1:-1:-1;21075:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;10481:732;;;;;;;;;;-1:-1:-1;10481:732:0;;;;;:::i;:::-;;:::i;545:44::-;;;;;;;;;;-1:-1:-1;545:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;9002:105;;;;;;;;;;;;;:::i;19327:21::-;;;;;;;;;;-1:-1:-1;19327:21:0;;;;-1:-1:-1;;;;;19327:21:0;;;19292:28;;;;;;;;;;-1:-1:-1;19292:28:0;;;;-1:-1:-1;;;;;19292:28:0;;;11967:1247;;;;;;;;;;;;;:::i;19355:113::-;;;;;;;;;;-1:-1:-1;19355:113:0;;;;;:::i;:::-;;:::i;19508:95::-;;;;;;;;;;-1:-1:-1;19508:95:0;;;;;:::i;:::-;;:::i;17910:75::-;;;;;;;;;;-1:-1:-1;17910:75:0;;;;-1:-1:-1;;;;;17910:75:0;;;11808:124;;;;;;;;;;;;;:::i;8308:20::-;;;;;;;;;;-1:-1:-1;8308:20:0;;;;-1:-1:-1;;;;;8308:20:0;;;20750:255;;;;;;;;;;-1:-1:-1;20750:255:0;;;;;:::i;:::-;;:::i;266:20::-;;;;;;;;;;;;;:::i;21036:32::-;;;;;;;;;;;;;;;;21747:278;;;;;;:::i;:::-;;:::i;4699:148::-;;;;;;;;;;-1:-1:-1;4699:148:0;;;;;:::i;:::-;;:::i;18073:41::-;;;;;;;;;;;;;;;;9712:135;;;;;;;;;;;;;:::i;17992:74::-;;;;;;;;;;-1:-1:-1;17992:74:0;;;;-1:-1:-1;;;;;17992:74:0;;;18165:36;;;;;;;;;;;;;;;;11562:96;;;;;;;;;;-1:-1:-1;11629:21:0;11562:96;;22434:222;;;;;;;;;;-1:-1:-1;22434:222:0;;;;;:::i;:::-;;:::i;19932:102::-;;;;;;;;;;-1:-1:-1;19932:102:0;;;;;:::i;:::-;;:::i;6508:281::-;;;;;;;;;;-1:-1:-1;6508:281:0;;;;;:::i;:::-;;:::i;16916:136::-;;;;;;;;;;;;;:::i;19215:38::-;;;;;;;;;;;;;;;;21141:578;;;;;;:::i;:::-;;:::i;16573:33::-;;;;;;;;;;;;;;;;19133:31;;;;;;;;;;;;;;;;16025:30;;;;;;;;;;;;;;;;15366:136;;;;;;;;;;;;;:::i;15797:137::-;;;;;;;;;;;;;:::i;11664:138::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;653:68::-;;;;;;;;;;-1:-1:-1;653:68:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;8789:207;;;;;;;;;;-1:-1:-1;8789:207:0;;;;;:::i;:::-;;:::i;5810:228::-;;;;;;;;;;-1:-1:-1;5810:228:0;;;;;:::i;:::-;;:::i;19609:88::-;;;;;;;;;;-1:-1:-1;19609:88:0;;;;;:::i;:::-;;:::i;19819:107::-;;;;;;;;;;-1:-1:-1;19819:107:0;;;;;:::i;:::-;;:::i;17161:33::-;;;;;;;;;;;;;;;;17828;;;;;;;;;;;;;;;;6341:159;6410:4;-1:-1:-1;;;;;;;;;6435:26:0;;;;:56;;-1:-1:-1;;;;;;;;;;6465:26:0;;;6435:56;6427:65;6341:159;-1:-1:-1;;6341:159:0:o;22799:113::-;8503:5;;-1:-1:-1;;;;;8503:5:0;8512:10;8503:19;8495:64;;;;-1:-1:-1;;;8495:64:0;;;;;;;:::i;:::-;;;;;;;;;22878:26:::1;22899:4;22878:20;:26::i;:::-;22799:113:::0;:::o;246:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4341:352::-;4415:14;4432:17;;;:7;:17;;;;;;-1:-1:-1;;;;;4432:17:0;;;;4468:13;;;;;4460:69;;;;-1:-1:-1;;;4460:69:0;;22434:2:1;4460:69:0;;;22416:21:1;22473:2;22453:18;;;22446:30;22512:34;22492:18;;;22485:62;-1:-1:-1;;;22563:18:1;;;22556:41;22614:19;;4460:69:0;22232:407:1;4460:69:0;4548:10;-1:-1:-1;;;;;4548:20:0;;;;:60;;-1:-1:-1;;;;;;4572:24:0;;;;;;:16;:24;;;;;;;;4597:10;4572:36;;;;;;;;;;4548:60;4540:111;;;;-1:-1:-1;;;4540:111:0;;22027:2:1;4540:111:0;;;22009:21:1;22066:2;22046:18;;;22039:30;22105:34;22085:18;;;22078:62;-1:-1:-1;;;22156:18:1;;;22149:36;22202:19;;4540:111:0;21825:402:1;4540:111:0;4662:23;4671:3;4676:8;4662;:23::i;:::-;4404:289;4341:352;;:::o;19705:108::-;8503:5;;-1:-1:-1;;;;;8503:5:0;8512:10;8503:19;8495:64;;;;-1:-1:-1;;;8495:64:0;;;;;;;:::i;:::-;17275:21;:29;;-1:-1:-1;;17275:29:0;;;;;;;17306:18;:26;;;19705:108;;:::o;19779:31::-:1;19705:108:::0;;:::o;22241:187::-;22336:31;22356:5;22363:3;22336:19;:31::i;:::-;22378:42;22399:5;22406:3;22411:8;22378:20;:42::i;16344:127::-;16419:11;;16395:4;;16419:11;;:49;;;;;16453:15;16434;;:34;;16419:49;16412:56;;16344:127;:::o;22688:105::-;8503:5;;-1:-1:-1;;;;;8503:5:0;8512:10;8503:19;8495:64;;;;-1:-1:-1;;;8495:64:0;;;;;;;:::i;:::-;22763:22:::1;22780:4;22763:16;:22::i;6044:263::-:0;6182:9;6177:123;6201:9;:16;6197:1;:20;6177:123;;;6239:49;6256:5;6263:3;6268:9;6278:1;6268:12;;;;;;;;:::i;:::-;;;;;;;6282:5;6239:16;:49::i;:::-;6219:3;;;;:::i;:::-;;;;6177:123;;;;6044:263;;;;:::o;5617:148::-;5715:42;5732:5;5739:3;5744:8;5715:42;;;;;;;;;;;;:16;:42::i;6965:538::-;-1:-1:-1;;;;;7083:19:0;;7064:16;7083:19;;;:9;:19;;;;;;7035:16;;7083:19;-1:-1:-1;;;;;7140:24:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7140:24:0;-1:-1:-1;7223:11:0;;7113:51;;-1:-1:-1;7175:14:0;;;7245:226;7269:12;7265:1;:16;7245:226;;;7329:3;7307:10;;;:7;:10;;;;;;-1:-1:-1;;;;;7307:10:0;:26;:56;;;;-1:-1:-1;7337:7:0;7345:12;7356:1;7345:8;:12;:::i;:::-;7337:21;;;;;;;;:::i;:::-;;;;;;;7362:1;7337:26;7307:56;7303:81;;;7367:14;;;;:::i;:::-;;;;7303:81;7402:10;;;;:7;:10;;;;;;-1:-1:-1;;;;;7402:22:0;;;:10;;:22;7398:62;;;7446:1;7428:7;7436:6;7428:15;;;;;;;;:::i;:::-;;;;;;;;;;:19;7449:8;;;;:::i;:::-;;;;7398:62;7283:3;;;;:::i;:::-;;;;7245:226;;;-1:-1:-1;7488:7:0;;6965:538;-1:-1:-1;;;;;6965:538:0:o;11219:301::-;9631:24;;-1:-1:-1;;;;;9631:24:0;9617:10;:38;9609:91;;;;-1:-1:-1;;;9609:91:0;;;;;;;:::i;:::-;11318:27:::1;:34:::0;:39;11311:99:::1;;11374:27;:33;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;11374:33:0;;;;;-1:-1:-1;;;;;;11374:33:0::1;::::0;;;;;11311:99:::1;;;11427:24;:31:::0;:36;11420:93:::1;;11480:24;:30;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;11420:93;;;11219:301::o:0;20416:303::-;8503:5;;-1:-1:-1;;;;;8503:5:0;8512:10;8503:19;8495:64;;;;-1:-1:-1;;;8495:64:0;;;;;;;:::i;:::-;20542:8:::1;:15;20527:4;:11;:30;20519:80;;;::::0;-1:-1:-1;;;20519:80:0;;28830:2:1;20519:80:0::1;::::0;::::1;28812:21:1::0;28869:2;28849:18;;;28842:30;28908:34;28888:18;;;28881:62;-1:-1:-1;;;28959:18:1;;;28952:35;29004:19;;20519:80:0::1;28628:401:1::0;20519:80:0::1;20615:9;20610:102;20634:4;:11;20630:1;:15;20610:102;;;20668:31;20678:4;20683:1;20678:7;;;;;;;;:::i;:::-;;;;;;;20687:8;20696:1;20687:11;;;;;;;;:::i;:::-;;;;;;;20668:9;:31::i;:::-;20647:3:::0;::::1;::::0;::::1;:::i;:::-;;;;20610:102;;17518:143:::0;17596:21;;17572:4;;17596:21;;:62;;;;;17643:15;17621:18;;:37;;17589:69;;17518:143;:::o;13222:1753::-;8503:5;;13284:16;;-1:-1:-1;;;;;8503:5:0;8512:10;8503:19;8495:64;;;;-1:-1:-1;;;8495:64:0;;;;;;;:::i;:::-;13385:27:::1;:34:::0;:38;;;;:77:::1;;-1:-1:-1::0;13427:24:0::1;:31:::0;:35;;13385:77:::1;13377:121;;;::::0;-1:-1:-1;;;13377:121:0;;27275:2:1;13377:121:0::1;::::0;::::1;27257:21:1::0;27314:2;27294:18;;;27287:30;27353:33;27333:18;;;27326:61;27404:18;;13377:121:0::1;27073:355:1::0;13377:121:0::1;13593:24;:31:::0;13555:27:::1;:34:::0;:69:::1;13547:117;;;;-1:-1:-1::0;;;13547:117:0::1;;;;;;;:::i;:::-;13753:27;::::0;13791:130:::1;13815:24;:31:::0;13811:35;::::1;13791:130;;;13891:24;13916:1;13891:27;;;;;;;;:::i;:::-;;;;;;;;;13868:50;;;;;:::i;:::-;::::0;-1:-1:-1;13848:3:0;::::1;::::0;::::1;:::i;:::-;;;;13791:130;;;;13939:19;13962:4;13939:27;13931:78;;;;-1:-1:-1::0;;;13931:78:0::1;;;;;;;:::i;:::-;14293:27;:34:::0;14213:21:::1;::::0;14193:17:::1;::::0;14293:38:::1;::::0;14330:1:::1;14293:38;:::i;:::-;-1:-1:-1::0;;;;;14278:54:0::1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;14278:54:0::1;;14246:86;;14413:9;14408:162;14432:27;:34:::0;14428:38;::::1;14408:162;;;14552:4;14521:24;14546:1;14521:27;;;;;;;;:::i;:::-;;;;;;;;;14509:9;:39;;;;:::i;:::-;14508:48;;;;:::i;:::-;14488:12;14501:1;14488:15;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;:70;14468:3;::::1;::::0;::::1;:::i;:::-;;;;14408:162;;;-1:-1:-1::0;14684:27:0::1;:34:::0;14671:48;;14722:9;;14671:12;;:48;::::1;;;;;:::i;:::-;;;;;;:60;;;::::0;::::1;14747:9;14742:154;14766:27;:34:::0;14762:38;::::1;14742:154;;;14878:12;14891:1;14878:15;;;;;;;;:::i;:::-;;;;;;;14822:12;14835:27;:34;;;;14872:1;14835:38;;;;:::i;:::-;14822:52;;;;;;;;:::i;:::-;;;;;;:71;;;;;;;:::i;:::-;::::0;;-1:-1:-1;14802:3:0;::::1;::::0;::::1;:::i;:::-;;;;14742:154;;;-1:-1:-1::0;14955:12:0;-1:-1:-1;;;13222:1753:0;:::o;7698:405::-;7828:26;;-1:-1:-1;;11737:2:1;11733:15;;;11729:53;7828:26:0;;;11717:66:1;7785:4:0;;;;11799:12:1;;7828:26:0;;;;;;;;;;;;7818:37;;;;;;7802:53;;7871:9;7866:192;7890:6;:13;7886:1;:17;7866:192;;;7941:6;7948:1;7941:9;;;;;;;;:::i;:::-;;;;;;;7933:5;:17;:113;;8028:6;8035:1;8028:9;;;;;;;;:::i;:::-;;;;;;;8039:5;8011:34;;;;;;;;11979:19:1;;;12023:2;12014:12;;12007:28;12060:2;12051:12;;11822:247;8011:34:0;;;;;;;;;;;;;8001:45;;;;;;7933:113;;;7980:5;7987:6;7994:1;7987:9;;;;;;;;:::i;:::-;;;;;;;7963:34;;;;;;;;11979:19:1;;;12023:2;12014:12;;12007:28;12060:2;12051:12;;11822:247;7963:34:0;;;;;;;;;;;;;7953:45;;;;;;7933:113;7925:121;-1:-1:-1;7905:3:0;;;;:::i;:::-;;;;7866:192;;;-1:-1:-1;8084:11:0;;8075:20;;7698:405;-1:-1:-1;;;7698:405:0:o;10481:732::-;9631:24;;-1:-1:-1;;;;;9631:24:0;9617:10;:38;9609:91;;;;-1:-1:-1;;;9609:91:0;;;;;;;:::i;:::-;10640:27:::1;:34:::0;:39;:79;::::1;;;-1:-1:-1::0;10683:24:0::1;:31:::0;:36;10640:79:::1;10632:150;;;::::0;-1:-1:-1;;;10632:150:0;;20897:2:1;10632:150:0::1;::::0;::::1;20879:21:1::0;20936:2;20916:18;;;20909:30;20975:34;20955:18;;;20948:62;21046:28;21026:18;;;21019:56;21092:19;;10632:150:0::1;20695:422:1::0;10632:150:0::1;10822:7;:14;10801:10;:17;:35;10793:83;;;::::0;-1:-1:-1;;;10793:83:0;;19326:2:1;10793:83:0::1;::::0;::::1;19308:21:1::0;19365:2;19345:18;;;19338:30;19404:34;19384:18;;;19377:62;-1:-1:-1;;;19455:18:1;;;19448:33;19498:19;;10793:83:0::1;19124:399:1::0;10793:83:0::1;10887:20;::::0;10918:219:::1;10942:10;:17;10938:1;:21;10918:219;;;10997:7;11005:1;10997:10;;;;;;;;:::i;:::-;;;;;;;10981:26;;;;;:::i;:::-;;;11022:27;11055:10;11066:1;11055:13;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;11022:47;;::::1;::::0;::::1;::::0;;-1:-1:-1;11022:47:0;;;;;;;::::1;::::0;;-1:-1:-1;;;;;;11022:47:0::1;-1:-1:-1::0;;;;;11022:47:0;;::::1;::::0;;;::::1;::::0;;11114:10;;11084:24:::1;::::0;11114:10;;11122:1;;11114:10;::::1;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;11084:41;;::::1;::::0;::::1;::::0;;-1:-1:-1;11084:41:0;;;;;;;::::1;::::0;10961:3;::::1;::::0;::::1;:::i;:::-;;;;10918:219;;;;11155:12;11171:4;11155:20;11147:58;;;::::0;-1:-1:-1;;;11147:58:0;;30073:2:1;11147:58:0::1;::::0;::::1;30055:21:1::0;30112:2;30092:18;;;30085:30;30151:27;30131:18;;;30124:55;30196:18;;11147:58:0::1;29871:349:1::0;9002:105:0;8503:5;;-1:-1:-1;;;;;8503:5:0;8512:10;8503:19;8495:64;;;;-1:-1:-1;;;8495:64:0;;;;;;;:::i;:::-;9067:32:::1;9094:3;9067:18;:32::i;11967:1247::-:0;8503:5;;-1:-1:-1;;;;;8503:5:0;8512:10;8503:19;8495:64;;;;-1:-1:-1;;;8495:64:0;;;;;;;:::i;:::-;12092:27:::1;:34:::0;:38;;;;:77:::1;;-1:-1:-1::0;12134:24:0::1;:31:::0;:35;;12092:77:::1;12084:121;;;::::0;-1:-1:-1;;;12084:121:0;;27275:2:1;12084:121:0::1;::::0;::::1;27257:21:1::0;27314:2;27294:18;;;27287:30;27353:33;27333:18;;;27326:61;27404:18;;12084:121:0::1;27073:355:1::0;12084:121:0::1;12300:24;:31:::0;12262:27:::1;:34:::0;:69:::1;12254:117;;;;-1:-1:-1::0;;;12254:117:0::1;;;;;;;:::i;:::-;12460:27;::::0;12498:130:::1;12522:24;:31:::0;12518:35;::::1;12498:130;;;12598:24;12623:1;12598:27;;;;;;;;:::i;:::-;;;;;;;;;12575:50;;;;;:::i;:::-;::::0;-1:-1:-1;12555:3:0;::::1;::::0;::::1;:::i;:::-;;;;12498:130;;;;12646:19;12669:4;12646:27;12638:78;;;;-1:-1:-1::0;;;12638:78:0::1;;;;;;;:::i;:::-;12884:21;12864:17;12968:239;12992:27;:34:::0;12988:38;::::1;12968:239;;;13048:22;13118:4;13087:24;13112:1;13087:27;;;;;;;;:::i;:::-;;;;;;;;;13075:9;:39;;;;:::i;:::-;13074:48;;;;:::i;:::-;13048:75;;13138:57;13148:27;13176:1;13148:30;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;13148:30:0::1;13180:14:::0;13138:9:::1;:57::i;:::-;-1:-1:-1::0;13028:3:0;::::1;::::0;::::1;:::i;:::-;;;;12968:239;;19355:113:::0;8503:5;;-1:-1:-1;;;;;8503:5:0;8512:10;8503:19;8495:64;;;;-1:-1:-1;;;8495:64:0;;;;;;;:::i;:::-;19413:13:::1;:24:::0;;-1:-1:-1;;;;;19413:24:0;;::::1;-1:-1:-1::0;;;;;;19413:24:0;;::::1;::::0;::::1;::::0;;;19439:6:::1;:26:::0;;;;::::1;;::::0;;19355:113::o;19508:95::-;8503:5;;-1:-1:-1;;;;;8503:5:0;8512:10;8503:19;8495:64;;;;-1:-1:-1;;;8495:64:0;;;;;;;:::i;:::-;19573:27:::1;19588:11;7659::::0;:25;7586:106;11808:124;11864:16;11900:24;11893:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11808:124;:::o;20750:255::-;17390:21;;;;:62;;;;;17437:15;17415:18;;:37;;17390:62;17382:123;;;;-1:-1:-1;;;17382:123:0;;23264:2:1;17382:123:0;;;23246:21:1;23303:2;23283:18;;;23276:30;23342:34;23322:18;;;23315:62;-1:-1:-1;;;23393:18:1;;;23386:32;23435:19;;17382:123:0;23062:398:1;17382:123:0;20860:7:::1;20839:17;;:28;;20831:92;;;::::0;-1:-1:-1;;;20831:92:0;;27995:2:1;20831:92:0::1;::::0;::::1;27977:21:1::0;28034:2;28014:18;;;28007:30;28073:34;28053:18;;;28046:62;-1:-1:-1;;;28124:18:1;;;28117:49;28183:19;;20831:92:0::1;27793:415:1::0;20831:92:0::1;20934:23;20949:7;20934:14;:23::i;:::-;20968:29;20978:9;20989:7;20968:9;:29::i;266:20::-:0;;;;;;;:::i;21747:278::-;8215:10;8229:9;8215:23;8207:55;;;;-1:-1:-1;;;8207:55:0;;26506:2:1;8207:55:0;;;26488:21:1;26545:2;26525:18;;;26518:30;-1:-1:-1;;;26564:18:1;;;26557:49;26623:18;;8207:55:0;26304:343:1;8207:55:0;16233:11:::1;::::0;::::1;;:49:::0;::::1;;;;16267:15;16248;;:34;;16233:49;16225:107;;;::::0;-1:-1:-1;;;16225:107:0;;27635:2:1;16225:107:0::1;::::0;::::1;27617:21:1::0;27674:2;27654:18;;;27647:30;27713:33;27693:18;;;27686:61;27764:18;;16225:107:0::1;27433:355:1::0;16225:107:0::1;21866:7:::2;21843:19;;:30;;21835:66;;;::::0;-1:-1:-1;;;21835:66:0;;17811:2:1;21835:66:0::2;::::0;::::2;17793:21:1::0;17850:2;17830:18;;;17823:30;17889:25;17869:18;;;17862:53;17932:18;;21835:66:0::2;17609:347:1::0;21835:66:0::2;21945:7;21933:9;;:19;;;;:::i;:::-;21920:9;:32;21912:64;;;::::0;-1:-1:-1;;;21912:64:0;;21324:2:1;21912:64:0::2;::::0;::::2;21306:21:1::0;21363:2;21343:18;;;21336:30;-1:-1:-1;;;21382:18:1;;;21375:49;21441:18;;21912:64:0::2;21122:343:1::0;21912:64:0::2;21987:30;21997:10;22009:7;21987:9;:30::i;4699:148::-:0;4787:52;4806:10;4818:9;4829;4787:18;:52::i;9712:135::-;9631:24;;-1:-1:-1;;;;;9631:24:0;9617:10;:38;9609:91;;;;-1:-1:-1;;;9609:91:0;;;;;;;:::i;:::-;9805:24:::1;:39:::0;;-1:-1:-1;;;;;;9805:39:0::1;::::0;;9712:135::o;22434:222::-;22553:31;22573:5;22580:3;22553:19;:31::i;:::-;22595:53;22620:5;22627:3;22632:8;22642:5;22595:24;:53::i;:::-;22434:222;;;;:::o;19932:102::-;8503:5;;-1:-1:-1;;;;;8503:5:0;8512:10;8503:19;8495:64;;;;-1:-1:-1;;;8495:64:0;;;;;;;:::i;:::-;16133:11;:19;;-1:-1:-1;;16133:19:0;;;;;;;16154:15;:23;;;19705:108;;:::o;6508:281::-;6636:3;6607:17;;;:7;:17;;;;;;6573:13;;-1:-1:-1;;;;;6607:17:0;6599:87;;;;-1:-1:-1;;;6599:87:0;;30860:2:1;6599:87:0;;;30842:21:1;30899:2;30879:18;;;30872:30;30938:34;30918:18;;;30911:62;-1:-1:-1;;;30989:18:1;;;30982:39;31038:19;;6599:87:0;30658:405:1;6599:87:0;6728:12;6742:19;6752:8;6742:9;:19::i;:::-;6763:16;6711:69;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;6697:84;;6508:281;;;:::o;16916:136::-;16994:14;;16970:4;;16994:14;;:55;;;;;17034:15;17012:18;;:37;;16987:62;;16916:136;:::o;21141:578::-;8215:10;8229:9;8215:23;8207:55;;;;-1:-1:-1;;;8207:55:0;;26506:2:1;8207:55:0;;;26488:21:1;26545:2;26525:18;;;26518:30;-1:-1:-1;;;26564:18:1;;;26557:49;26623:18;;8207:55:0;26304:343:1;8207:55:0;16795:14:::1;::::0;::::1;;:55:::0;::::1;;;;16835:15;16813:18;;:37;;16795:55;16787:116;;;::::0;-1:-1:-1;;;16787:116:0;;23667:2:1;16787:116:0::1;::::0;::::1;23649:21:1::0;23706:2;23686:18;;;23679:30;23745:34;23725:18;;;23718:62;-1:-1:-1;;;23796:18:1;;;23789:32;23838:19;;16787:116:0::1;23465:398:1::0;16787:116:0::1;21274:33:::2;21288:10;21300:6;21274:13;:33::i;:::-;21266:70;;;::::0;-1:-1:-1;;;21266:70:0;;19730:2:1;21266:70:0::2;::::0;::::2;19712:21:1::0;19769:2;19749:18;;;19742:30;19808:26;19788:18;;;19781:54;19852:18;;21266:70:0::2;19528:348:1::0;21266:70:0::2;21372:7;21355:13;;:24;;21347:74;;;::::0;-1:-1:-1;;;21347:74:0;;20491:2:1;21347:74:0::2;::::0;::::2;20473:21:1::0;20530:2;20510:18;;;20503:30;20569:34;20549:18;;;20542:62;-1:-1:-1;;;20620:18:1;;;20613:35;20665:19;;21347:74:0::2;20289:401:1::0;21347:74:0::2;21475:10;21457:29;::::0;;;:17:::2;:29;::::0;;;;;:39:::2;::::0;21489:7;;21457:39:::2;:::i;:::-;21440:13;;:56;;21432:108;;;::::0;-1:-1:-1;;;21432:108:0;;20083:2:1;21432:108:0::2;::::0;::::2;20065:21:1::0;20122:2;20102:18;;;20095:30;20161:34;20141:18;;;20134:62;-1:-1:-1;;;20212:18:1;;;20205:37;20259:19;;21432:108:0::2;19881:403:1::0;21432:108:0::2;21584:7;21572:9;;:19;;;;:::i;:::-;21559:9;:32;21551:64;;;::::0;-1:-1:-1;;;21551:64:0;;21324:2:1;21551:64:0::2;::::0;::::2;21306:21:1::0;21363:2;21343:18;;;21336:30;-1:-1:-1;;;21382:18:1;;;21375:49;21441:18;;21551:64:0::2;21122:343:1::0;21551:64:0::2;21646:10;21628:29;::::0;;;:17:::2;:29;::::0;;;;:40;;21661:7;;21628:29;:40:::2;::::0;21661:7;;21628:40:::2;:::i;:::-;::::0;;;-1:-1:-1;21681:30:0::2;::::0;-1:-1:-1;21691:10:0::2;21703:7:::0;21681:9:::2;:30::i;15366:136::-:0;15050:19;;15080:197;15104:27;:34;15100:38;;15080:197;;;15178:27;15206:1;15178:30;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;15178:30:0;15164:10;:44;15160:106;;;15246:4;15229:21;;15160:106;15140:3;;;;:::i;:::-;;;;15080:197;;;;15295:14;15287:53;;;;-1:-1:-1;;;15287:53:0;;21672:2:1;15287:53:0;;;21654:21:1;21711:2;21691:18;;;21684:30;21750:28;21730:18;;;21723:56;21796:18;;15287:53:0;21470:350:1;15287:53:0;-1:-1:-1;15476:10:0::1;15449:38;::::0;;;:26:::1;:38;::::0;;;;:45;;-1:-1:-1;;15449:45:0::1;15490:4;15449:45;::::0;;15366:136::o;15797:137::-;8503:5;;-1:-1:-1;;;;;8503:5:0;8512:10;8503:19;8495:64;;;;-1:-1:-1;;;8495:64:0;;;;;;;:::i;:::-;15577:9:::1;15572:200;15596:27;:34:::0;15592:38;::::1;15572:200;;;15660:26;:58;15687:27;15715:1;15687:30;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;::::1;::::0;-1:-1:-1;;;;;15687:30:0::1;15660:58:::0;;;::::1;::::0;;;;;;;;;::::1;;15652:108;;;::::0;-1:-1:-1;;;15652:108:0;;24492:2:1;15652:108:0::1;::::0;::::1;24474:21:1::0;24531:2;24511:18;;;24504:30;24570:34;24550:18;;;24543:62;-1:-1:-1;;;24621:18:1;;;24614:35;24666:19;;15652:108:0::1;24290:401:1::0;15652:108:0::1;15632:3:::0;::::1;::::0;::::1;:::i;:::-;;;;15572:200;;;;15873:53:::2;15891:10;15904:21;15873:9;:53::i;11664:138::-:0;11723:24;11767:27;11760:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11760:34:0;;;;;;;;;;;;;;;;;;;;;;11664:138;:::o;8789:207::-;8503:5;;-1:-1:-1;;;;;8503:5:0;8512:10;8503:19;8495:64;;;;-1:-1:-1;;;8495:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8879:25:0;::::1;8871:77;;;::::0;-1:-1:-1;;;8871:77:0;;17403:2:1;8871:77:0::1;::::0;::::1;17385:21:1::0;17442:2;17422:18;;;17415:30;17481:34;17461:18;;;17454:62;-1:-1:-1;;;17532:18:1;;;17525:37;17579:19;;8871:77:0::1;17201:403:1::0;8871:77:0::1;8959:29;8978:9;8959:18;:29::i;5810:228::-:0;5924:9;5919:112;5943:9;:16;5939:1;:20;5919:112;;;5981:38;5994:5;6001:3;6006:9;6016:1;6006:12;;;;;;;;:::i;:::-;;;;;;;5981;:38::i;:::-;5961:3;;;;:::i;:::-;;;;5919:112;;19609:88;8503:5;;-1:-1:-1;;;;;8503:5:0;8512:10;8503:19;8495:64;;;;-1:-1:-1;;;8495:64:0;;;;;;;:::i;:::-;19672:9:::1;:22:::0;19609:88::o;19819:107::-;8503:5;;-1:-1:-1;;;;;8503:5:0;8512:10;8503:19;8495:64;;;;-1:-1:-1;;;8495:64:0;;;;;;;:::i;:::-;16687:14;:22;;-1:-1:-1;;16687:22:0;;;;;;;16711:18;:26;;;19705:108;;:::o;3038:109::-;3116:23;;;;:16;;:23;;;;;:::i;2339:234::-;2420:21;;;;:11;:21;;;;;;-1:-1:-1;;;;;2420:28:0;;;:21;;:28;2416:150;;2465:21;;;;:11;:21;;;;;;;;:27;;-1:-1:-1;;;;;;2465:27:0;-1:-1:-1;;;;;2465:27:0;;;;;;;;;2521:7;:17;;;;;;;2512:42;;2465:21;;2521:17;;;;;2512:42;;;2339:234;;:::o;22087:148::-;22164:6;;:26;;-1:-1:-1;;;22164:26:0;;-1:-1:-1;;;;;13188:32:1;;;22164:26:0;;;13170:51:1;22164:6:0;;;;:19;;13143:18:1;;22164:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;22202:6:0;;:24;;-1:-1:-1;;;22202:24:0;;-1:-1:-1;;;;;13188:32:1;;;22202:24:0;;;13170:51:1;22202:6:0;;;;-1:-1:-1;22202:19:0;;-1:-1:-1;13143:18:1;;22202:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22087:148;;:::o;4853:248::-;4955:40;4974:10;4986:8;4955:18;:40::i;:::-;4947:104;;;;-1:-1:-1;;;4947:104:0;;24898:2:1;4947:104:0;;;24880:21:1;24937:2;24917:18;;;24910:30;24976:34;24956:18;;;24949:62;-1:-1:-1;;;25027:18:1;;;25020:49;25086:19;;4947:104:0;24696:415:1;4947:104:0;5062:31;5072:5;5079:3;5084:8;5062:9;:31::i;2931:101::-;3005:19;;;;:12;;:19;;;;;:::i;20073:316::-;20177:7;20163:11;;:21;;;;:::i;:::-;20150:9;;:34;;20142:82;;;;-1:-1:-1;;;20142:82:0;;18163:2:1;20142:82:0;;;18145:21:1;18202:2;18182:18;;;18175:30;18241:34;18221:18;;;18214:62;-1:-1:-1;;;18292:18:1;;;18285:33;18335:19;;20142:82:0;17961:399:1;20142:82:0;20240:9;20235:112;20259:7;20255:1;:11;20235:112;;;20288:29;20294:3;20300:11;;20314:1;20300:15;;;;:::i;:::-;20288:5;:29::i;:::-;20268:3;;;;:::i;:::-;;;;20235:112;;;-1:-1:-1;20357:6:0;;:24;;-1:-1:-1;;;20357:24:0;;-1:-1:-1;;;;;13188:32:1;;;20357:24:0;;;13170:51:1;20357:6:0;;;;:19;;13143:18:1;;20357:24:0;13024:203:1;8585:198:0;8680:5;;;-1:-1:-1;;;;;8696:17:0;;;-1:-1:-1;;;;;;8696:17:0;;;;;;;8729:42;;8680:5;;;8696:17;8680:5;;8729:42;;8660:17;;8729:42;8649:134;8585:198;:::o;10247:197::-;10330:12;10356:8;-1:-1:-1;;;;;10348:22:0;10378:7;10348:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10329:61;;;10409:7;10401:35;;;;-1:-1:-1;;;10401:35:0;;18567:2:1;10401:35:0;;;18549:21:1;18606:2;18586:18;;;18579:30;-1:-1:-1;;;18625:18:1;;;18618:45;18680:18;;10401:35:0;18365:339:1;18274:532:0;18357:23;;-1:-1:-1;;;;;18357:23:0;18343:10;:37;18335:102;;;;-1:-1:-1;;;18335:102:0;;25679:2:1;18335:102:0;;;25661:21:1;25718:2;25698:18;;;25691:30;25757:34;25737:18;;;25730:62;-1:-1:-1;;;25808:18:1;;;25801:50;25868:19;;18335:102:0;25477:416:1;18335:102:0;18494:7;18477:14;;:24;;;;:::i;:::-;18456:17;;:45;;18448:122;;;;;-1:-1:-1;;;18448:122:0;;30427:2:1;18448:122:0;;;30409:21:1;30446:18;;;30439:30;;;;30505:34;30485:18;;;30478:62;30576:34;30556:18;;;30549:62;30628:19;;18448:122:0;30225:428:1;18448:122:0;18627:9;18610:27;;;;:16;:27;;;;;;:37;;18640:7;;18610:37;:::i;:::-;18589:17;;:58;;18581:130;;;;-1:-1:-1;;;18581:130:0;;16975:2:1;18581:130:0;;;16957:21:1;17014:2;16994:18;;;16987:30;17053:34;17033:18;;;17026:62;17124:29;17104:18;;;17097:57;17171:19;;18581:130:0;16773:423:1;18581:130:0;18741:9;18724:27;;;;:16;:27;;;;;:38;;18755:7;;18724:27;:38;;18755:7;;18724:38;:::i;:::-;;;;;;;;18791:7;18773:14;;:25;;;;;;;:::i;:::-;;;;-1:-1:-1;;;18274:532:0:o;2579:326::-;2704:9;-1:-1:-1;;;;;2694:19:0;:6;-1:-1:-1;;;;;2694:19:0;;;2686:93;;;;-1:-1:-1;;;2686:93:0;;29643:2:1;2686:93:0;;;29625:21:1;29682:2;29662:18;;;29655:30;29721:34;29701:18;;;29694:62;29792:31;29772:18;;;29765:59;29841:19;;2686:93:0;29441:425:1;2686:93:0;-1:-1:-1;;;;;2790:24:0;;;;;;;:16;:24;;;;;;;;:35;;;;;;;;;;;;;:47;;-1:-1:-1;;2790:47:0;;;;;;;;;;2853:44;;15460:41:1;;;2853:44:0;;15433:18:1;2853:44:0;;;;;;;2579:326;;;:::o;5107:504::-;5225:31;5235:5;5242:3;5247:8;5225:9;:31::i;:::-;-1:-1:-1;;;;;5271:15:0;;;:20;5267:337;;5311:22;5337:3;-1:-1:-1;;;;;5337:14:0;5375:10;5387;5399:5;5406:8;5416:5;5352:70;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5352:70:0;;;;;;;;;;;5337:86;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5308:115;;;5438:16;5468:9;5457:31;;;;;;;;;;;;:::i;:::-;5438:50;-1:-1:-1;;;;;;;;;;5511:23:0;;;5503:89;;;;-1:-1:-1;;;5503:89:0;;24070:2:1;5503:89:0;;;24052:21:1;24109:2;24089:18;;;24082:30;24148:34;24128:18;;;24121:62;-1:-1:-1;;;24199:18:1;;;24192:51;24260:19;;5503:89:0;23868:417:1;3217:536:0;3275:13;3305:11;3301:32;;-1:-1:-1;;3320:10:0;;;;;;;;;;;;-1:-1:-1;;;3320:10:0;;;;;3217:536::o;3301:32::-;3362:6;3343:16;3396:52;3403:13;;3396:52;;3420:9;;;;:::i;:::-;;-1:-1:-1;3431:14:0;;-1:-1:-1;3443:2:0;3431:14;;:::i;:::-;;;3396:52;;;3482:20;3515:7;-1:-1:-1;;;;;3505:18:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3505:18:0;;3482:41;;3534:110;3541:11;;3534:110;;3556:9;;;;:::i;:::-;;-1:-1:-1;3612:11:0;;-1:-1:-1;3621:2:0;3612:6;:11;:::i;:::-;3599:26;;:2;:26;:::i;:::-;3586:41;;3567:7;3575;3567:16;;;;;;;;:::i;:::-;;;;:60;-1:-1:-1;;;;;3567:60:0;;;;;;;;-1:-1:-1;3629:12:0;3639:2;3629:12;;:::i;:::-;;;3534:110;;;3694:7;3217:536;-1:-1:-1;;;;3217:536:0:o;3786:376::-;3881:4;3906:17;;;:7;:17;;;;;;-1:-1:-1;;;;;3906:17:0;3898:98;;;;-1:-1:-1;;;3898:98:0;;26854:2:1;3898:98:0;;;26836:21:1;26893:2;26873:18;;;26866:30;26932:34;26912:18;;;26905:62;-1:-1:-1;;;26983:18:1;;;26976:50;27043:19;;3898:98:0;26652:416:1;3898:98:0;4007:14;4024:17;;;:7;:17;;;;;;-1:-1:-1;;;;;4024:17:0;;;;4060:18;;;;;:55;;-1:-1:-1;4094:21:0;;;;:11;:21;;;;;;-1:-1:-1;;;;;4082:33:0;;;4094:21;;4082:33;4060:55;:93;;;-1:-1:-1;;;;;;4119:24:0;;;;;;;:16;:24;;;;;;;;:34;;;;;;;;;;;;4052:102;3786:376;-1:-1:-1;;;;3786:376:0:o;1644:671::-;1754:17;;;;:7;:17;;;;;;-1:-1:-1;;;;;1745:26:0;;;1754:17;;1745:26;1737:88;;;;-1:-1:-1;;;1737:88:0;;22846:2:1;1737:88:0;;;22828:21:1;22885:2;22865:18;;;22858:30;22924:34;22904:18;;;22897:62;-1:-1:-1;;;22975:18:1;;;22968:47;23032:19;;1737:88:0;22644:413:1;1737:88:0;-1:-1:-1;;;;;1844:19:0;;1836:78;;;;-1:-1:-1;;;1836:78:0;;18911:2:1;1836:78:0;;;18893:21:1;18950:2;18930:18;;;18923:30;18989:34;18969:18;;;18962:62;-1:-1:-1;;;19040:18:1;;;19033:44;19094:19;;1836:78:0;18709:410:1;1836:78:0;2069:3;2036:21;;;:11;:21;;;;;;-1:-1:-1;;;;;2036:21:0;:37;2032:104;;2091:32;2108:3;2114:8;2091;:32::i;:::-;2149:17;;;;:7;:17;;;;;;;;:23;;-1:-1:-1;;;;;;2149:23:0;-1:-1:-1;;;;;2149:23:0;;;;;;;;;;2184:16;;;;:9;:16;;;;;:18;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;2213:14:0;;;;;;:9;:14;;;;;:16;;;;;;:::i;:::-;;;;;;2298:8;2293:3;-1:-1:-1;;;;;2277:30:0;2286:5;-1:-1:-1;;;;;2277:30:0;;;;;;;;;;;1644:671;;;:::o;1125:494::-;-1:-1:-1;;;;;1207:19:0;;1199:69;;;;-1:-1:-1;;;1199:69:0;;26100:2:1;1199:69:0;;;26082:21:1;26139:2;26119:18;;;26112:30;26178:34;26158:18;;;26151:62;-1:-1:-1;;;26229:18:1;;;26222:35;26274:19;;1199:69:0;25898:401:1;1199:69:0;1316:3;1287:17;;;:7;:17;;;;;;-1:-1:-1;;;;;1287:17:0;:33;1279:92;;;;-1:-1:-1;;;1279:92:0;;28415:2:1;1279:92:0;;;28397:21:1;28454:2;28434:18;;;28427:30;28493:34;28473:18;;;28466:62;-1:-1:-1;;;28544:18:1;;;28537:44;28598:19;;1279:92:0;28213:410:1;1279:92:0;1416:17;;;;:7;:17;;;;;;;;:23;;-1:-1:-1;;;;;;1416:23:0;-1:-1:-1;;;;;1416:23:0;;;;;;;;1450:14;;:9;:14;;;;;:16;;;;;;:::i;:::-;;;;-1:-1:-1;;1477:11:0;:13;;;:11;:13;;;:::i;:::-;;;;-1:-1:-1;;1539:37:0;;1567:8;;-1:-1:-1;;;;;1539:37:0;;;1556:3;;1539:37;;1556:3;;1539:37;1597:3;-1:-1:-1;;;;;1592:19:0;;1602:8;1592:19;;;;31214:25:1;;31202:2;31187:18;;31068:177;1592:19:0;;;;;;;;1125:494;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:406:1;78:5;-1:-1:-1;;;;;104:6:1;101:30;98:56;;;134:18;;:::i;:::-;172:57;217:2;196:15;;-1:-1:-1;;192:29:1;223:4;188:40;172:57;:::i;:::-;163:66;;252:6;245:5;238:21;292:3;283:6;278:3;274:16;271:25;268:45;;;309:1;306;299:12;268:45;358:6;353:3;346:4;339:5;335:16;322:43;412:1;405:4;396:6;389:5;385:18;381:29;374:40;14:406;;;;;:::o;425:673::-;479:5;532:3;525:4;517:6;513:17;509:27;499:55;;550:1;547;540:12;499:55;586:6;573:20;612:4;636:60;652:43;692:2;652:43;:::i;:::-;636:60;:::i;:::-;718:3;742:2;737:3;730:15;770:2;765:3;761:12;754:19;;805:2;797:6;793:15;857:3;852:2;846;843:1;839:10;831:6;827:23;823:32;820:41;817:61;;;874:1;871;864:12;817:61;896:1;906:163;920:2;917:1;914:9;906:163;;;977:17;;965:30;;1015:12;;;;1047;;;;938:1;931:9;906:163;;;-1:-1:-1;1087:5:1;;425:673;-1:-1:-1;;;;;;;425:673:1:o;1103:160::-;1168:20;;1224:13;;1217:21;1207:32;;1197:60;;1253:1;1250;1243:12;1197:60;1103:160;;;:::o;1268:220::-;1310:5;1363:3;1356:4;1348:6;1344:17;1340:27;1330:55;;1381:1;1378;1371:12;1330:55;1403:79;1478:3;1469:6;1456:20;1449:4;1441:6;1437:17;1403:79;:::i;:::-;1394:88;1268:220;-1:-1:-1;;;1268:220:1:o;1493:247::-;1552:6;1605:2;1593:9;1584:7;1580:23;1576:32;1573:52;;;1621:1;1618;1611:12;1573:52;1660:9;1647:23;1679:31;1704:5;1679:31;:::i;1745:388::-;1813:6;1821;1874:2;1862:9;1853:7;1849:23;1845:32;1842:52;;;1890:1;1887;1880:12;1842:52;1929:9;1916:23;1948:31;1973:5;1948:31;:::i;:::-;1998:5;-1:-1:-1;2055:2:1;2040:18;;2027:32;2068:33;2027:32;2068:33;:::i;:::-;2120:7;2110:17;;;1745:388;;;;;:::o;2138:624::-;2240:6;2248;2256;2309:2;2297:9;2288:7;2284:23;2280:32;2277:52;;;2325:1;2322;2315:12;2277:52;2364:9;2351:23;2383:31;2408:5;2383:31;:::i;:::-;2433:5;-1:-1:-1;2490:2:1;2475:18;;2462:32;2503:33;2462:32;2503:33;:::i;:::-;2555:7;-1:-1:-1;2613:2:1;2598:18;;2585:32;-1:-1:-1;;;;;2629:30:1;;2626:50;;;2672:1;2669;2662:12;2626:50;2695:61;2748:7;2739:6;2728:9;2724:22;2695:61;:::i;:::-;2685:71;;;2138:624;;;;;:::o;2767:844::-;2887:6;2895;2903;2911;2964:3;2952:9;2943:7;2939:23;2935:33;2932:53;;;2981:1;2978;2971:12;2932:53;3020:9;3007:23;3039:31;3064:5;3039:31;:::i;:::-;3089:5;-1:-1:-1;3146:2:1;3131:18;;3118:32;3159:33;3118:32;3159:33;:::i;:::-;3211:7;-1:-1:-1;3269:2:1;3254:18;;3241:32;-1:-1:-1;;;;;3322:14:1;;;3319:34;;;3349:1;3346;3339:12;3319:34;3372:61;3425:7;3416:6;3405:9;3401:22;3372:61;:::i;:::-;3362:71;;3486:2;3475:9;3471:18;3458:32;3442:48;;3515:2;3505:8;3502:16;3499:36;;;3531:1;3528;3521:12;3499:36;;3554:51;3597:7;3586:8;3575:9;3571:24;3554:51;:::i;:::-;3544:61;;;2767:844;;;;;;;:::o;3616:456::-;3693:6;3701;3709;3762:2;3750:9;3741:7;3737:23;3733:32;3730:52;;;3778:1;3775;3768:12;3730:52;3817:9;3804:23;3836:31;3861:5;3836:31;:::i;:::-;3886:5;-1:-1:-1;3943:2:1;3928:18;;3915:32;3956:33;3915:32;3956:33;:::i;:::-;3616:456;;4008:7;;-1:-1:-1;;;4062:2:1;4047:18;;;;4034:32;;3616:456::o;4077:665::-;4172:6;4180;4188;4196;4249:3;4237:9;4228:7;4224:23;4220:33;4217:53;;;4266:1;4263;4256:12;4217:53;4305:9;4292:23;4324:31;4349:5;4324:31;:::i;:::-;4374:5;-1:-1:-1;4431:2:1;4416:18;;4403:32;4444:33;4403:32;4444:33;:::i;:::-;4496:7;-1:-1:-1;4550:2:1;4535:18;;4522:32;;-1:-1:-1;4605:2:1;4590:18;;4577:32;-1:-1:-1;;;;;4621:30:1;;4618:50;;;4664:1;4661;4654:12;4618:50;4687:49;4728:7;4719:6;4708:9;4704:22;4687:49;:::i;4747:483::-;4840:6;4848;4901:2;4889:9;4880:7;4876:23;4872:32;4869:52;;;4917:1;4914;4907:12;4869:52;4956:9;4943:23;4975:31;5000:5;4975:31;:::i;:::-;5025:5;-1:-1:-1;5081:2:1;5066:18;;5053:32;-1:-1:-1;;;;;5097:30:1;;5094:50;;;5140:1;5137;5130:12;5094:50;5163:61;5216:7;5207:6;5196:9;5192:22;5163:61;:::i;:::-;5153:71;;;4747:483;;;;;:::o;5235:315::-;5300:6;5308;5361:2;5349:9;5340:7;5336:23;5332:32;5329:52;;;5377:1;5374;5367:12;5329:52;5416:9;5403:23;5435:31;5460:5;5435:31;:::i;:::-;5485:5;-1:-1:-1;5509:35:1;5540:2;5525:18;;5509:35;:::i;:::-;5499:45;;5235:315;;;;;:::o;5555:::-;5623:6;5631;5684:2;5672:9;5663:7;5659:23;5655:32;5652:52;;;5700:1;5697;5690:12;5652:52;5739:9;5726:23;5758:31;5783:5;5758:31;:::i;:::-;5808:5;5860:2;5845:18;;;;5832:32;;-1:-1:-1;;;5555:315:1:o;5875:1226::-;5993:6;6001;6054:2;6042:9;6033:7;6029:23;6025:32;6022:52;;;6070:1;6067;6060:12;6022:52;6110:9;6097:23;-1:-1:-1;;;;;6180:2:1;6172:6;6169:14;6166:34;;;6196:1;6193;6186:12;6166:34;6234:6;6223:9;6219:22;6209:32;;6279:7;6272:4;6268:2;6264:13;6260:27;6250:55;;6301:1;6298;6291:12;6250:55;6337:2;6324:16;6359:4;6383:60;6399:43;6439:2;6399:43;:::i;6383:60::-;6465:3;6489:2;6484:3;6477:15;6517:2;6512:3;6508:12;6501:19;;6548:2;6544;6540:11;6596:7;6591:2;6585;6582:1;6578:10;6574:2;6570:19;6566:28;6563:41;6560:61;;;6617:1;6614;6607:12;6560:61;6639:1;6630:10;;6649:238;6663:2;6660:1;6657:9;6649:238;;;6734:3;6721:17;6751:31;6776:5;6751:31;:::i;:::-;6795:18;;6681:1;6674:9;;;;;6833:12;;;;6865;;6649:238;;;-1:-1:-1;6906:5:1;-1:-1:-1;;6949:18:1;;6936:32;;-1:-1:-1;;6980:16:1;;;6977:36;;;7009:1;7006;6999:12;6977:36;;7032:63;7087:7;7076:8;7065:9;7061:24;7032:63;:::i;7106:1234::-;7232:6;7240;7293:2;7281:9;7272:7;7268:23;7264:32;7261:52;;;7309:1;7306;7299:12;7261:52;7349:9;7336:23;-1:-1:-1;;;;;7419:2:1;7411:6;7408:14;7405:34;;;7435:1;7432;7425:12;7405:34;7473:6;7462:9;7458:22;7448:32;;7518:7;7511:4;7507:2;7503:13;7499:27;7489:55;;7540:1;7537;7530:12;7489:55;7576:2;7563:16;7598:4;7622:60;7638:43;7678:2;7638:43;:::i;7622:60::-;7704:3;7728:2;7723:3;7716:15;7756:2;7751:3;7747:12;7740:19;;7787:2;7783;7779:11;7835:7;7830:2;7824;7821:1;7817:10;7813:2;7809:19;7805:28;7802:41;7799:61;;;7856:1;7853;7846:12;7799:61;7878:1;7869:10;;7888:238;7902:2;7899:1;7896:9;7888:238;;;7973:3;7960:17;7990:31;8015:5;7990:31;:::i;:::-;8034:18;;7920:1;7913:9;;;;;8072:12;;;;8104;;7888:238;;8345:248;8410:6;8418;8471:2;8459:9;8450:7;8446:23;8442:32;8439:52;;;8487:1;8484;8477:12;8439:52;8510:26;8526:9;8510:26;:::i;8598:180::-;8657:6;8710:2;8698:9;8689:7;8685:23;8681:32;8678:52;;;8726:1;8723;8716:12;8678:52;-1:-1:-1;8749:23:1;;8598:180;-1:-1:-1;8598:180:1:o;8783:245::-;8841:6;8894:2;8882:9;8873:7;8869:23;8865:32;8862:52;;;8910:1;8907;8900:12;8862:52;8949:9;8936:23;8968:30;8992:5;8968:30;:::i;9033:249::-;9102:6;9155:2;9143:9;9134:7;9130:23;9126:32;9123:52;;;9171:1;9168;9161:12;9123:52;9203:9;9197:16;9222:30;9246:5;9222:30;:::i;9287:450::-;9356:6;9409:2;9397:9;9388:7;9384:23;9380:32;9377:52;;;9425:1;9422;9415:12;9377:52;9465:9;9452:23;-1:-1:-1;;;;;9490:6:1;9487:30;9484:50;;;9530:1;9527;9520:12;9484:50;9553:22;;9606:4;9598:13;;9594:27;-1:-1:-1;9584:55:1;;9635:1;9632;9625:12;9584:55;9658:73;9723:7;9718:2;9705:16;9700:2;9696;9692:11;9658:73;:::i;9927:416::-;10020:6;10028;10081:2;10069:9;10060:7;10056:23;10052:32;10049:52;;;10097:1;10094;10087:12;10049:52;10133:9;10120:23;10110:33;;10194:2;10183:9;10179:18;10166:32;-1:-1:-1;;;;;10213:6:1;10210:30;10207:50;;;10253:1;10250;10243:12;10348:257;10389:3;10427:5;10421:12;10454:6;10449:3;10442:19;10470:63;10526:6;10519:4;10514:3;10510:14;10503:4;10496:5;10492:16;10470:63;:::i;:::-;10587:2;10566:15;-1:-1:-1;;10562:29:1;10553:39;;;;10594:4;10549:50;;10348:257;-1:-1:-1;;10348:257:1:o;10610:973::-;10695:12;;10660:3;;10750:1;10770:18;;;;10823;;;;10850:61;;10904:4;10896:6;10892:17;10882:27;;10850:61;10930:2;10978;10970:6;10967:14;10947:18;10944:38;10941:161;;;11024:10;11019:3;11015:20;11012:1;11005:31;11059:4;11056:1;11049:15;11087:4;11084:1;11077:15;10941:161;11118:18;11145:104;;;;11263:1;11258:319;;;;11111:466;;11145:104;-1:-1:-1;;11178:24:1;;11166:37;;11223:16;;;;-1:-1:-1;11145:104:1;;11258:319;31791:1;31784:14;;;31828:4;31815:18;;11352:1;11366:165;11380:6;11377:1;11374:13;11366:165;;;11458:14;;11445:11;;;11438:35;11501:16;;;;11395:10;;11366:165;;;11370:3;;11560:6;11555:3;11551:16;11544:23;;11111:466;;;;;;;10610:973;;;;:::o;12074:274::-;12203:3;12241:6;12235:13;12257:53;12303:6;12298:3;12291:4;12283:6;12279:17;12257:53;:::i;:::-;12326:16;;;;;12074:274;-1:-1:-1;;12074:274:1:o;12353:456::-;12574:3;12602:38;12636:3;12628:6;12602:38;:::i;:::-;12669:6;12663:13;12685:52;12730:6;12726:2;12719:4;12711:6;12707:17;12685:52;:::i;:::-;12753:50;12795:6;12791:2;12787:15;12779:6;12753:50;:::i;:::-;12746:57;12353:456;-1:-1:-1;;;;;;;12353:456:1:o;13232:488::-;-1:-1:-1;;;;;13501:15:1;;;13483:34;;13553:15;;13548:2;13533:18;;13526:43;13600:2;13585:18;;13578:34;;;13648:3;13643:2;13628:18;;13621:31;;;13426:4;;13669:45;;13694:19;;13686:6;13669:45;:::i;:::-;13661:53;13232:488;-1:-1:-1;;;;;;13232:488:1:o;14004:674::-;14191:2;14243:21;;;14313:13;;14216:18;;;14335:22;;;14162:4;;14191:2;14414:15;;;;14388:2;14373:18;;;14162:4;14457:195;14471:6;14468:1;14465:13;14457:195;;;14536:13;;-1:-1:-1;;;;;14532:39:1;14520:52;;14627:15;;;;14592:12;;;;14568:1;14486:9;14457:195;;;-1:-1:-1;14669:3:1;;14004:674;-1:-1:-1;;;;;;14004:674:1:o;14683:632::-;14854:2;14906:21;;;14976:13;;14879:18;;;14998:22;;;14825:4;;14854:2;15077:15;;;;15051:2;15036:18;;;14825:4;15120:169;15134:6;15131:1;15128:13;15120:169;;;15195:13;;15183:26;;15264:15;;;;15229:12;;;;15156:1;15149:9;15120:169;;15736:219;15885:2;15874:9;15867:21;15848:4;15905:44;15945:2;15934:9;15930:18;15922:6;15905:44;:::i;15960:404::-;16162:2;16144:21;;;16201:2;16181:18;;;16174:30;16240:34;16235:2;16220:18;;16213:62;-1:-1:-1;;;16306:2:1;16291:18;;16284:38;16354:3;16339:19;;15960:404::o;16369:399::-;16571:2;16553:21;;;16610:2;16590:18;;;16583:30;16649:34;16644:2;16629:18;;16622:62;-1:-1:-1;;;16715:2:1;16700:18;;16693:33;16758:3;16743:19;;16369:399::o;25116:356::-;25318:2;25300:21;;;25337:18;;;25330:30;25396:34;25391:2;25376:18;;25369:62;25463:2;25448:18;;25116:356::o;29034:402::-;29236:2;29218:21;;;29275:2;29255:18;;;29248:30;29314:34;29309:2;29294:18;;29287:62;-1:-1:-1;;;29380:2:1;29365:18;;29358:36;29426:3;29411:19;;29034:402::o;31250:275::-;31321:2;31315:9;31386:2;31367:13;;-1:-1:-1;;31363:27:1;31351:40;;-1:-1:-1;;;;;31406:34:1;;31442:22;;;31403:62;31400:88;;;31468:18;;:::i;:::-;31504:2;31497:22;31250:275;;-1:-1:-1;31250:275:1:o;31530:183::-;31590:4;-1:-1:-1;;;;;31615:6:1;31612:30;31609:56;;;31645:18;;:::i;:::-;-1:-1:-1;31690:1:1;31686:14;31702:4;31682:25;;31530:183::o;31844:128::-;31884:3;31915:1;31911:6;31908:1;31905:13;31902:39;;;31921:18;;:::i;:::-;-1:-1:-1;31957:9:1;;31844:128::o;31977:120::-;32017:1;32043;32033:35;;32048:18;;:::i;:::-;-1:-1:-1;32082:9:1;;31977:120::o;32102:168::-;32142:7;32208:1;32204;32200:6;32196:14;32193:1;32190:21;32185:1;32178:9;32171:17;32167:45;32164:71;;;32215:18;;:::i;:::-;-1:-1:-1;32255:9:1;;32102:168::o;32275:125::-;32315:4;32343:1;32340;32337:8;32334:34;;;32348:18;;:::i;:::-;-1:-1:-1;32385:9:1;;32275:125::o;32405:258::-;32477:1;32487:113;32501:6;32498:1;32495:13;32487:113;;;32577:11;;;32571:18;32558:11;;;32551:39;32523:2;32516:10;32487:113;;;32618:6;32615:1;32612:13;32609:48;;;-1:-1:-1;;32653:1:1;32635:16;;32628:27;32405:258::o;32668:136::-;32707:3;32735:5;32725:39;;32744:18;;:::i;:::-;-1:-1:-1;;;32780:18:1;;32668:136::o;32809:380::-;32888:1;32884:12;;;;32931;;;32952:61;;33006:4;32998:6;32994:17;32984:27;;32952:61;33059:2;33051:6;33048:14;33028:18;33025:38;33022:161;;;33105:10;33100:3;33096:20;33093:1;33086:31;33140:4;33137:1;33130:15;33168:4;33165:1;33158:15;33022:161;;32809:380;;;:::o;33194:135::-;33233:3;-1:-1:-1;;33254:17:1;;33251:43;;;33274:18;;:::i;:::-;-1:-1:-1;33321:1:1;33310:13;;33194:135::o;33334:112::-;33366:1;33392;33382:35;;33397:18;;:::i;:::-;-1:-1:-1;33431:9:1;;33334:112::o;33451:127::-;33512:10;33507:3;33503:20;33500:1;33493:31;33543:4;33540:1;33533:15;33567:4;33564:1;33557:15;33583:127;33644:10;33639:3;33635:20;33632:1;33625:31;33675:4;33672:1;33665:15;33699:4;33696:1;33689:15;33715:127;33776:10;33771:3;33767:20;33764:1;33757:31;33807:4;33804:1;33797:15;33831:4;33828:1;33821:15;33847:127;33908:10;33903:3;33899:20;33896:1;33889:31;33939:4;33936:1;33929:15;33963:4;33960:1;33953:15;33979:127;34040:10;34035:3;34031:20;34028:1;34021:31;34071:4;34068:1;34061:15;34095:4;34092:1;34085:15;34111:131;-1:-1:-1;;;;;34186:31:1;;34176:42;;34166:70;;34232:1;34229;34222:12;34247:131;-1:-1:-1;;;;;;34321:32:1;;34311:43;;34301:71;;34368:1;34365;34358:12

Swarm Source

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