ETH Price: $3,496.75 (+2.96%)

Contract

0xc631164B6CB1340B5123c9162f8558c866dE1926
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Transaction Hash
Method
Block
From
To
Set Approval For...214587442024-12-22 14:50:472 days ago1734879047IN
Divine Anarchy: DA Token
0 ETH0.000224678.54226247
Set Approval For...214587182024-12-22 14:45:352 days ago1734878735IN
Divine Anarchy: DA Token
0 ETH0.000200678.25753487
Safe Transfer Fr...214536222024-12-21 21:39:593 days ago1734817199IN
Divine Anarchy: DA Token
0 ETH0.000842439.51811115
Set Approval For...214504802024-12-21 11:07:113 days ago1734779231IN
Divine Anarchy: DA Token
0 ETH0.000342997.43549612
Set Approval For...214396062024-12-19 22:39:115 days ago1734647951IN
Divine Anarchy: DA Token
0 ETH0.0006736314.60294927
Set Approval For...214213772024-12-17 9:31:597 days ago1734427919IN
Divine Anarchy: DA Token
0 ETH0.000448889.73077153
Set Approval For...214210302024-12-17 8:21:477 days ago1734423707IN
Divine Anarchy: DA Token
0 ETH0.000380988.25890743
Set Approval For...214165972024-12-16 17:32:478 days ago1734370367IN
Divine Anarchy: DA Token
0 ETH0.0013086628.36902001
Set Base URI213978432024-12-14 2:42:5911 days ago1734144179IN
Divine Anarchy: DA Token
0 ETH0.0006320910.00513847
Set Approval For...213971332024-12-14 0:20:4711 days ago1734135647IN
Divine Anarchy: DA Token
0 ETH0.0006422213.92203003
Set Approval For...213970862024-12-14 0:11:2311 days ago1734135083IN
Divine Anarchy: DA Token
0 ETH0.0007473116.20025325
Set Approval For...213959812024-12-13 20:28:3511 days ago1734121715IN
Divine Anarchy: DA Token
0 ETH0.0004248417.48169423
Set Approval For...213959252024-12-13 20:17:2311 days ago1734121043IN
Divine Anarchy: DA Token
0 ETH0.0003867615.97005266
Set Approval For...213820432024-12-11 21:47:5913 days ago1733953679IN
Divine Anarchy: DA Token
0 ETH0.0009172819.88468302
Set Approval For...213635042024-12-09 7:39:2315 days ago1733729963IN
Divine Anarchy: DA Token
0 ETH0.0005033610.91181014
Set Approval For...213610412024-12-08 23:24:3516 days ago1733700275IN
Divine Anarchy: DA Token
0 ETH0.0005812912.60120155
Set Approval For...213588162024-12-08 15:57:5916 days ago1733673479IN
Divine Anarchy: DA Token
0 ETH0.0005290511.46881335
Set Approval For...213587572024-12-08 15:46:1116 days ago1733672771IN
Divine Anarchy: DA Token
0 ETH0.0006197513.43490744
Set Approval For...213573682024-12-08 11:07:1116 days ago1733656031IN
Divine Anarchy: DA Token
0 ETH0.000327437.09811596
Safe Transfer Fr...213567482024-12-08 9:02:4716 days ago1733648567IN
Divine Anarchy: DA Token
0 ETH0.0010852812.67015068
Set Approval For...213485702024-12-07 5:36:1118 days ago1733549771IN
Divine Anarchy: DA Token
0 ETH0.0006888714.93333219
Set Approval For...213440592024-12-06 14:29:4718 days ago1733495387IN
Divine Anarchy: DA Token
0 ETH0.0009242820
Set Approval For...213273182024-12-04 6:23:2321 days ago1733293403IN
Divine Anarchy: DA Token
0 ETH0.0008930719.35990788
Set Approval For...213140032024-12-02 9:42:4722 days ago1733132567IN
Divine Anarchy: DA Token
0 ETH0.0006207413.45642311
Set Approval For...212943962024-11-29 15:59:2325 days ago1732895963IN
Divine Anarchy: DA Token
0 ETH0.000930320.16711086
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
137067082021-11-29 5:12:121122 days ago1638162732
Divine Anarchy: DA Token
0.09 ETH
135743152021-11-08 6:51:051143 days ago1636354265
Divine Anarchy: DA Token
0.54 ETH
135632082021-11-06 13:23:051144 days ago1636204985
Divine Anarchy: DA Token
405.54 ETH
135631272021-11-06 13:01:551144 days ago1636203715
Divine Anarchy: DA Token
0.36 ETH
135631272021-11-06 13:01:551144 days ago1636203715
Divine Anarchy: DA Token
0.36 ETH
135631272021-11-06 13:01:551144 days ago1636203715
Divine Anarchy: DA Token
0.36 ETH
135631272021-11-06 13:01:551144 days ago1636203715
Divine Anarchy: DA Token
0.36 ETH
135631272021-11-06 13:01:551144 days ago1636203715
Divine Anarchy: DA Token
0.36 ETH
135631272021-11-06 13:01:551144 days ago1636203715
Divine Anarchy: DA Token
0.36 ETH
135631272021-11-06 13:01:551144 days ago1636203715
Divine Anarchy: DA Token
0.36 ETH
135631272021-11-06 13:01:551144 days ago1636203715
Divine Anarchy: DA Token
0.36 ETH
135631272021-11-06 13:01:551144 days ago1636203715
Divine Anarchy: DA Token
0.36 ETH
135631272021-11-06 13:01:551144 days ago1636203715
Divine Anarchy: DA Token
0.36 ETH
135631232021-11-06 13:01:221144 days ago1636203682
Divine Anarchy: DA Token
0.36 ETH
135631232021-11-06 13:01:221144 days ago1636203682
Divine Anarchy: DA Token
0.36 ETH
135631232021-11-06 13:01:221144 days ago1636203682
Divine Anarchy: DA Token
0.36 ETH
135631232021-11-06 13:01:221144 days ago1636203682
Divine Anarchy: DA Token
0.36 ETH
135631232021-11-06 13:01:221144 days ago1636203682
Divine Anarchy: DA Token
0.36 ETH
135631232021-11-06 13:01:221144 days ago1636203682
Divine Anarchy: DA Token
0.36 ETH
135631232021-11-06 13:01:221144 days ago1636203682
Divine Anarchy: DA Token
0.36 ETH
135631232021-11-06 13:01:221144 days ago1636203682
Divine Anarchy: DA Token
0.36 ETH
135631232021-11-06 13:01:221144 days ago1636203682
Divine Anarchy: DA Token
0.36 ETH
135631232021-11-06 13:01:221144 days ago1636203682
Divine Anarchy: DA Token
0.36 ETH
135631142021-11-06 12:59:441144 days ago1636203584
Divine Anarchy: DA Token
0.36 ETH
135631142021-11-06 12:59:441144 days ago1636203584
Divine Anarchy: DA Token
0.36 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DivineAnarchyToken

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-11-05
*/

// SPDX-License-Identifier: GPL-3.0

pragma solidity ^0.8.0;

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

interface IERC721 is IERC165 {
   
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    function approve(address to, uint256 tokenId) external;
    function getApproved(uint256 tokenId) external view returns (address operator);
    function setApprovalForAll(address operator, bool _approved) external;
    function isApprovedForAll(address owner, address operator) external view returns (bool);
}


interface IERC721Metadata is IERC721 {
    
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function tokenURI(uint256 tokenId) external view returns (string memory);
}


interface IDivineAnarchyToken is IERC721, IERC721Metadata {

    function getTokenClass(uint256 _id) external view returns(uint256);
    function getTokenClassSupplyCap(uint256 _classId) external view returns(uint256);
    function getTokenClassCurrentSupply(uint256 _classId) external view returns(uint256);
    function getTokenClassVotingPower(uint256 _classId) external view returns(uint256);
    function getTokensMintedAtPresale(address account) external view returns(uint256);
    function isTokenClass(uint256 _id) external pure returns(bool);
    function isTokenClassMintable(uint256 _id) external pure returns(bool);
    function isAscensionApple(uint256 _id) external pure returns(bool);
    function isBadApple(uint256 _id) external pure returns(bool);
    function consumedAscensionApples(address account) external view returns(uint256);
    function airdropApples(uint256 amount, uint256 appleClass, address[] memory accounts) external;
}


interface IERC721Enumerable is IERC721 {
  
    function totalSupply() external view returns (uint256);
    function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId);
    function tokenByIndex(uint256 index) external view returns (uint256);
}

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

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

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

abstract contract Pausable is Context {
    
    event Paused(address account);
    event Unpaused(address account);
    bool private _paused;

    constructor() {
        _paused = false;
    }

    
    function paused() public view virtual returns (bool) {
        return _paused;
    }

    modifier whenNotPaused() {
        require(!paused(), "Pausable: paused");
        _;
    }

    modifier whenPaused() {
        require(paused(), "Pausable: not paused");
        _;
    }

    function _pause() internal virtual whenNotPaused {
        _paused = true;
        emit Paused(_msgSender());
    }

    function _unpause() internal virtual whenPaused {
        _paused = false;
        emit Unpaused(_msgSender());
    }
}

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

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

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

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

library Address {
    
    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }
}


abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor() {
        _transferOwnership(_msgSender());
    }
    
    function owner() public view virtual returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }
   
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }
    
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}


abstract contract ReentrancyGuard {
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;
    uint256 private _status;
    constructor() {
        _status = _NOT_ENTERED;
    }
    modifier nonReentrant() {
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
        _status = _ENTERED;
        _;
        _status = _NOT_ENTERED;
    }
}

library MerkleProof {
    
    function verify(
        bytes32[] memory proof,
        bytes32 root,
        bytes32 leaf
    ) internal pure returns (bool) {
        return processProof(proof, leaf) == root;
    }

    
    function processProof(bytes32[] memory proof, bytes32 leaf) internal pure returns (bytes32) {
        bytes32 computedHash = leaf;
        for (uint256 i = 0; i < proof.length; i++) {
            bytes32 proofElement = proof[i];
            if (computedHash <= proofElement) {
                // Hash(current computed hash + current element of the proof)
                computedHash = keccak256(abi.encodePacked(computedHash, proofElement));
            } else {
                // Hash(current element of the proof + current computed hash)
                computedHash = keccak256(abi.encodePacked(proofElement, computedHash));
            }
        }
        return computedHash;
    }
}

interface IOracle {

    function getRandomNumbers() external returns(uint256[][] memory);
    function wait() external pure returns(bool);
}

interface IAdminWallets {

    function getOwnerWallet() external pure returns(address);
    function getDiversityWallet() external pure returns(address);
    function getAssetBenderWallet() external pure returns(address);
    function getMarketingWallet() external pure returns(address);
    function getDivineTreasuryWallet() external pure returns(address);
}
contract DivineAnarchyToken is IDivineAnarchyToken, ERC165, Ownable, Pausable, ReentrancyGuard {

    using Address for address;
    using Strings for string;

    // Contract variables.
    IAdminWallets public adminWallets;
    IOracle public oracle;

    string private _baseURI;
    string private _name;
    string private _symbol;

    uint256 public constant THE_UNKNOWN = 0;
    uint256 public constant KING = 1;
    uint256 public constant ADAM_EVE = 2;
    uint256 public constant HUMAN_HERO = 3;
    uint256 public constant HUMAN_NEMESIS = 4; 
    uint256 public constant ASCENSION_APPLE = 5;
    uint256 public constant BAD_APPLE = 6;

    mapping(uint256 => uint256) private _tokenClass;
    mapping(uint256 => uint256) private _tokenClassSupplyCap;
    mapping(uint256 => uint256) private _tokenClassSupplyCurrent;
    mapping(uint256 => uint256) private _tokenClassVotingPower;

    uint256 private _mintedToTreasury;
    uint256 public  MAX_MINTED_TO_TREASURY = 270; 
    bool private _mintedToTreasuryHasFinished = false;

    uint256 private constant MAX_TOKENS_MINTED_BY_ADDRESS_PRESALE = 3;
    mapping(address => uint256) private _tokensMintedByAddressAtPresale;

    uint256 public MAX_TOKENS_MINTED_BY_ADDRESS = 4;
    mapping(address => uint256) private _tokensMintedByAddress;

    uint256 private _initAscensionApple = 10011;
    uint256 private _initBadApple = 13011;
    mapping(address => uint256) private _consumedAscensionApples;

    uint256 public  TOKEN_UNIT_PRICE = 0.09 ether;
    
    bytes32 public root = 0x71eb2b2e3c82409bb024f8b681245d3eea25dcfd0dc7bbe701ee18cf1e8ecbb1;
    bool isPresaleActive = true;

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

    mapping(uint256 => address) private _tokenApprovals;
    mapping(address => mapping(address => bool)) private _operatorApprovals;
    
    // Mapping from owner to list of owned token IDs
    mapping(address => mapping(uint256 => uint256)) private _ownedTokens;

    // Mapping from token ID to index of the owner tokens list
    mapping(uint256 => uint256) private _ownedTokensIndex;

    // Array with all token ids, used for enumeration
    uint256[] private _allTokens;

    // Mapping from token id to position in the allTokens array
    mapping(uint256 => uint256) private _allTokensIndex;
    
    bool public toRescue;
    bool public oracleForced;
    
    event oracleRescued(uint256[][] _tokens, uint256 timestamp, address receiver);
    event val(uint256[][] _tokens);

    // Contract constructor
    constructor (string memory name_, string memory symbol_, string memory baseURI_, address _adminwallets, address _oracle) {
        _name = name_;
        _symbol = symbol_;
        _baseURI = baseURI_;

        adminWallets = IAdminWallets(_adminwallets);
        oracle = IOracle(_oracle);

        _tokenClassSupplyCap[THE_UNKNOWN] = 1;
        _tokenClassSupplyCap[KING] = 8;
        _tokenClassSupplyCap[ADAM_EVE] = 2;
        _tokenClassSupplyCap[HUMAN_HERO] = 5000;
        _tokenClassSupplyCap[HUMAN_NEMESIS] = 5000; 
        _tokenClassSupplyCap[ASCENSION_APPLE] = 3000;
        _tokenClassSupplyCap[BAD_APPLE] = 1500;

        _tokenClassVotingPower[KING] = 2000;
        _tokenClassVotingPower[ADAM_EVE] = 1000;
        _tokenClassVotingPower[HUMAN_HERO] = 1;
        _tokenClassVotingPower[HUMAN_NEMESIS] = 1;
        
        _beforeTokenTransfer(address(0), adminWallets.getDivineTreasuryWallet(), 0);
        _balances[adminWallets.getDivineTreasuryWallet()] += 1;
        _owners[0] = adminWallets.getDivineTreasuryWallet();
        _tokenClass[0] = THE_UNKNOWN;
        _tokenClassSupplyCurrent[THE_UNKNOWN] = 1;
        
        _beforeTokenTransfer(address(0), adminWallets.getDiversityWallet(), 1);
        _beforeTokenTransfer(address(0), adminWallets.getAssetBenderWallet(), 2);
        _beforeTokenTransfer(address(0), adminWallets.getMarketingWallet(), 3);

        // Minting three kings for Diversity, AssetBender and Marketing.
        _balances[adminWallets.getDiversityWallet()] += 1;
        _balances[adminWallets.getAssetBenderWallet()] += 1;
        _balances[adminWallets.getMarketingWallet()] += 1;

        _owners[1] = adminWallets.getDiversityWallet();
        _owners[2] = adminWallets.getAssetBenderWallet();
        _owners[3] = adminWallets.getMarketingWallet();
        _owners[4] = adminWallets.getMarketingWallet();

        for(uint256 i = 1; i <= 5; i++) {
            _tokenClass[i] = KING;
        }
 
        _tokenClassSupplyCurrent[KING] = 3;
    }


    // Contract functions.
    function name() external view override returns (string memory) {
        return _name;
    }

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

    function setBaseURI(string memory baseURI_) external onlyOwner {
        _baseURI = baseURI_;
    }

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

        string memory baseURI = _baseURI;
        return string(abi.encodePacked(baseURI, Strings.toString(tokenId)));
    }

    function getAdminWalletsAddress() public view returns(address) {
        return address(adminWallets);
    }

    function getOracleAddress() public view returns(address) {
        return address(oracle);
    }

    function getTokenClass(uint256 _id) external view override returns(uint256) {
        return _tokenClass[_id];
    }

    function setTokenClass(uint _id) public pure returns(uint256) {
        // This can be erased if not necessary.
        if (_id == 0) { 
            return THE_UNKNOWN;
        } else if (_id >= 1 && _id <= 8) {
            return KING;
        } else if (_id == 9 && _id == 10) {
            return ADAM_EVE;
        } else if (_id >= 11 && _id <= 5010) {
            return HUMAN_HERO;
        } else if (_id >= 5011 && _id <= 10010) {
            return HUMAN_NEMESIS;
        } else if (_id >= 10011 && _id <= 13010) {
            return ASCENSION_APPLE;
        } else if (_id >= 13011 && _id <= 14510) {
            return BAD_APPLE;
        } else {
            revert('This ID does not belong to a valid token class');
        }
    }

    function getTokenClassSupplyCap(uint256 _classId) external view override returns(uint256) {
        return _tokenClassSupplyCap[_classId];
    }

    function getTokenClassCurrentSupply(uint256 _classId) external view override returns(uint256) {
        return _tokenClassSupplyCurrent[_classId];
    }

    function getTokenClassVotingPower(uint256 _classId) external view override returns(uint256) {
        return _tokenClassVotingPower[_classId];
    }

    function getTokensMintedAtPresale(address account) external view override returns(uint256) {
        return _tokensMintedByAddressAtPresale[account];
    }

    function isTokenClass(uint256 _id) public pure override returns(bool) {
        return (_id >= 0 && _id <= 14510);
    }

    function isTokenClassMintable(uint256 _id) public pure override returns(bool) {
        return (_id >= 0 && _id <= 10010);
    }

    function isAscensionApple(uint256 _id) public pure override returns(bool) {
        return (_id >= 10011 && _id <= 13010);
    }

    function isBadApple(uint256 _id) public pure override returns(bool) {
        return (_id >= 13011 && _id <= 14510);
    }

    function balanceOf(address account) public view returns(uint256) {
        return _balances[account];
    }

    function ownerOf(uint256 _id) public view returns(address) {
        return _owners[_id];
    }

    function consumedAscensionApples(address account) public view override returns(uint256) {
        return _consumedAscensionApples[account];
    }

    // Functions to comply with ERC721.
    function approve(address to, uint256 tokenId) external override {
        address owner = ownerOf(tokenId);
        require(to != owner, "ERC721: approval to current owner");

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

        _tokenApprovals[tokenId] = to;
        emit Approval(ownerOf(tokenId), to, tokenId);
    }

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

        return _tokenApprovals[tokenId];
    }

    function setApprovalForAll(address operator, bool approved) external override {
        require(_msgSender() != operator, "Error: setting approval status for self");

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

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

    function getMintedToTreasuryFinished() public view returns(bool) {
        return _mintedToTreasuryHasFinished;
    }
    
    // Minting & airdropping.
    function airdropToTreasury(uint256[][] memory treasuryRandom) external onlyOwner {
        address divineTreasuryWallet = adminWallets.getDivineTreasuryWallet();
        require(!paused(), "Error: token transfer while paused");
        uint256[] memory tokenIds = treasuryRandom[0];
        uint256[] memory classIds = treasuryRandom[1];
        require(classIds.length == tokenIds.length);
        uint256 amount = tokenIds.length;
        require(_mintedToTreasury + amount <= MAX_MINTED_TO_TREASURY, 'Error: you are exceeding the max airdrop amount to Treasury');
        for (uint256 i = 0; i < tokenIds.length; i++) {
            _beforeTokenTransfer(address(0), divineTreasuryWallet, tokenIds[i]);
            _balances[divineTreasuryWallet] += 1;
            _owners[tokenIds[i]] = divineTreasuryWallet;
            _tokenClass[tokenIds[i]] = classIds[i];
            _tokenClassSupplyCurrent[classIds[i]] += 1;
            emit Transfer(address(0), divineTreasuryWallet, tokenIds[i]);
        }

        _mintedToTreasury += amount;

        if(_mintedToTreasury == MAX_MINTED_TO_TREASURY) {
            _mintedToTreasuryHasFinished = true;
        }
    }    

    function mint(address account, uint256 amount, bytes32[] memory proof) external nonReentrant payable {
        // Pre minting checks.
        address operator = _msgSender();

        require(msg.value >= TOKEN_UNIT_PRICE * amount, 'Make sure you can afford 0.09 eth per token');
        require(account != address(0), "Error: mint to the zero address");
        require(!paused(), "Error: token transfer while paused");
        require(_mintedToTreasuryHasFinished == true, 'Error: Wait until airdropping to Treasury has finished');
        if (isPresaleActive == true) {
            require(_tokensMintedByAddressAtPresale[operator] + amount <= MAX_TOKENS_MINTED_BY_ADDRESS_PRESALE, 'Error: you cannot mint more tokens at presale');
            require(MerkleProof.verify(proof, root, keccak256(abi.encodePacked(operator))), "you are not allowed to mint during presale");
        } else {
            require(_tokensMintedByAddress[operator] + amount <= MAX_TOKENS_MINTED_BY_ADDRESS, 'Error: you cannot mint more tokens');
        }

        uint256[][] memory randomList = getRand(amount);
        uint256[] memory tokensIds = randomList[0];
        uint256[] memory classIds = randomList[1];

        for (uint256 i = 0; i < amount; i++) {
            _beforeTokenTransfer(address(0), account, tokensIds[i]);

            _owners[tokensIds[i]] = account;
            _balances[account] += 1;
            _tokenClass[tokensIds[i]] = classIds[i];
            _tokenClassSupplyCurrent[classIds[i]] += 1;

            emit Transfer(address(0), account, tokensIds[i]);
        }

        // Post minting.
        if (isPresaleActive == true) {
            _tokensMintedByAddressAtPresale[operator] += amount;
        } else {
            _tokensMintedByAddress[operator] += amount;
        }
    }

    function transferFrom(address from, address to, uint256 id) public {
        // Pre transfer checks.
        address operator = _msgSender();
        require(!paused(), "Error: token transfer while paused");

        _transfer(from, to, operator, id);
    }

    function safeTransferFrom(address from, address to, uint256 id) public  {
        // Pre transfer checks.
        address operator = _msgSender();
        require(!paused(), "Error: token transfer while paused");

        _transfer(from, to, operator, id);
        // Post transfer: check IERC721Receiver.
        require(_checkOnERC721Received(from, to, id, ""), "ERC721: transfer to non ERC721Receiver implementer");
    }

    function safeTransferFrom(address from, address to, uint256 id, bytes calldata data) public  {
        // Pre transfer checks.
        address operator = _msgSender();
        require(!paused(), "Error: token transfer while paused");

        _transfer(from, to, operator, id);

        // Post transfer: check IERC721Receiver with data input.
        require(_checkOnERC721Received(from, to, id, data), "ERC721: transfer to non ERC721Receiver implementer");

    }

    function _transfer(address from, address to, address operator, uint256 id) internal virtual {
        require(_owners[id] == from);
        require(from == operator || getApproved(id) == operator || isApprovedForAll(from, operator), "Error: caller is neither owner nor approved");
        _beforeTokenTransfer(from, to, id);

        // Transfer.
        _balances[from] -= 1;
        _balances[to] += 1;
        _owners[id] = to;

        emit Transfer(from, to, id);
        _tokenApprovals[id] = address(0);
    }

    function safeBatchTransferFrom(address from, address to, uint256[] calldata ids) public {
        // Pre transfer checks.
        address operator = _msgSender();
        require(!paused(), "Error: token transfer while paused");

        if (from != operator && isApprovedForAll(from, operator) == false) {
            for (uint256 i = 0; i < ids.length; i++) {
                require(getApproved(ids[i]) == operator, 'Error: caller is neither owner nor approved');
            }
        }

        // Transfer.
        for (uint256 i = 0; i < ids.length; i++) {
            require(_owners[ids[i]] == from);
            _beforeTokenTransfer(from, to, ids[i]);
            _balances[from] -= 1;
            _balances[to] += 1;
            _owners[ids[i]] = to;

            emit Transfer(from, to, ids[i]);
            _tokenApprovals[ids[i]] = address(0);

            require(_checkOnERC721Received(from, to, ids[i], ""), "ERC721: transfer to non ERC721Receiver implementer");
        }
    }
    
    function burn(address account, uint256 id) public {
        // Pre burning checks.
        address operator = _msgSender();
        require(!paused(), "Error: token transfer while paused");

        require(account == operator || getApproved(id) == operator || isApprovedForAll(account, operator), "Error: caller is neither owner nor approved");
        require(account != address(0), "Error: burn from the zero address");
        require(_owners[id] == account, 'Error: account is not owner of token id');
         _beforeTokenTransfer(account, address(0), id);

        // Burn process.
        _owners[id] = address(0);
        _balances[account] -= 1;

        emit Transfer(account, address(0), id);

        // Post burning.
        _tokenApprovals[id] = address(0);
    }

    function burnBatch(address account, uint256[] memory ids) public {
        // Pre burning checks.
        address operator = _msgSender();
        require(!paused(), "Error: token transfer while paused");

        if (account != operator && isApprovedForAll(account, operator) == false) {
            for (uint256 i = 0; i < ids.length; i++) {
                require(getApproved(ids[i]) == operator, 'Error: caller is neither owner nor approved');
            }
        } 

        for (uint256 i = 0; i < ids.length; i++) {
            require(_owners[ids[i]] == account, 'Error: account is not owner of token id');
        }

        // Burn process.
        for (uint256 i = 0; i < ids.length; i++) {
            _beforeTokenTransfer(account, address(0), ids[i]);
            _owners[ids[i]] = address(0);
            _balances[account] -= 1;
            emit Transfer(account, address(0), ids[i]);
        }

        // Post burning.
        for (uint256 i=0; i < ids.length; i++) {
            _tokenApprovals[ids[i]] = address(0);
        }
    }

    function airdropApples(uint256 amount, uint256 appleClass, address[] memory accounts) external override onlyOwner {        
        require(accounts.length == amount, "amount not egal to list length");
        require(appleClass == ASCENSION_APPLE || appleClass == BAD_APPLE, 'Error: The token class is not an apple');
        require(_tokenClassSupplyCurrent[appleClass] + amount <= _tokenClassSupplyCap[appleClass], 'Error: You exceed the supply cap for this apple class');

        uint256 appleIdSetter;

        if (appleClass == ASCENSION_APPLE) {
            appleIdSetter = _initAscensionApple + _tokenClassSupplyCurrent[ASCENSION_APPLE];
        } else {
            appleIdSetter = _initBadApple + _tokenClassSupplyCurrent[BAD_APPLE];
        }

        for (uint256 i = 0; i < accounts.length; i++) {
            uint256 appleId = appleIdSetter + i;
            _beforeTokenTransfer(address(0), accounts[i], appleId);
            _owners[appleId] = accounts[i];
            _balances[accounts[i]] += 1;
            _tokenClass[appleId] = appleClass;
        } 

        _tokenClassSupplyCurrent[appleClass] += amount;
    }

    function ascensionAppleConsume(address account, uint256 appleId) external {
        address operator = _msgSender();

        require(isAscensionApple(appleId), 'Error: token provided is not ascension apple');
        require(_owners[appleId] == operator || getApproved(appleId) == operator || isApprovedForAll(account, operator), "Error: caller is neither owner nor approved");
        burn(account, appleId);
        _consumedAscensionApples[account] += 1;
    }

    function badAppleConsume(address account, uint256 appleId, uint256 tokenId) external {
        address operator = _msgSender();

        require(isBadApple(appleId), 'Error: token provided is not bad apple');
        require(isTokenClassMintable(tokenId), "Error: token provided is an apple");

        require(_owners[appleId] == operator || getApproved(appleId) == operator || isApprovedForAll(account, operator), "Error: caller is neither owner nor approved");

        burn(account, appleId);
        burn(account, tokenId);

        // Rewarding with 1 ascension apple.
        require(_tokenClassSupplyCurrent[ASCENSION_APPLE] + 1 <= _tokenClassSupplyCap[ASCENSION_APPLE], 'Error: You exceed the supply cap for this apple class');

        uint256 ascensionAppleId = _initAscensionApple + _tokenClassSupplyCurrent[ASCENSION_APPLE];
            
        _beforeTokenTransfer(address(0), account, ascensionAppleId);
        _owners[ascensionAppleId] = account;
        _balances[account] += 1;
        _tokenClassSupplyCurrent[ASCENSION_APPLE] += 1;
    }

    // Auxiliary functions.
    function exists(uint256 tokenId) public view virtual returns (bool) {
        return _owners[tokenId] != address(0);
    }

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

    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
        return
        interfaceId == type(IERC721Enumerable).interfaceId ||
            interfaceId == type(IERC721).interfaceId ||
            interfaceId == type(IERC721Metadata).interfaceId ||
            super.supportsInterface(interfaceId);
    }
    
    function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual  returns (uint256) {
        require(index < balanceOf(owner), "ERC721Enumerable: owner index out of bounds");
        return _ownedTokens[owner][index];
    }

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

    function tokenByIndex(uint256 index) public view virtual  returns (uint256) {
        require(index < totalSupply(), "ERC721Enumerable: global index out of bounds");
        return _allTokens[index];
    }
    
       function _beforeTokenTransfer(
        address from,
        address to,
        uint256 tokenId
    ) internal   {
        if (from == address(0)) {
            _addTokenToAllTokensEnumeration(tokenId);
        } else if (from != to) {
            _removeTokenFromOwnerEnumeration(from, tokenId);
        }
        if (to == address(0)) {
            _removeTokenFromAllTokensEnumeration(tokenId);
        } else if (to != from) {
            _addTokenToOwnerEnumeration(to, tokenId);
        }
    }

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

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

    function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private {
        // To prevent a gap in from's tokens array, we store the last token in the index of the token to delete, and
        // then delete the last slot (swap and pop).

        uint256 lastTokenIndex = balanceOf(from) - 1;
        uint256 tokenIndex = _ownedTokensIndex[tokenId];

        // When the token to delete is the last token, the swap operation is unnecessary
        if (tokenIndex != lastTokenIndex) {
            uint256 lastTokenId = _ownedTokens[from][lastTokenIndex];

            _ownedTokens[from][tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token
            _ownedTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index
        }

        // This also deletes the contents at the last position of the array
        delete _ownedTokensIndex[tokenId];
        delete _ownedTokens[from][lastTokenIndex];
    }

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

        _allTokens[tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token
        _allTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index

        delete _allTokensIndex[tokenId];
        _allTokens.pop();
    }
    
    function walletOfOwner(address _owner) public view returns (uint256[] memory) {
        uint256 tokenCount = balanceOf(_owner);
        uint256[] memory result = new uint256[](tokenCount);
        for(uint256 i = 0; i < tokenCount; i++) {
            result[i] = tokenOfOwnerByIndex(_owner, i);
        }
        return result;
    }
    
    function getData(address _account)external view returns(uint256[][] memory){
        uint256[][] memory data = new uint256[][](2);
        uint256[] memory arrayOfTokens = walletOfOwner(_account);
        uint256[] memory othersData = new uint256[](2);
        othersData[0] = totalSupply();
        othersData[1] = TOKEN_UNIT_PRICE;
        data[0] = arrayOfTokens;
        data[1] = othersData;
        return data;
    }
    
    function withdrawAll() external onlyOwner nonReentrant{
        uint256 balance = address(this).balance;
        require(balance > 0, "balance is 0.");
        (bool success,) = payable(msg.sender).call{value: balance}(new bytes(0));
        if(!success)revert("withdraw: transfer error");    
        
    }

    function withdraw(uint256 _amount) external onlyOwner nonReentrant{
        uint256 balance = address(this).balance;
        require(balance > 0, "balance is 0.");
        require(balance > _amount, "balance must be superior to amount");
        (bool success,) = payable(msg.sender).call{value: _amount}(new bytes(0));
        if(!success)revert("withdraw: transfer error");
    }
    
    function setPresale(bool _bool) external onlyOwner{
        isPresaleActive = _bool;
    }
    
    function setRoot(bytes32 _root) external onlyOwner {
        root = _root;
    }
    
    function setMaxMintedTreasury(uint256 _amount) external onlyOwner {
        MAX_MINTED_TO_TREASURY = _amount;
                if(_mintedToTreasury == MAX_MINTED_TO_TREASURY) {
            _mintedToTreasuryHasFinished = true;
        }
    }
    function setOracle(address _oracle) external onlyOwner{
        oracle = IOracle(_oracle);
    }
    
    function setAdminWallet(address _adminwallets) external onlyOwner {
        adminWallets = IAdminWallets(_adminwallets);
    }
    
    function oracleRescue(uint256 _amount) public view returns(uint256[][]memory) {
        uint256[][] memory array = new uint256[][](2);
        uint256[] memory tokenIds = new uint256[](_amount);
        uint256[] memory classIds = new uint256[](_amount);
        uint256 initRand = 0;
        uint256 each = 0;
        bytes32 bHash = blockhash(block.number - 1);

        while(initRand != _amount){
            uint256 randomNumber = uint256(
                uint256(
                    keccak256(
                        abi.encodePacked(
                            block.timestamp, 
                            bHash, 
                            _msgSender(), 
                            each
                        )
                    )
                ) % 10011
            );
            bool inArray;
            for(uint256 i = 0; i<initRand; i++){
                if(randomNumber == tokenIds[i]){
                    inArray = true;
                }
            }
            if(!exists(randomNumber) && !inArray){
                tokenIds[initRand] = randomNumber;
                classIds[initRand] = setTokenClass(randomNumber);
                initRand += 1;
            }
            each += 1;
        }
        array[0] = tokenIds;
        array[1] = classIds;
    return array;
       
    }
    
    function setRescue(bool _value) external onlyOwner {
        toRescue = _value;
    }
    
    function forceOracle(bool _value) external onlyOwner {
        oracleForced = _value;
    }
    
    function getRand(uint256 _amount) internal returns(uint256[][] memory ){
        if(!toRescue && !oracleForced){
            try oracle.getRandomNumbers() returns(uint256[][] memory array){
                return (array);
            } catch {
                uint256[][] memory arr = oracleRescue(_amount);
                emit oracleRescued(arr, block.timestamp, msg.sender);
                return arr;
            }
        } else if(!toRescue && oracleForced){
            return oracle.getRandomNumbers();
        } else {
            uint256[][] memory arr = oracleRescue(_amount);
            emit oracleRescued(arr, block.timestamp, msg.sender);
            return arr;        
        }
    }
    
    function setMaxTokenMintedByAddress(uint256 _amount) external onlyOwner{
        MAX_TOKENS_MINTED_BY_ADDRESS = _amount;
    }
    
    function setNewTokenPrice(uint256 _newPrice) external onlyOwner{
        TOKEN_UNIT_PRICE = _newPrice;
    }
    
    function getPresaleState()external view returns(bool){
        return isPresaleActive;
    }
    
  
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"string","name":"baseURI_","type":"string"},{"internalType":"address","name":"_adminwallets","type":"address"},{"internalType":"address","name":"_oracle","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256[][]","name":"_tokens","type":"uint256[][]"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":false,"internalType":"address","name":"receiver","type":"address"}],"name":"oracleRescued","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256[][]","name":"_tokens","type":"uint256[][]"}],"name":"val","type":"event"},{"inputs":[],"name":"ADAM_EVE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ASCENSION_APPLE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BAD_APPLE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"HUMAN_HERO","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"HUMAN_NEMESIS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"KING","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_MINTED_TO_TREASURY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_TOKENS_MINTED_BY_ADDRESS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"THE_UNKNOWN","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TOKEN_UNIT_PRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"adminWallets","outputs":[{"internalType":"contract IAdminWallets","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"appleClass","type":"uint256"},{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"airdropApples","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[][]","name":"treasuryRandom","type":"uint256[][]"}],"name":"airdropToTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"appleId","type":"uint256"}],"name":"ascensionAppleConsume","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"appleId","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"badAppleConsume","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"burnBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"consumedAscensionApples","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"exists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"forceOracle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAdminWalletsAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"getData","outputs":[{"internalType":"uint256[][]","name":"","type":"uint256[][]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMintedToTreasuryFinished","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOracleAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPresaleState","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"getTokenClass","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_classId","type":"uint256"}],"name":"getTokenClassCurrentSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_classId","type":"uint256"}],"name":"getTokenClassSupplyCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_classId","type":"uint256"}],"name":"getTokenClassVotingPower","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getTokensMintedAtPresale","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"isAscensionApple","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"isBadApple","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"isTokenClass","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"isTokenClassMintable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oracle","outputs":[{"internalType":"contract IOracle","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oracleForced","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"oracleRescue","outputs":[{"internalType":"uint256[][]","name":"","type":"uint256[][]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"root","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adminwallets","type":"address"}],"name":"setAdminWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseURI_","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMaxMintedTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMaxTokenMintedByAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPrice","type":"uint256"}],"name":"setNewTokenPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_oracle","type":"address"}],"name":"setOracle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_bool","type":"bool"}],"name":"setPresale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"setRescue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_root","type":"bytes32"}],"name":"setRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"setTokenClass","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toRescue","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"walletOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawAll","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405261010e600c55600d805460ff199081169091556004600f5561271b6011556132d360125567013fbe85edc900006014557f71eb2b2e3c82409bb024f8b681245d3eea25dcfd0dc7bbe701ee18cf1e8ecbb16015556016805490911660011790553480156200007157600080fd5b50604051620060c7380380620060c78339810160408190526200009491620010dd565b6200009f3362000c8b565b6000805460ff60a01b19169055600180558451620000c590600590602088019062000f3e565b508351620000db90600690602087019062000f3e565b508251620000f190600490602086019062000f3e565b50600280546001600160a01b03199081166001600160a01b038581169182178455600380549093169085161790915560017f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c781905560087fad67d757c34507f157cacfa2e3153e9f260a2244f30428821be7be64587ac55f557f6add646517a5b0f6793cd5891b7937d28a5b2981a5d88ebc7cd776088fea9041929092556113887f625b35f5e76f098dd7c3a05b10e2e5e78a4a01228d60c3b143426cdf36d264558190557f9321edea6e3be4df59a344b401fab4f888b556fda1f954244cff9204bad624b855610bb87f91238f30f286c9a1c6e901c4eda3b214c381c846e3dbe48df95c21488e8e1fdb556105dc7f13acf3fc7bed94759963f076d5d3443d88732026bffc8253bdf4a6e65f21ecc555600a60209081526107d07fbbc70db1b6c7afd11e79c0fb0051300458f1a3acb8ee9789d9b6b26c61ad9bc7556103e87fbff4442b8ed600beeb8e26b1279a0f0d14c6edfaec26d968ee13c86f7d4c2ba8557fa856840544dc26124927add067d799967eac11be13e14d82cc281ea46fa39759839055600460008181527fe1eb2b2161a492c07c5a334e48012567cba93ec021043f53c1955516a3c5a841949094556040805163a09ec3ef60e01b815290516200033f95949363a09ec3ef9383810193919291829003018186803b158015620002fc57600080fd5b505afa15801562000311573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003379190620010b8565b600062000cdb565b600160186000600260009054906101000a90046001600160a01b03166001600160a01b031663a09ec3ef6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200039457600080fd5b505afa158015620003a9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003cf9190620010b8565b6001600160a01b03166001600160a01b03168152602001908152602001600020600082825462000400919062001194565b90915550506002546040805163a09ec3ef60e01b815290516001600160a01b039092169163a09ec3ef91600480820192602092909190829003018186803b1580156200044b57600080fd5b505afa15801562000460573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004869190620010b8565b60008080527fd840e16649f6b9a295d95876f4633d3a6b10b55e8162971cf78afd886d5ec89b80546001600160a01b0319166001600160a01b039384161790557f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df8190556009602090815260017fec8156718a8372b1db44bb411437d0870f3e3790d4a08526d024ce1b0b668f6b5560025460408051636528961560e11b815290516200059695929092169263ca512c2a92600480840193829003018186803b1580156200055357600080fd5b505afa15801562000568573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200058e9190620010b8565b600162000cdb565b6200062e6000600260009054906101000a90046001600160a01b03166001600160a01b0316636c7162d26040518163ffffffff1660e01b815260040160206040518083038186803b158015620005eb57600080fd5b505afa15801562000600573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006269190620010b8565b600262000cdb565b620006c66000600260009054906101000a90046001600160a01b03166001600160a01b0316631d4e49eb6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200068357600080fd5b505afa15801562000698573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006be9190620010b8565b600362000cdb565b600160186000600260009054906101000a90046001600160a01b03166001600160a01b031663ca512c2a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200071b57600080fd5b505afa15801562000730573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007569190620010b8565b6001600160a01b03166001600160a01b03168152602001908152602001600020600082825462000787919062001194565b92505081905550600160186000600260009054906101000a90046001600160a01b03166001600160a01b0316636c7162d26040518163ffffffff1660e01b815260040160206040518083038186803b158015620007e357600080fd5b505afa158015620007f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200081e9190620010b8565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546200084f919062001194565b92505081905550600160186000600260009054906101000a90046001600160a01b03166001600160a01b0316631d4e49eb6040518163ffffffff1660e01b815260040160206040518083038186803b158015620008ab57600080fd5b505afa158015620008c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008e69190620010b8565b6001600160a01b03166001600160a01b03168152602001908152602001600020600082825462000917919062001194565b909155505060025460408051636528961560e11b815290516001600160a01b039092169163ca512c2a91600480820192602092909190829003018186803b1580156200096257600080fd5b505afa15801562000977573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200099d9190620010b8565b6001600052601760209081527ff36d6bc9642eb6fb6ee9998b09ce990566df752ab06e11f8de7ab633bbd57b8f80546001600160a01b0319166001600160a01b0393841617905560025460408051633638b16960e11b815290519190931692636c7162d2926004808301939192829003018186803b15801562000a1f57600080fd5b505afa15801562000a34573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a5a9190620010b8565b60026000819052601760209081527fc52df653038b2ad477d8d97f1ddd63cfd138847b628ad8a7b89c109c3f8782ca80546001600160a01b0319166001600160a01b03948516179055905460408051631d4e49eb60e01b815290519190931692631d4e49eb926004808301939192829003018186803b15801562000add57600080fd5b505afa15801562000af2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b189190620010b8565b6003600052601760209081527fd8b2bced50346359af71f91110b86cdf684b6ab1c6ca64a7583c044d5c24de5c80546001600160a01b0319166001600160a01b0393841617905560025460408051631d4e49eb60e01b815290519190931692631d4e49eb926004808301939192829003018186803b15801562000b9a57600080fd5b505afa15801562000baf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000bd59190620010b8565b600460005260176020527f68052a315987b3c92fe6f7df77391bc5a825cabe4950d34f36f8f4e8a6abcb4d80546001600160a01b0319166001600160a01b039290921691909117905560015b6005811162000c51576000818152600760205260409020600190558062000c488162001206565b91505062000c21565b5050600160005250506009602052505060037f92e85d02570a8092d09a6e3a57665bc3815a2699a4074001bf1ccabf660f5a36556200127c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03831662000d395762000d3381601d80546000838152601e60205260408120829055600182018355919091527f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f0155565b62000d5f565b816001600160a01b0316836001600160a01b03161462000d5f5762000d5f838262000dd6565b6001600160a01b03821662000d7e5762000d798162000e84565b505050565b826001600160a01b0316826001600160a01b03161462000d79576001600160a01b0391909116600090815260186020908152604080832054601b83528184208185528352818420859055938352601c90915290205550565b6001600160a01b03821660009081526018602052604081205462000dfd90600190620011af565b6000838152601c602052604090205490915080821462000e51576001600160a01b0384166000908152601b602090815260408083208584528252808320548484528184208190558352601c90915290208190555b506000918252601c602090815260408084208490556001600160a01b039094168352601b81528383209183525290812055565b601d5460009062000e9890600190620011af565b6000838152601e6020526040812054601d805493945090928490811062000ec35762000ec362001250565b9060005260206000200154905080601d838154811062000ee75762000ee762001250565b6000918252602080832090910192909255828152601e9091526040808220849055858252812055601d80548062000f225762000f226200123a565b6001900381819060005260206000200160009055905550505050565b82805462000f4c90620011c9565b90600052602060002090601f01602090048101928262000f70576000855562000fbb565b82601f1062000f8b57805160ff191683800117855562000fbb565b8280016001018555821562000fbb579182015b8281111562000fbb57825182559160200191906001019062000f9e565b5062000fc992915062000fcd565b5090565b5b8082111562000fc9576000815560010162000fce565b80516001600160a01b038116811462000ffc57600080fd5b919050565b600082601f8301126200101357600080fd5b81516001600160401b038082111562001030576200103062001266565b604051601f8301601f19908116603f011681019082821181831017156200105b576200105b62001266565b816040528381526020925086838588010111156200107857600080fd5b600091505b838210156200109c57858201830151818301840152908201906200107d565b83821115620010ae5760008385830101525b9695505050505050565b600060208284031215620010cb57600080fd5b620010d68262000fe4565b9392505050565b600080600080600060a08688031215620010f657600080fd5b85516001600160401b03808211156200110e57600080fd5b6200111c89838a0162001001565b965060208801519150808211156200113357600080fd5b6200114189838a0162001001565b955060408801519150808211156200115857600080fd5b50620011678882890162001001565b935050620011786060870162000fe4565b9150620011886080870162000fe4565b90509295509295909350565b60008219821115620011aa57620011aa62001224565b500190565b600082821015620011c457620011c462001224565b500390565b600181811c90821680620011de57607f821691505b602082108114156200120057634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156200121d576200121d62001224565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b614e3b806200128c6000396000f3fe6080604052600436106104315760003560e01c8063853828b611610229578063c235150d1161012e578063dab5f340116100b6578063e985e9c51161007a578063e985e9c514610d15578063ebf0c71714610d35578063f2a6556714610d4b578063f2fde38b14610d69578063f73841ce14610d8957600080fd5b8063dab5f34014610c92578063e355063214610cb2578063e367099314610cd5578063e643d86414610ceb578063e78c627e14610d0057600080fd5b8063cd3fe6fd116100fd578063cd3fe6fd14610bfe578063d41edb1814610c13578063d4556a0414610c33578063d5be08af14610c52578063d6a714d514610c7257600080fd5b8063c235150d14610b85578063c54e73e314610b9b578063c87b56dd14610bbb578063c955deba14610bdb57600080fd5b80639fa5fa88116101b1578063b18ca2be11610180578063b18ca2be14610af0578063b2dc5dc314610b10578063b7e2f80814610b30578063b88d4fde14610b45578063bd6a4b4e14610b6557600080fd5b80639fa5fa8814610a65578063a22cb46514610a85578063a714e56d14610aa5578063b18b78dd14610ad257600080fd5b80639168f7f9116101f85780639168f7f9146109d057806395d89b41146109f0578063979c7d6514610a055780639dc29fac14610a255780639e6a054314610a4557600080fd5b8063853828b61461095b57806389cba7f7146109705780638da5cb5b146109855780638fa2f9eb146109a357600080fd5b8063438b63001161033a578063641ce140116102c25780637adbf973116102865780637adbf973146108b35780637d8d1667146108d35780637dc0d1d0146108ed578063833891d31461090d57806383b215361461094357600080fd5b8063641ce140146107ff578063659e84901461081257806370a0823114610832578063715018a61461086857806378dd69f71461087d57600080fd5b80634f6ccce7116103095780634f6ccce71461074a57806355f804b31461076a5780635c975abb1461078a578063601ca23f146107a95780636352211e146107c957600080fd5b8063438b6300146106ba578063474e92b5146106e757806349fb340d146106fc5780634f558e791461071257600080fd5b806323b872dd116103bd5780632f745c591161038c5780632f745c591461060057806330f7d71b14610620578063350829331461064d57806338266b221461066d57806342842e0e1461069a57600080fd5b806323b872dd1461058b57806328412d70146105ab5780632872b052146105c05780632e1a7d4d146105e057600080fd5b8063095ea7b311610404578063095ea7b3146104e757806315ed1fd31461050757806318160ddd146105275780632153f88414610546578063217997951461055e57600080fd5b806301ffc9a714610436578063034601ec1461046b57806306fdde031461048d578063081812fc146104af575b600080fd5b34801561044257600080fd5b506104566104513660046146d7565b610da9565b60405190151581526020015b60405180910390f35b34801561047757600080fd5b5061048b6104863660046141ce565b610e16565b005b34801561049957600080fd5b506104a2611112565b60405161046291906149e7565b3480156104bb57600080fd5b506104cf6104ca3660046146be565b6111a4565b6040516001600160a01b039091168152602001610462565b3480156104f357600080fd5b5061048b6105023660046143c5565b611239565b34801561051357600080fd5b5061048b6105223660046146a3565b6113a5565b34801561053357600080fd5b50601d545b604051908152602001610462565b34801561055257600080fd5b50600d5460ff16610456565b34801561056a57600080fd5b506105386105793660046146be565b60009081526009602052604090205490565b34801561059757600080fd5b5061048b6105a6366004614262565b6113e2565b3480156105b757600080fd5b50610538600181565b3480156105cc57600080fd5b5061048b6105db3660046144a6565b611420565b3480156105ec57600080fd5b5061048b6105fb3660046146be565b611688565b34801561060c57600080fd5b5061053861061b3660046143c5565b61182a565b34801561062c57600080fd5b5061053861063b3660046146be565b60009081526007602052604090205490565b34801561065957600080fd5b5061048b610668366004614154565b6118ce565b34801561067957600080fd5b5061068d610688366004614154565b61191a565b604051610462919061498e565b3480156106a657600080fd5b5061048b6106b5366004614262565b611a0d565b3480156106c657600080fd5b506106da6106d5366004614154565b611a7c565b60405161046291906149d4565b3480156106f357600080fd5b50610538600081565b34801561070857600080fd5b50610538600f5481565b34801561071e57600080fd5b5061045661072d3660046146be565b6000908152601760205260409020546001600160a01b0316151590565b34801561075657600080fd5b506105386107653660046146be565b611b33565b34801561077657600080fd5b5061048b610785366004614711565b611bc6565b34801561079657600080fd5b50600054600160a01b900460ff16610456565b3480156107b557600080fd5b506002546104cf906001600160a01b031681565b3480156107d557600080fd5b506104cf6107e43660046146be565b6000908152601760205260409020546001600160a01b031690565b61048b61080d3660046143f1565b611c07565b34801561081e57600080fd5b5061068d61082d3660046146be565b6121b1565b34801561083e57600080fd5b5061053861084d366004614154565b6001600160a01b031660009081526018602052604090205490565b34801561087457600080fd5b5061048b612407565b34801561088957600080fd5b50610538610898366004614154565b6001600160a01b03166000908152600e602052604090205490565b3480156108bf57600080fd5b5061048b6108ce366004614154565b61243d565b3480156108df57600080fd5b50601f546104569060ff1681565b3480156108f957600080fd5b506003546104cf906001600160a01b031681565b34801561091957600080fd5b50610538610928366004614154565b6001600160a01b031660009081526013602052604090205490565b34801561094f57600080fd5b5060165460ff16610456565b34801561096757600080fd5b5061048b612489565b34801561097c57600080fd5b50610538600381565b34801561099157600080fd5b506000546001600160a01b03166104cf565b3480156109af57600080fd5b506105386109be3660046146be565b6000908152600a602052604090205490565b3480156109dc57600080fd5b506104566109eb3660046146be565b6125d0565b3480156109fc57600080fd5b506104a26125e8565b348015610a1157600080fd5b5061048b610a203660046146a3565b6125f7565b348015610a3157600080fd5b5061048b610a403660046143c5565b61263b565b348015610a5157600080fd5b5061048b610a603660046144db565b6127ff565b348015610a7157600080fd5b5061048b610a803660046146be565b612b6d565b348015610a9157600080fd5b5061048b610aa0366004614390565b612bb7565b348015610ab157600080fd5b50610538610ac03660046146be565b60009081526008602052604090205490565b348015610ade57600080fd5b506003546001600160a01b03166104cf565b348015610afc57600080fd5b5061048b610b0b3660046143c5565b612c8c565b348015610b1c57600080fd5b5061048b610b2b366004614341565b612da1565b348015610b3c57600080fd5b50610538600281565b348015610b5157600080fd5b5061048b610b603660046142a3565b613053565b348015610b7157600080fd5b5061048b610b803660046147a5565b6130e9565b348015610b9157600080fd5b50610538600c5481565b348015610ba757600080fd5b5061048b610bb63660046146a3565b6133b7565b348015610bc757600080fd5b506104a2610bd63660046146be565b6133f4565b348015610be757600080fd5b50610456610bf63660046146be565b61271a101590565b348015610c0a57600080fd5b50610538600481565b348015610c1f57600080fd5b5061048b610c2e3660046146be565b613534565b348015610c3f57600080fd5b50601f5461045690610100900460ff1681565b348015610c5e57600080fd5b50610456610c6d3660046146be565b613563565b348015610c7e57600080fd5b5061048b610c8d3660046146be565b61357b565b348015610c9e57600080fd5b5061048b610cad3660046146be565b6135aa565b348015610cbe57600080fd5b50610456610ccd3660046146be565b6138ae101590565b348015610ce157600080fd5b5061053860145481565b348015610cf757600080fd5b50610538600581565b348015610d0c57600080fd5b50610538600681565b348015610d2157600080fd5b50610456610d30366004614195565b6135d9565b348015610d4157600080fd5b5061053860155481565b348015610d5757600080fd5b506002546001600160a01b03166104cf565b348015610d7557600080fd5b5061048b610d84366004614154565b613607565b348015610d9557600080fd5b50610538610da43660046146be565b61369f565b60006001600160e01b0319821663780e9d6360e01b1480610dda57506001600160e01b03198216634aefe8ef60e01b145b80610df557506001600160e01b03198216635b5e139f60e01b145b80610e1057506301ffc9a760e01b6001600160e01b03198316145b92915050565b6000543390600160a01b900460ff1615610e4b5760405162461bcd60e51b8152600401610e4290614a4c565b60405180910390fd5b806001600160a01b0316856001600160a01b031614158015610e745750610e7285826135d9565b155b15610ee95760005b82811015610ee757816001600160a01b0316610eaf858584818110610ea357610ea3614d6e565b905060200201356111a4565b6001600160a01b031614610ed55760405162461bcd60e51b8152600401610e4290614b96565b80610edf81614cfd565b915050610e7c565b505b60005b8281101561110a57856001600160a01b031660176000868685818110610f1457610f14614d6e565b60209081029290920135835250810191909152604001600020546001600160a01b031614610f4157600080fd5b610f648686868685818110610f5857610f58614d6e565b905060200201356137d1565b6001600160a01b0386166000908152601860205260408120805460019290610f8d908490614c7f565b90915550506001600160a01b0385166000908152601860205260408120805460019290610fbb908490614c34565b9091555085905060176000868685818110610fd857610fd8614d6e565b90506020020135815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555083838281811061102357611023614d6e565b90506020020135856001600160a01b0316876001600160a01b0316600080516020614de683398151915260405160405180910390a460006019600086868581811061107057611070614d6e565b90506020020135815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055506110dc86868686858181106110c0576110c0614d6e565b90506020020135604051806020016040528060008152506138c2565b6110f85760405162461bcd60e51b8152600401610e42906149fa565b8061110281614cfd565b915050610eec565b505050505050565b60606005805461112190614cc2565b80601f016020809104026020016040519081016040528092919081815260200182805461114d90614cc2565b801561119a5780601f1061116f5761010080835404028352916020019161119a565b820191906000526020600020905b81548152906001019060200180831161117d57829003601f168201915b5050505050905090565b6000818152601760205260408120546001600160a01b031661121d5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610e42565b506000908152601960205260409020546001600160a01b031690565b6000818152601760205260409020546001600160a01b039081169083168114156112af5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610e42565b336001600160a01b03821614806112cb57506112cb81336135d9565b61133d5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610e42565b600082815260196020908152604080832080546001600160a01b0319166001600160a01b038881169182179092556017909352818420549151869492909116917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6000546001600160a01b031633146113cf5760405162461bcd60e51b8152600401610e4290614ae3565b601f805460ff1916911515919091179055565b6000543390600160a01b900460ff161561140e5760405162461bcd60e51b8152600401610e4290614a4c565b61141a848483856139d0565b50505050565b3361142a83613563565b6114855760405162461bcd60e51b815260206004820152602660248201527f4572726f723a20746f6b656e2070726f7669646564206973206e6f7420626164604482015265206170706c6560d01b6064820152608401610e42565b6114918261271a101590565b6114e75760405162461bcd60e51b815260206004820152602160248201527f4572726f723a20746f6b656e2070726f766964656420697320616e206170706c6044820152606560f81b6064820152608401610e42565b6000838152601760205260409020546001600160a01b03828116911614806115285750806001600160a01b031661151d846111a4565b6001600160a01b0316145b80611538575061153884826135d9565b6115545760405162461bcd60e51b8152600401610e4290614b96565b61155e848461263b565b611568848361263b565b60056000527f91238f30f286c9a1c6e901c4eda3b214c381c846e3dbe48df95c21488e8e1fdb546009602052600080516020614dc6833981519152546115af906001614c34565b11156115cd5760405162461bcd60e51b8152600401610e4290614a8e565b600560009081526009602052600080516020614dc6833981519152546011546115f69190614c34565b9050611604600086836137d1565b600081815260176020908152604080832080546001600160a01b0319166001600160a01b038a1690811790915583526018909152812080546001929061164b908490614c34565b9091555050600560009081526009602052600080516020614dc683398151915280546001929061167c908490614c34565b90915550505050505050565b6000546001600160a01b031633146116b25760405162461bcd60e51b8152600401610e4290614ae3565b600260015414156116d55760405162461bcd60e51b8152600401610e4290614b5f565b600260015547806117185760405162461bcd60e51b815260206004820152600d60248201526c3130b630b731b29034b990181760991b6044820152606401610e42565b8181116117725760405162461bcd60e51b815260206004820152602260248201527f62616c616e6365206d757374206265207375706572696f7220746f20616d6f756044820152611b9d60f21b6064820152608401610e42565b60408051600080825260208201909252339084906040516117939190614906565b60006040518083038185875af1925050503d80600081146117d0576040519150601f19603f3d011682016040523d82523d6000602084013e6117d5565b606091505b50509050806118215760405162461bcd60e51b81526020600482015260186024820152773bb4ba34323930bb9d103a3930b739b332b91032b93937b960411b6044820152606401610e42565b50506001805550565b6001600160a01b03821660009081526018602052604081205482106118a55760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610e42565b506001600160a01b03919091166000908152601b60209081526040808320938352929052205490565b6000546001600160a01b031633146118f85760405162461bcd60e51b8152600401610e4290614ae3565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b604080516002808252606082810190935260009190816020015b6060815260200190600190039081611934579050509050600061195684611a7c565b6040805160028082526060820183529293506000929091602083019080368337019050509050611985601d5490565b8160008151811061199857611998614d6e565b602002602001018181525050601454816001815181106119ba576119ba614d6e565b60200260200101818152505081836000815181106119da576119da614d6e565b602002602001018190525080836001815181106119f9576119f9614d6e565b602090810291909101015250909392505050565b6000543390600160a01b900460ff1615611a395760405162461bcd60e51b8152600401610e4290614a4c565b611a45848483856139d0565b611a60848484604051806020016040528060008152506138c2565b61141a5760405162461bcd60e51b8152600401610e42906149fa565b60606000611a9f836001600160a01b031660009081526018602052604090205490565b90506000816001600160401b03811115611abb57611abb614d84565b604051908082528060200260200182016040528015611ae4578160200160208202803683370190505b50905060005b82811015611b2b57611afc858261182a565b828281518110611b0e57611b0e614d6e565b602090810291909101015280611b2381614cfd565b915050611aea565b509392505050565b6000611b3e601d5490565b8210611ba15760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610e42565b601d8281548110611bb457611bb4614d6e565b90600052602060002001549050919050565b6000546001600160a01b03163314611bf05760405162461bcd60e51b8152600401610e4290614ae3565b8051611c03906004906020840190614039565b5050565b60026001541415611c2a5760405162461bcd60e51b8152600401610e4290614b5f565b60026001556014543390611c3f908490614c60565b341015611ca25760405162461bcd60e51b815260206004820152602b60248201527f4d616b65207375726520796f752063616e206166666f726420302e303920657460448201526a34103832b9103a37b5b2b760a91b6064820152608401610e42565b6001600160a01b038416611cf85760405162461bcd60e51b815260206004820152601f60248201527f4572726f723a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610e42565b600054600160a01b900460ff1615611d225760405162461bcd60e51b8152600401610e4290614a4c565b600d5460ff161515600114611d985760405162461bcd60e51b815260206004820152603660248201527f4572726f723a205761697420756e74696c2061697264726f7070696e6720746f60448201527508151c99585cdd5c9e481a185cc8199a5b9a5cda195960521b6064820152608401610e42565b60165460ff16151560011415611eda576001600160a01b0381166000908152600e6020526040902054600390611dcf908590614c34565b1115611e335760405162461bcd60e51b815260206004820152602d60248201527f4572726f723a20796f752063616e6e6f74206d696e74206d6f726520746f6b6560448201526c6e732061742070726573616c6560981b6064820152608401610e42565b6015546040516bffffffffffffffffffffffff19606084901b166020820152611e7691849160340160405160208183030381529060405280519060200120613b28565b611ed55760405162461bcd60e51b815260206004820152602a60248201527f796f7520617265206e6f7420616c6c6f77656420746f206d696e7420647572696044820152696e672070726573616c6560b01b6064820152608401610e42565b611f5a565b600f546001600160a01b038216600090815260106020526040902054611f01908590614c34565b1115611f5a5760405162461bcd60e51b815260206004820152602260248201527f4572726f723a20796f752063616e6e6f74206d696e74206d6f726520746f6b656044820152616e7360f01b6064820152608401610e42565b6000611f6584613b3e565b9050600081600081518110611f7c57611f7c614d6e565b60200260200101519050600082600181518110611f9b57611f9b614d6e565b6020026020010151905060005b8681101561213257611fd5600089858481518110611fc857611fc8614d6e565b60200260200101516137d1565b8760176000858481518110611fec57611fec614d6e565b6020908102919091018101518252818101929092526040908101600090812080546001600160a01b0319166001600160a01b03958616179055928b16835260189091528120805460019290612042908490614c34565b9250508190555081818151811061205b5761205b614d6e565b60200260200101516007600085848151811061207957612079614d6e565b60200260200101518152602001908152602001600020819055506001600960008484815181106120ab576120ab614d6e565b6020026020010151815260200190815260200160002060008282546120d09190614c34565b925050819055508281815181106120e9576120e9614d6e565b6020026020010151886001600160a01b031660006001600160a01b0316600080516020614de683398151915260405160405180910390a48061212a81614cfd565b915050611fa8565b5060165460ff16151560011415612176576001600160a01b0384166000908152600e60205260408120805488929061216b908490614c34565b909155506121a49050565b6001600160a01b0384166000908152601060205260408120805488929061219e908490614c34565b90915550505b5050600180555050505050565b604080516002808252606082810190935260009190816020015b60608152602001906001900390816121cb5790505090506000836001600160401b038111156121fc576121fc614d84565b604051908082528060200260200182016040528015612225578160200160208202803683370190505b5090506000846001600160401b0381111561224257612242614d84565b60405190808252806020026020018201604052801561226b578160200160208202803683370190505b5090506000808061227d600143614c7f565b4090505b8783146123bd57600061271b4283336040805160208101949094528301919091526bffffffffffffffffffffffff19606091821b1690820152607481018590526094016040516020818303038152906040528051906020012060001c6122e79190614d18565b90506000805b8581101561232d5787818151811061230757612307614d6e565b602002602001015183141561231b57600191505b8061232581614cfd565b9150506122ed565b506000828152601760205260409020546001600160a01b0316158015612351575080155b156123a9578187868151811061236957612369614d6e565b60200260200101818152505061237e8261369f565b86868151811061239057612390614d6e565b60209081029190910101526123a6600186614c34565b94505b6123b4600185614c34565b93505050612281565b84866000815181106123d1576123d1614d6e565b602002602001018190525083866001815181106123f0576123f0614d6e565b602090810291909101015250939695505050505050565b6000546001600160a01b031633146124315760405162461bcd60e51b8152600401610e4290614ae3565b61243b6000613cee565b565b6000546001600160a01b031633146124675760405162461bcd60e51b8152600401610e4290614ae3565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146124b35760405162461bcd60e51b8152600401610e4290614ae3565b600260015414156124d65760405162461bcd60e51b8152600401610e4290614b5f565b600260015547806125195760405162461bcd60e51b815260206004820152600d60248201526c3130b630b731b29034b990181760991b6044820152606401610e42565b604080516000808252602082019092523390839060405161253a9190614906565b60006040518083038185875af1925050503d8060008114612577576040519150601f19603f3d011682016040523d82523d6000602084013e61257c565b606091505b50509050806125c85760405162461bcd60e51b81526020600482015260186024820152773bb4ba34323930bb9d103a3930b739b332b91032b93937b960411b6044820152606401610e42565b505060018055565b600061271b8210158015610e105750506132d2101590565b60606006805461112190614cc2565b6000546001600160a01b031633146126215760405162461bcd60e51b8152600401610e4290614ae3565b601f80549115156101000261ff0019909216919091179055565b6000543390600160a01b900460ff16156126675760405162461bcd60e51b8152600401610e4290614a4c565b806001600160a01b0316836001600160a01b031614806126a05750806001600160a01b0316612695836111a4565b6001600160a01b0316145b806126b057506126b083826135d9565b6126cc5760405162461bcd60e51b8152600401610e4290614b96565b6001600160a01b03831661272c5760405162461bcd60e51b815260206004820152602160248201527f4572726f723a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610e42565b6000828152601760205260409020546001600160a01b038481169116146127655760405162461bcd60e51b8152600401610e4290614b18565b612771836000846137d1565b600082815260176020908152604080832080546001600160a01b03191690556001600160a01b0386168352601890915281208054600192906127b4908490614c7f565b909155505060405182906000906001600160a01b03861690600080516020614de6833981519152908390a450600090815260196020526040902080546001600160a01b031916905550565b6000546001600160a01b031633146128295760405162461bcd60e51b8152600401610e4290614ae3565b6002546040805163a09ec3ef60e01b815290516000926001600160a01b03169163a09ec3ef916004808301926020929190829003018186803b15801561286e57600080fd5b505afa158015612882573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128a69190614178565b600054909150600160a01b900460ff16156128d35760405162461bcd60e51b8152600401610e4290614a4c565b6000826000815181106128e8576128e8614d6e565b6020026020010151905060008360018151811061290757612907614d6e565b60200260200101519050815181511461291f57600080fd5b8151600c54600b54612932908390614c34565b11156129a65760405162461bcd60e51b815260206004820152603b60248201527f4572726f723a20796f752061726520657863656564696e6720746865206d617860448201527f2061697264726f7020616d6f756e7420746f20547265617375727900000000006064820152608401610e42565b60005b8351811015612b34576129ca600086868481518110611fc857611fc8614d6e565b6001600160a01b03851660009081526018602052604081208054600192906129f3908490614c34565b925050819055508460176000868481518110612a1157612a11614d6e565b6020026020010151815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550828181518110612a5d57612a5d614d6e565b602002602001015160076000868481518110612a7b57612a7b614d6e565b6020026020010151815260200190815260200160002081905550600160096000858481518110612aad57612aad614d6e565b602002602001015181526020019081526020016000206000828254612ad29190614c34565b92505081905550838181518110612aeb57612aeb614d6e565b6020026020010151856001600160a01b031660006001600160a01b0316600080516020614de683398151915260405160405180910390a480612b2c81614cfd565b9150506129a9565b5080600b6000828254612b479190614c34565b9091555050600c54600b541415612b6657600d805460ff191660011790555b5050505050565b6000546001600160a01b03163314612b975760405162461bcd60e51b8152600401610e4290614ae3565b600c819055600b54811415612bb457600d805460ff191660011790555b50565b336001600160a01b0383161415612c205760405162461bcd60e51b815260206004820152602760248201527f4572726f723a2073657474696e6720617070726f76616c20737461747573206660448201526637b91039b2b63360c91b6064820152608401610e42565b336000818152601a602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b33612c96826125d0565b612cf75760405162461bcd60e51b815260206004820152602c60248201527f4572726f723a20746f6b656e2070726f7669646564206973206e6f742061736360448201526b656e73696f6e206170706c6560a01b6064820152608401610e42565b6000828152601760205260409020546001600160a01b0382811691161480612d385750806001600160a01b0316612d2d836111a4565b6001600160a01b0316145b80612d485750612d4883826135d9565b612d645760405162461bcd60e51b8152600401610e4290614b96565b612d6e838361263b565b6001600160a01b0383166000908152601360205260408120805460019290612d97908490614c34565b9091555050505050565b6000543390600160a01b900460ff1615612dcd5760405162461bcd60e51b8152600401610e4290614a4c565b806001600160a01b0316836001600160a01b031614158015612df65750612df483826135d9565b155b15612e6d5760005b8251811015612e6b57816001600160a01b0316612e33848381518110612e2657612e26614d6e565b60200260200101516111a4565b6001600160a01b031614612e595760405162461bcd60e51b8152600401610e4290614b96565b80612e6381614cfd565b915050612dfe565b505b60005b8251811015612eec57836001600160a01b031660176000858481518110612e9957612e99614d6e565b6020908102919091018101518252810191909152604001600020546001600160a01b031614612eda5760405162461bcd60e51b8152600401610e4290614b18565b80612ee481614cfd565b915050612e70565b5060005b8251811015612fe157612f11846000858481518110611fc857611fc8614d6e565b600060176000858481518110612f2957612f29614d6e565b6020908102919091018101518252818101929092526040908101600090812080546001600160a01b0319166001600160a01b03958616179055928716835260189091528120805460019290612f7f908490614c7f565b92505081905550828181518110612f9857612f98614d6e565b602002602001015160006001600160a01b0316856001600160a01b0316600080516020614de683398151915260405160405180910390a480612fd981614cfd565b915050612ef0565b5060005b825181101561141a5760006019600085848151811061300657613006614d6e565b6020026020010151815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550808061304b90614cfd565b915050612fe5565b6000543390600160a01b900460ff161561307f5760405162461bcd60e51b8152600401610e4290614a4c565b61308b868683876139d0565b6130cd86868686868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506138c292505050565b61110a5760405162461bcd60e51b8152600401610e42906149fa565b6000546001600160a01b031633146131135760405162461bcd60e51b8152600401610e4290614ae3565b828151146131635760405162461bcd60e51b815260206004820152601e60248201527f616d6f756e74206e6f74206567616c20746f206c697374206c656e67746800006044820152606401610e42565b60058214806131725750600682145b6131cd5760405162461bcd60e51b815260206004820152602660248201527f4572726f723a2054686520746f6b656e20636c617373206973206e6f7420616e604482015265206170706c6560d01b6064820152608401610e42565b6000828152600860209081526040808320546009909252909120546131f3908590614c34565b11156132115760405162461bcd60e51b8152600401610e4290614a8e565b6000600583141561324a5760056000526009602052600080516020614dc6833981519152546011546132439190614c34565b9050613286565b600660005260096020527fbb6daa0c283751197dfdc76590680f9005e97d6f23870deb1164ab60b28b9f5f546012546132839190614c34565b90505b60005b825181101561338d57600061329e8284614c34565b90506132c560008584815181106132b7576132b7614d6e565b6020026020010151836137d1565b8382815181106132d7576132d7614d6e565b60200260200101516017600083815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060016018600086858151811061332e5761332e614d6e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060008282546133659190614c34565b909155505060009081526007602052604090208490558061338581614cfd565b915050613289565b50600083815260096020526040812080548692906133ac908490614c34565b909155505050505050565b6000546001600160a01b031633146133e15760405162461bcd60e51b8152600401610e4290614ae3565b6016805460ff1916911515919091179055565b6000818152601760205260409020546060906001600160a01b03166134735760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610e42565b60006004805461348290614cc2565b80601f01602080910402602001604051908101604052809291908181526020018280546134ae90614cc2565b80156134fb5780601f106134d0576101008083540402835291602001916134fb565b820191906000526020600020905b8154815290600101906020018083116134de57829003601f168201915b505050505090508061350c84613d3e565b60405160200161351d929190614922565b604051602081830303815290604052915050919050565b6000546001600160a01b0316331461355e5760405162461bcd60e51b8152600401610e4290614ae3565b601455565b60006132d38210158015610e105750506138ae101590565b6000546001600160a01b031633146135a55760405162461bcd60e51b8152600401610e4290614ae3565b600f55565b6000546001600160a01b031633146135d45760405162461bcd60e51b8152600401610e4290614ae3565b601555565b6001600160a01b039182166000908152601a6020908152604080832093909416825291909152205460ff1690565b6000546001600160a01b031633146136315760405162461bcd60e51b8152600401610e4290614ae3565b6001600160a01b0381166136965760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610e42565b612bb481613cee565b6000816136ae57506000919050565b600182101580156136c0575060088211155b156136cd57506001919050565b8160091480156136dd575081600a145b156136ea57506002919050565b600b82101580156136fd57506113928211155b1561370a57506003919050565b611393821015801561371e575061271a8211155b1561372b57506004919050565b61271b821015801561373f57506132d28211155b1561374c57506005919050565b6132d3821015801561376057506138ae8211155b1561376d57506006919050565b60405162461bcd60e51b815260206004820152602e60248201527f5468697320494420646f6573206e6f742062656c6f6e6720746f20612076616c60448201526d696420746f6b656e20636c61737360901b6064820152608401610e42565b919050565b6001600160a01b03831661382c5761382781601d80546000838152601e60205260408120829055600182018355919091527f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f0155565b61384f565b816001600160a01b0316836001600160a01b03161461384f5761384f8382613e3b565b6001600160a01b03821661386b5761386681613ee6565b505050565b826001600160a01b0316826001600160a01b031614613866576001600160a01b0391909116600090815260186020908152604080832054601b83528184208185528352818420859055938352601c90915290205550565b60006001600160a01b0384163b156139c457604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290613906903390899088908890600401614951565b602060405180830381600087803b15801561392057600080fd5b505af1925050508015613950575060408051601f3d908101601f1916820190925261394d918101906146f4565b60015b6139aa573d80801561397e576040519150601f19603f3d011682016040523d82523d6000602084013e613983565b606091505b5080516139a25760405162461bcd60e51b8152600401610e42906149fa565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506139c8565b5060015b949350505050565b6000818152601760205260409020546001600160a01b038581169116146139f657600080fd5b816001600160a01b0316846001600160a01b03161480613a2f5750816001600160a01b0316613a24826111a4565b6001600160a01b0316145b80613a3f5750613a3f84836135d9565b613a5b5760405162461bcd60e51b8152600401610e4290614b96565b613a668484836137d1565b6001600160a01b0384166000908152601860205260408120805460019290613a8f908490614c7f565b90915550506001600160a01b0383166000908152601860205260408120805460019290613abd908490614c34565b909155505060008181526017602052604080822080546001600160a01b0319166001600160a01b038781169182179092559151849391881691600080516020614de683398151915291a4600090815260196020526040902080546001600160a01b0319169055505050565b600082613b358584613f95565b14949350505050565b601f5460609060ff16158015613b5c5750601f54610100900460ff16155b15613c3857600360009054906101000a90046001600160a01b03166001600160a01b0316634fdc84dc6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613bb157600080fd5b505af1925050508015613be657506040513d6000823e601f3d908101601f19168201604052613be39190810190614592565b60015b610e10576000613bf5836121b1565b90507fc36a191bf96c0e51ac78765045a165404afd7594ad423922b0e84d0ee2f39afa814233604051613c2a939291906149a1565b60405180910390a192915050565b601f5460ff16158015613c525750601f54610100900460ff165b15613ce357600360009054906101000a90046001600160a01b03166001600160a01b0316634fdc84dc6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613ca757600080fd5b505af1158015613cbb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e109190810190614592565b6000613bf5836121b1565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b606081613d625750506040805180820190915260018152600360fc1b602082015290565b8160005b8115613d8c5780613d7681614cfd565b9150613d859050600a83614c4c565b9150613d66565b6000816001600160401b03811115613da657613da6614d84565b6040519080825280601f01601f191660200182016040528015613dd0576020820181803683370190505b5090505b84156139c857613de5600183614c7f565b9150613df2600a86614d18565b613dfd906030614c34565b60f81b818381518110613e1257613e12614d6e565b60200101906001600160f81b031916908160001a905350613e34600a86614c4c565b9450613dd4565b6001600160a01b038216600090815260186020526040812054613e6090600190614c7f565b6000838152601c6020526040902054909150808214613eb3576001600160a01b0384166000908152601b602090815260408083208584528252808320548484528184208190558352601c90915290208190555b506000918252601c602090815260408084208490556001600160a01b039094168352601b81528383209183525290812055565b601d54600090613ef890600190614c7f565b6000838152601e6020526040812054601d8054939450909284908110613f2057613f20614d6e565b9060005260206000200154905080601d8381548110613f4157613f41614d6e565b6000918252602080832090910192909255828152601e9091526040808220849055858252812055601d805480613f7957613f79614d58565b6001900381819060005260206000200160009055905550505050565b600081815b8451811015611b2b576000858281518110613fb757613fb7614d6e565b60200260200101519050808311613ff9576040805160208101859052908101829052606001604051602081830303815290604052805190602001209250614026565b60408051602081018390529081018490526060016040516020818303038152906040528051906020012092505b508061403181614cfd565b915050613f9a565b82805461404590614cc2565b90600052602060002090601f01602090048101928261406757600085556140ad565b82601f1061408057805160ff19168380011785556140ad565b828001600101855582156140ad579182015b828111156140ad578251825591602001919060010190614092565b506140b99291506140bd565b5090565b5b808211156140b957600081556001016140be565b600082601f8301126140e357600080fd5b813560206140f86140f383614c11565b614be1565b80838252828201915082860187848660051b890101111561411857600080fd5b60005b858110156141375781358452928401929084019060010161411b565b5090979650505050505050565b803580151581146137cc57600080fd5b60006020828403121561416657600080fd5b813561417181614d9a565b9392505050565b60006020828403121561418a57600080fd5b815161417181614d9a565b600080604083850312156141a857600080fd5b82356141b381614d9a565b915060208301356141c381614d9a565b809150509250929050565b600080600080606085870312156141e457600080fd5b84356141ef81614d9a565b935060208501356141ff81614d9a565b925060408501356001600160401b038082111561421b57600080fd5b818701915087601f83011261422f57600080fd5b81358181111561423e57600080fd5b8860208260051b850101111561425357600080fd5b95989497505060200194505050565b60008060006060848603121561427757600080fd5b833561428281614d9a565b9250602084013561429281614d9a565b929592945050506040919091013590565b6000806000806000608086880312156142bb57600080fd5b85356142c681614d9a565b945060208601356142d681614d9a565b93506040860135925060608601356001600160401b03808211156142f957600080fd5b818801915088601f83011261430d57600080fd5b81358181111561431c57600080fd5b89602082850101111561432e57600080fd5b9699959850939650602001949392505050565b6000806040838503121561435457600080fd5b823561435f81614d9a565b915060208301356001600160401b0381111561437a57600080fd5b614386858286016140d2565b9150509250929050565b600080604083850312156143a357600080fd5b82356143ae81614d9a565b91506143bc60208401614144565b90509250929050565b600080604083850312156143d857600080fd5b82356143e381614d9a565b946020939093013593505050565b60008060006060848603121561440657600080fd5b833561441181614d9a565b9250602084810135925060408501356001600160401b0381111561443457600080fd5b8501601f8101871361444557600080fd5b80356144536140f382614c11565b8082825284820191508484018a868560051b870101111561447357600080fd5b600094505b83851015614496578035835260019490940193918501918501614478565b5080955050505050509250925092565b6000806000606084860312156144bb57600080fd5b83356144c681614d9a565b95602085013595506040909401359392505050565b600060208083850312156144ee57600080fd5b82356001600160401b038082111561450557600080fd5b818501915085601f83011261451957600080fd5b81356145276140f382614c11565b80828252858201915085850189878560051b880101111561454757600080fd5b6000805b8581101561458257823587811115614561578283fd5b61456f8d8b838c01016140d2565b865250938801939188019160010161454b565b50919a9950505050505050505050565b600060208083850312156145a557600080fd5b82516001600160401b03808211156145bc57600080fd5b818501915085601f8301126145d057600080fd5b81516145de6140f382614c11565b80828252858201915085850189878560051b88010111156145fe57600080fd5b60005b848110156146945781518681111561461857600080fd5b8701603f81018c1361462957600080fd5b888101516146396140f382614c11565b808282528b82019150604084018f60408560051b870101111561465b57600080fd5b600094505b8385101561467e578051835260019490940193918c01918c01614660565b5087525050509287019290870190600101614601565b50909998505050505050505050565b6000602082840312156146b557600080fd5b61417182614144565b6000602082840312156146d057600080fd5b5035919050565b6000602082840312156146e957600080fd5b813561417181614daf565b60006020828403121561470657600080fd5b815161417181614daf565b6000602080838503121561472457600080fd5b82356001600160401b038082111561473b57600080fd5b818501915085601f83011261474f57600080fd5b81358181111561476157614761614d84565b614773601f8201601f19168501614be1565b9150808252868482850101111561478957600080fd5b8084840185840137600090820190930192909252509392505050565b6000806000606084860312156147ba57600080fd5b83359250602080850135925060408501356001600160401b038111156147df57600080fd5b8501601f810187136147f057600080fd5b80356147fe6140f382614c11565b8082825284820191508484018a868560051b870101111561481e57600080fd5b600094505b8385101561449657803561483681614d9a565b835260019490940193918501918501614823565b600081518084526020808501808196508360051b8101915082860160005b8581101561489257828403895261488084835161489f565b98850198935090840190600101614868565b5091979650505050505050565b600081518084526020808501945080840160005b838110156148cf578151875295820195908201906001016148b3565b509495945050505050565b600081518084526148f2816020860160208601614c96565b601f01601f19169290920160200192915050565b60008251614918818460208701614c96565b9190910192915050565b60008351614934818460208801614c96565b835190830190614948818360208801614c96565b01949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090614984908301846148da565b9695505050505050565b602081526000614171602083018461484a565b6060815260006149b4606083018661484a565b6020830194909452506001600160a01b0391909116604090910152919050565b602081526000614171602083018461489f565b60208152600061417160208301846148da565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60208082526022908201527f4572726f723a20746f6b656e207472616e73666572207768696c652070617573604082015261195960f21b606082015260800190565b60208082526035908201527f4572726f723a20596f75206578636565642074686520737570706c792063617060408201527420666f722074686973206170706c6520636c61737360581b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526027908201527f4572726f723a206163636f756e74206973206e6f74206f776e6572206f6620746040820152661bdad95b881a5960ca1b606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252602b908201527f4572726f723a2063616c6c6572206973206e656974686572206f776e6572206e60408201526a1bdc88185c1c1c9bdd995960aa1b606082015260800190565b604051601f8201601f191681016001600160401b0381118282101715614c0957614c09614d84565b604052919050565b60006001600160401b03821115614c2a57614c2a614d84565b5060051b60200190565b60008219821115614c4757614c47614d2c565b500190565b600082614c5b57614c5b614d42565b500490565b6000816000190483118215151615614c7a57614c7a614d2c565b500290565b600082821015614c9157614c91614d2c565b500390565b60005b83811015614cb1578181015183820152602001614c99565b8381111561141a5750506000910152565b600181811c90821680614cd657607f821691505b60208210811415614cf757634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415614d1157614d11614d2c565b5060010190565b600082614d2757614d27614d42565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114612bb457600080fd5b6001600160e01b031981168114612bb457600080fdfe74b05292d1d4b2b48b65261b07099d24244bcb069f138d9a6bfdcf776becac4cddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220f6962069aa3fa14caeae5ea33523e05f6f991abca9f2659833dfad42dc9f28fd64736f6c6343000807003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000002ed8143a3684df0167a0030f61bb58d9e5a16cb60000000000000000000000004ee58496dc8eba4811709f51a90a1cb4797c27cc000000000000000000000000000000000000000000000000000000000000000e446976696e6520416e617263687900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024441000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005168747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066732f516d65654c33357436344e6d6b37514343727465396e32776e3244394d344c6567596d73486f45695a536a5736632f000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106104315760003560e01c8063853828b611610229578063c235150d1161012e578063dab5f340116100b6578063e985e9c51161007a578063e985e9c514610d15578063ebf0c71714610d35578063f2a6556714610d4b578063f2fde38b14610d69578063f73841ce14610d8957600080fd5b8063dab5f34014610c92578063e355063214610cb2578063e367099314610cd5578063e643d86414610ceb578063e78c627e14610d0057600080fd5b8063cd3fe6fd116100fd578063cd3fe6fd14610bfe578063d41edb1814610c13578063d4556a0414610c33578063d5be08af14610c52578063d6a714d514610c7257600080fd5b8063c235150d14610b85578063c54e73e314610b9b578063c87b56dd14610bbb578063c955deba14610bdb57600080fd5b80639fa5fa88116101b1578063b18ca2be11610180578063b18ca2be14610af0578063b2dc5dc314610b10578063b7e2f80814610b30578063b88d4fde14610b45578063bd6a4b4e14610b6557600080fd5b80639fa5fa8814610a65578063a22cb46514610a85578063a714e56d14610aa5578063b18b78dd14610ad257600080fd5b80639168f7f9116101f85780639168f7f9146109d057806395d89b41146109f0578063979c7d6514610a055780639dc29fac14610a255780639e6a054314610a4557600080fd5b8063853828b61461095b57806389cba7f7146109705780638da5cb5b146109855780638fa2f9eb146109a357600080fd5b8063438b63001161033a578063641ce140116102c25780637adbf973116102865780637adbf973146108b35780637d8d1667146108d35780637dc0d1d0146108ed578063833891d31461090d57806383b215361461094357600080fd5b8063641ce140146107ff578063659e84901461081257806370a0823114610832578063715018a61461086857806378dd69f71461087d57600080fd5b80634f6ccce7116103095780634f6ccce71461074a57806355f804b31461076a5780635c975abb1461078a578063601ca23f146107a95780636352211e146107c957600080fd5b8063438b6300146106ba578063474e92b5146106e757806349fb340d146106fc5780634f558e791461071257600080fd5b806323b872dd116103bd5780632f745c591161038c5780632f745c591461060057806330f7d71b14610620578063350829331461064d57806338266b221461066d57806342842e0e1461069a57600080fd5b806323b872dd1461058b57806328412d70146105ab5780632872b052146105c05780632e1a7d4d146105e057600080fd5b8063095ea7b311610404578063095ea7b3146104e757806315ed1fd31461050757806318160ddd146105275780632153f88414610546578063217997951461055e57600080fd5b806301ffc9a714610436578063034601ec1461046b57806306fdde031461048d578063081812fc146104af575b600080fd5b34801561044257600080fd5b506104566104513660046146d7565b610da9565b60405190151581526020015b60405180910390f35b34801561047757600080fd5b5061048b6104863660046141ce565b610e16565b005b34801561049957600080fd5b506104a2611112565b60405161046291906149e7565b3480156104bb57600080fd5b506104cf6104ca3660046146be565b6111a4565b6040516001600160a01b039091168152602001610462565b3480156104f357600080fd5b5061048b6105023660046143c5565b611239565b34801561051357600080fd5b5061048b6105223660046146a3565b6113a5565b34801561053357600080fd5b50601d545b604051908152602001610462565b34801561055257600080fd5b50600d5460ff16610456565b34801561056a57600080fd5b506105386105793660046146be565b60009081526009602052604090205490565b34801561059757600080fd5b5061048b6105a6366004614262565b6113e2565b3480156105b757600080fd5b50610538600181565b3480156105cc57600080fd5b5061048b6105db3660046144a6565b611420565b3480156105ec57600080fd5b5061048b6105fb3660046146be565b611688565b34801561060c57600080fd5b5061053861061b3660046143c5565b61182a565b34801561062c57600080fd5b5061053861063b3660046146be565b60009081526007602052604090205490565b34801561065957600080fd5b5061048b610668366004614154565b6118ce565b34801561067957600080fd5b5061068d610688366004614154565b61191a565b604051610462919061498e565b3480156106a657600080fd5b5061048b6106b5366004614262565b611a0d565b3480156106c657600080fd5b506106da6106d5366004614154565b611a7c565b60405161046291906149d4565b3480156106f357600080fd5b50610538600081565b34801561070857600080fd5b50610538600f5481565b34801561071e57600080fd5b5061045661072d3660046146be565b6000908152601760205260409020546001600160a01b0316151590565b34801561075657600080fd5b506105386107653660046146be565b611b33565b34801561077657600080fd5b5061048b610785366004614711565b611bc6565b34801561079657600080fd5b50600054600160a01b900460ff16610456565b3480156107b557600080fd5b506002546104cf906001600160a01b031681565b3480156107d557600080fd5b506104cf6107e43660046146be565b6000908152601760205260409020546001600160a01b031690565b61048b61080d3660046143f1565b611c07565b34801561081e57600080fd5b5061068d61082d3660046146be565b6121b1565b34801561083e57600080fd5b5061053861084d366004614154565b6001600160a01b031660009081526018602052604090205490565b34801561087457600080fd5b5061048b612407565b34801561088957600080fd5b50610538610898366004614154565b6001600160a01b03166000908152600e602052604090205490565b3480156108bf57600080fd5b5061048b6108ce366004614154565b61243d565b3480156108df57600080fd5b50601f546104569060ff1681565b3480156108f957600080fd5b506003546104cf906001600160a01b031681565b34801561091957600080fd5b50610538610928366004614154565b6001600160a01b031660009081526013602052604090205490565b34801561094f57600080fd5b5060165460ff16610456565b34801561096757600080fd5b5061048b612489565b34801561097c57600080fd5b50610538600381565b34801561099157600080fd5b506000546001600160a01b03166104cf565b3480156109af57600080fd5b506105386109be3660046146be565b6000908152600a602052604090205490565b3480156109dc57600080fd5b506104566109eb3660046146be565b6125d0565b3480156109fc57600080fd5b506104a26125e8565b348015610a1157600080fd5b5061048b610a203660046146a3565b6125f7565b348015610a3157600080fd5b5061048b610a403660046143c5565b61263b565b348015610a5157600080fd5b5061048b610a603660046144db565b6127ff565b348015610a7157600080fd5b5061048b610a803660046146be565b612b6d565b348015610a9157600080fd5b5061048b610aa0366004614390565b612bb7565b348015610ab157600080fd5b50610538610ac03660046146be565b60009081526008602052604090205490565b348015610ade57600080fd5b506003546001600160a01b03166104cf565b348015610afc57600080fd5b5061048b610b0b3660046143c5565b612c8c565b348015610b1c57600080fd5b5061048b610b2b366004614341565b612da1565b348015610b3c57600080fd5b50610538600281565b348015610b5157600080fd5b5061048b610b603660046142a3565b613053565b348015610b7157600080fd5b5061048b610b803660046147a5565b6130e9565b348015610b9157600080fd5b50610538600c5481565b348015610ba757600080fd5b5061048b610bb63660046146a3565b6133b7565b348015610bc757600080fd5b506104a2610bd63660046146be565b6133f4565b348015610be757600080fd5b50610456610bf63660046146be565b61271a101590565b348015610c0a57600080fd5b50610538600481565b348015610c1f57600080fd5b5061048b610c2e3660046146be565b613534565b348015610c3f57600080fd5b50601f5461045690610100900460ff1681565b348015610c5e57600080fd5b50610456610c6d3660046146be565b613563565b348015610c7e57600080fd5b5061048b610c8d3660046146be565b61357b565b348015610c9e57600080fd5b5061048b610cad3660046146be565b6135aa565b348015610cbe57600080fd5b50610456610ccd3660046146be565b6138ae101590565b348015610ce157600080fd5b5061053860145481565b348015610cf757600080fd5b50610538600581565b348015610d0c57600080fd5b50610538600681565b348015610d2157600080fd5b50610456610d30366004614195565b6135d9565b348015610d4157600080fd5b5061053860155481565b348015610d5757600080fd5b506002546001600160a01b03166104cf565b348015610d7557600080fd5b5061048b610d84366004614154565b613607565b348015610d9557600080fd5b50610538610da43660046146be565b61369f565b60006001600160e01b0319821663780e9d6360e01b1480610dda57506001600160e01b03198216634aefe8ef60e01b145b80610df557506001600160e01b03198216635b5e139f60e01b145b80610e1057506301ffc9a760e01b6001600160e01b03198316145b92915050565b6000543390600160a01b900460ff1615610e4b5760405162461bcd60e51b8152600401610e4290614a4c565b60405180910390fd5b806001600160a01b0316856001600160a01b031614158015610e745750610e7285826135d9565b155b15610ee95760005b82811015610ee757816001600160a01b0316610eaf858584818110610ea357610ea3614d6e565b905060200201356111a4565b6001600160a01b031614610ed55760405162461bcd60e51b8152600401610e4290614b96565b80610edf81614cfd565b915050610e7c565b505b60005b8281101561110a57856001600160a01b031660176000868685818110610f1457610f14614d6e565b60209081029290920135835250810191909152604001600020546001600160a01b031614610f4157600080fd5b610f648686868685818110610f5857610f58614d6e565b905060200201356137d1565b6001600160a01b0386166000908152601860205260408120805460019290610f8d908490614c7f565b90915550506001600160a01b0385166000908152601860205260408120805460019290610fbb908490614c34565b9091555085905060176000868685818110610fd857610fd8614d6e565b90506020020135815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555083838281811061102357611023614d6e565b90506020020135856001600160a01b0316876001600160a01b0316600080516020614de683398151915260405160405180910390a460006019600086868581811061107057611070614d6e565b90506020020135815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055506110dc86868686858181106110c0576110c0614d6e565b90506020020135604051806020016040528060008152506138c2565b6110f85760405162461bcd60e51b8152600401610e42906149fa565b8061110281614cfd565b915050610eec565b505050505050565b60606005805461112190614cc2565b80601f016020809104026020016040519081016040528092919081815260200182805461114d90614cc2565b801561119a5780601f1061116f5761010080835404028352916020019161119a565b820191906000526020600020905b81548152906001019060200180831161117d57829003601f168201915b5050505050905090565b6000818152601760205260408120546001600160a01b031661121d5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610e42565b506000908152601960205260409020546001600160a01b031690565b6000818152601760205260409020546001600160a01b039081169083168114156112af5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610e42565b336001600160a01b03821614806112cb57506112cb81336135d9565b61133d5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610e42565b600082815260196020908152604080832080546001600160a01b0319166001600160a01b038881169182179092556017909352818420549151869492909116917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6000546001600160a01b031633146113cf5760405162461bcd60e51b8152600401610e4290614ae3565b601f805460ff1916911515919091179055565b6000543390600160a01b900460ff161561140e5760405162461bcd60e51b8152600401610e4290614a4c565b61141a848483856139d0565b50505050565b3361142a83613563565b6114855760405162461bcd60e51b815260206004820152602660248201527f4572726f723a20746f6b656e2070726f7669646564206973206e6f7420626164604482015265206170706c6560d01b6064820152608401610e42565b6114918261271a101590565b6114e75760405162461bcd60e51b815260206004820152602160248201527f4572726f723a20746f6b656e2070726f766964656420697320616e206170706c6044820152606560f81b6064820152608401610e42565b6000838152601760205260409020546001600160a01b03828116911614806115285750806001600160a01b031661151d846111a4565b6001600160a01b0316145b80611538575061153884826135d9565b6115545760405162461bcd60e51b8152600401610e4290614b96565b61155e848461263b565b611568848361263b565b60056000527f91238f30f286c9a1c6e901c4eda3b214c381c846e3dbe48df95c21488e8e1fdb546009602052600080516020614dc6833981519152546115af906001614c34565b11156115cd5760405162461bcd60e51b8152600401610e4290614a8e565b600560009081526009602052600080516020614dc6833981519152546011546115f69190614c34565b9050611604600086836137d1565b600081815260176020908152604080832080546001600160a01b0319166001600160a01b038a1690811790915583526018909152812080546001929061164b908490614c34565b9091555050600560009081526009602052600080516020614dc683398151915280546001929061167c908490614c34565b90915550505050505050565b6000546001600160a01b031633146116b25760405162461bcd60e51b8152600401610e4290614ae3565b600260015414156116d55760405162461bcd60e51b8152600401610e4290614b5f565b600260015547806117185760405162461bcd60e51b815260206004820152600d60248201526c3130b630b731b29034b990181760991b6044820152606401610e42565b8181116117725760405162461bcd60e51b815260206004820152602260248201527f62616c616e6365206d757374206265207375706572696f7220746f20616d6f756044820152611b9d60f21b6064820152608401610e42565b60408051600080825260208201909252339084906040516117939190614906565b60006040518083038185875af1925050503d80600081146117d0576040519150601f19603f3d011682016040523d82523d6000602084013e6117d5565b606091505b50509050806118215760405162461bcd60e51b81526020600482015260186024820152773bb4ba34323930bb9d103a3930b739b332b91032b93937b960411b6044820152606401610e42565b50506001805550565b6001600160a01b03821660009081526018602052604081205482106118a55760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610e42565b506001600160a01b03919091166000908152601b60209081526040808320938352929052205490565b6000546001600160a01b031633146118f85760405162461bcd60e51b8152600401610e4290614ae3565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b604080516002808252606082810190935260009190816020015b6060815260200190600190039081611934579050509050600061195684611a7c565b6040805160028082526060820183529293506000929091602083019080368337019050509050611985601d5490565b8160008151811061199857611998614d6e565b602002602001018181525050601454816001815181106119ba576119ba614d6e565b60200260200101818152505081836000815181106119da576119da614d6e565b602002602001018190525080836001815181106119f9576119f9614d6e565b602090810291909101015250909392505050565b6000543390600160a01b900460ff1615611a395760405162461bcd60e51b8152600401610e4290614a4c565b611a45848483856139d0565b611a60848484604051806020016040528060008152506138c2565b61141a5760405162461bcd60e51b8152600401610e42906149fa565b60606000611a9f836001600160a01b031660009081526018602052604090205490565b90506000816001600160401b03811115611abb57611abb614d84565b604051908082528060200260200182016040528015611ae4578160200160208202803683370190505b50905060005b82811015611b2b57611afc858261182a565b828281518110611b0e57611b0e614d6e565b602090810291909101015280611b2381614cfd565b915050611aea565b509392505050565b6000611b3e601d5490565b8210611ba15760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610e42565b601d8281548110611bb457611bb4614d6e565b90600052602060002001549050919050565b6000546001600160a01b03163314611bf05760405162461bcd60e51b8152600401610e4290614ae3565b8051611c03906004906020840190614039565b5050565b60026001541415611c2a5760405162461bcd60e51b8152600401610e4290614b5f565b60026001556014543390611c3f908490614c60565b341015611ca25760405162461bcd60e51b815260206004820152602b60248201527f4d616b65207375726520796f752063616e206166666f726420302e303920657460448201526a34103832b9103a37b5b2b760a91b6064820152608401610e42565b6001600160a01b038416611cf85760405162461bcd60e51b815260206004820152601f60248201527f4572726f723a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610e42565b600054600160a01b900460ff1615611d225760405162461bcd60e51b8152600401610e4290614a4c565b600d5460ff161515600114611d985760405162461bcd60e51b815260206004820152603660248201527f4572726f723a205761697420756e74696c2061697264726f7070696e6720746f60448201527508151c99585cdd5c9e481a185cc8199a5b9a5cda195960521b6064820152608401610e42565b60165460ff16151560011415611eda576001600160a01b0381166000908152600e6020526040902054600390611dcf908590614c34565b1115611e335760405162461bcd60e51b815260206004820152602d60248201527f4572726f723a20796f752063616e6e6f74206d696e74206d6f726520746f6b6560448201526c6e732061742070726573616c6560981b6064820152608401610e42565b6015546040516bffffffffffffffffffffffff19606084901b166020820152611e7691849160340160405160208183030381529060405280519060200120613b28565b611ed55760405162461bcd60e51b815260206004820152602a60248201527f796f7520617265206e6f7420616c6c6f77656420746f206d696e7420647572696044820152696e672070726573616c6560b01b6064820152608401610e42565b611f5a565b600f546001600160a01b038216600090815260106020526040902054611f01908590614c34565b1115611f5a5760405162461bcd60e51b815260206004820152602260248201527f4572726f723a20796f752063616e6e6f74206d696e74206d6f726520746f6b656044820152616e7360f01b6064820152608401610e42565b6000611f6584613b3e565b9050600081600081518110611f7c57611f7c614d6e565b60200260200101519050600082600181518110611f9b57611f9b614d6e565b6020026020010151905060005b8681101561213257611fd5600089858481518110611fc857611fc8614d6e565b60200260200101516137d1565b8760176000858481518110611fec57611fec614d6e565b6020908102919091018101518252818101929092526040908101600090812080546001600160a01b0319166001600160a01b03958616179055928b16835260189091528120805460019290612042908490614c34565b9250508190555081818151811061205b5761205b614d6e565b60200260200101516007600085848151811061207957612079614d6e565b60200260200101518152602001908152602001600020819055506001600960008484815181106120ab576120ab614d6e565b6020026020010151815260200190815260200160002060008282546120d09190614c34565b925050819055508281815181106120e9576120e9614d6e565b6020026020010151886001600160a01b031660006001600160a01b0316600080516020614de683398151915260405160405180910390a48061212a81614cfd565b915050611fa8565b5060165460ff16151560011415612176576001600160a01b0384166000908152600e60205260408120805488929061216b908490614c34565b909155506121a49050565b6001600160a01b0384166000908152601060205260408120805488929061219e908490614c34565b90915550505b5050600180555050505050565b604080516002808252606082810190935260009190816020015b60608152602001906001900390816121cb5790505090506000836001600160401b038111156121fc576121fc614d84565b604051908082528060200260200182016040528015612225578160200160208202803683370190505b5090506000846001600160401b0381111561224257612242614d84565b60405190808252806020026020018201604052801561226b578160200160208202803683370190505b5090506000808061227d600143614c7f565b4090505b8783146123bd57600061271b4283336040805160208101949094528301919091526bffffffffffffffffffffffff19606091821b1690820152607481018590526094016040516020818303038152906040528051906020012060001c6122e79190614d18565b90506000805b8581101561232d5787818151811061230757612307614d6e565b602002602001015183141561231b57600191505b8061232581614cfd565b9150506122ed565b506000828152601760205260409020546001600160a01b0316158015612351575080155b156123a9578187868151811061236957612369614d6e565b60200260200101818152505061237e8261369f565b86868151811061239057612390614d6e565b60209081029190910101526123a6600186614c34565b94505b6123b4600185614c34565b93505050612281565b84866000815181106123d1576123d1614d6e565b602002602001018190525083866001815181106123f0576123f0614d6e565b602090810291909101015250939695505050505050565b6000546001600160a01b031633146124315760405162461bcd60e51b8152600401610e4290614ae3565b61243b6000613cee565b565b6000546001600160a01b031633146124675760405162461bcd60e51b8152600401610e4290614ae3565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146124b35760405162461bcd60e51b8152600401610e4290614ae3565b600260015414156124d65760405162461bcd60e51b8152600401610e4290614b5f565b600260015547806125195760405162461bcd60e51b815260206004820152600d60248201526c3130b630b731b29034b990181760991b6044820152606401610e42565b604080516000808252602082019092523390839060405161253a9190614906565b60006040518083038185875af1925050503d8060008114612577576040519150601f19603f3d011682016040523d82523d6000602084013e61257c565b606091505b50509050806125c85760405162461bcd60e51b81526020600482015260186024820152773bb4ba34323930bb9d103a3930b739b332b91032b93937b960411b6044820152606401610e42565b505060018055565b600061271b8210158015610e105750506132d2101590565b60606006805461112190614cc2565b6000546001600160a01b031633146126215760405162461bcd60e51b8152600401610e4290614ae3565b601f80549115156101000261ff0019909216919091179055565b6000543390600160a01b900460ff16156126675760405162461bcd60e51b8152600401610e4290614a4c565b806001600160a01b0316836001600160a01b031614806126a05750806001600160a01b0316612695836111a4565b6001600160a01b0316145b806126b057506126b083826135d9565b6126cc5760405162461bcd60e51b8152600401610e4290614b96565b6001600160a01b03831661272c5760405162461bcd60e51b815260206004820152602160248201527f4572726f723a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610e42565b6000828152601760205260409020546001600160a01b038481169116146127655760405162461bcd60e51b8152600401610e4290614b18565b612771836000846137d1565b600082815260176020908152604080832080546001600160a01b03191690556001600160a01b0386168352601890915281208054600192906127b4908490614c7f565b909155505060405182906000906001600160a01b03861690600080516020614de6833981519152908390a450600090815260196020526040902080546001600160a01b031916905550565b6000546001600160a01b031633146128295760405162461bcd60e51b8152600401610e4290614ae3565b6002546040805163a09ec3ef60e01b815290516000926001600160a01b03169163a09ec3ef916004808301926020929190829003018186803b15801561286e57600080fd5b505afa158015612882573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128a69190614178565b600054909150600160a01b900460ff16156128d35760405162461bcd60e51b8152600401610e4290614a4c565b6000826000815181106128e8576128e8614d6e565b6020026020010151905060008360018151811061290757612907614d6e565b60200260200101519050815181511461291f57600080fd5b8151600c54600b54612932908390614c34565b11156129a65760405162461bcd60e51b815260206004820152603b60248201527f4572726f723a20796f752061726520657863656564696e6720746865206d617860448201527f2061697264726f7020616d6f756e7420746f20547265617375727900000000006064820152608401610e42565b60005b8351811015612b34576129ca600086868481518110611fc857611fc8614d6e565b6001600160a01b03851660009081526018602052604081208054600192906129f3908490614c34565b925050819055508460176000868481518110612a1157612a11614d6e565b6020026020010151815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550828181518110612a5d57612a5d614d6e565b602002602001015160076000868481518110612a7b57612a7b614d6e565b6020026020010151815260200190815260200160002081905550600160096000858481518110612aad57612aad614d6e565b602002602001015181526020019081526020016000206000828254612ad29190614c34565b92505081905550838181518110612aeb57612aeb614d6e565b6020026020010151856001600160a01b031660006001600160a01b0316600080516020614de683398151915260405160405180910390a480612b2c81614cfd565b9150506129a9565b5080600b6000828254612b479190614c34565b9091555050600c54600b541415612b6657600d805460ff191660011790555b5050505050565b6000546001600160a01b03163314612b975760405162461bcd60e51b8152600401610e4290614ae3565b600c819055600b54811415612bb457600d805460ff191660011790555b50565b336001600160a01b0383161415612c205760405162461bcd60e51b815260206004820152602760248201527f4572726f723a2073657474696e6720617070726f76616c20737461747573206660448201526637b91039b2b63360c91b6064820152608401610e42565b336000818152601a602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b33612c96826125d0565b612cf75760405162461bcd60e51b815260206004820152602c60248201527f4572726f723a20746f6b656e2070726f7669646564206973206e6f742061736360448201526b656e73696f6e206170706c6560a01b6064820152608401610e42565b6000828152601760205260409020546001600160a01b0382811691161480612d385750806001600160a01b0316612d2d836111a4565b6001600160a01b0316145b80612d485750612d4883826135d9565b612d645760405162461bcd60e51b8152600401610e4290614b96565b612d6e838361263b565b6001600160a01b0383166000908152601360205260408120805460019290612d97908490614c34565b9091555050505050565b6000543390600160a01b900460ff1615612dcd5760405162461bcd60e51b8152600401610e4290614a4c565b806001600160a01b0316836001600160a01b031614158015612df65750612df483826135d9565b155b15612e6d5760005b8251811015612e6b57816001600160a01b0316612e33848381518110612e2657612e26614d6e565b60200260200101516111a4565b6001600160a01b031614612e595760405162461bcd60e51b8152600401610e4290614b96565b80612e6381614cfd565b915050612dfe565b505b60005b8251811015612eec57836001600160a01b031660176000858481518110612e9957612e99614d6e565b6020908102919091018101518252810191909152604001600020546001600160a01b031614612eda5760405162461bcd60e51b8152600401610e4290614b18565b80612ee481614cfd565b915050612e70565b5060005b8251811015612fe157612f11846000858481518110611fc857611fc8614d6e565b600060176000858481518110612f2957612f29614d6e565b6020908102919091018101518252818101929092526040908101600090812080546001600160a01b0319166001600160a01b03958616179055928716835260189091528120805460019290612f7f908490614c7f565b92505081905550828181518110612f9857612f98614d6e565b602002602001015160006001600160a01b0316856001600160a01b0316600080516020614de683398151915260405160405180910390a480612fd981614cfd565b915050612ef0565b5060005b825181101561141a5760006019600085848151811061300657613006614d6e565b6020026020010151815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550808061304b90614cfd565b915050612fe5565b6000543390600160a01b900460ff161561307f5760405162461bcd60e51b8152600401610e4290614a4c565b61308b868683876139d0565b6130cd86868686868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506138c292505050565b61110a5760405162461bcd60e51b8152600401610e42906149fa565b6000546001600160a01b031633146131135760405162461bcd60e51b8152600401610e4290614ae3565b828151146131635760405162461bcd60e51b815260206004820152601e60248201527f616d6f756e74206e6f74206567616c20746f206c697374206c656e67746800006044820152606401610e42565b60058214806131725750600682145b6131cd5760405162461bcd60e51b815260206004820152602660248201527f4572726f723a2054686520746f6b656e20636c617373206973206e6f7420616e604482015265206170706c6560d01b6064820152608401610e42565b6000828152600860209081526040808320546009909252909120546131f3908590614c34565b11156132115760405162461bcd60e51b8152600401610e4290614a8e565b6000600583141561324a5760056000526009602052600080516020614dc6833981519152546011546132439190614c34565b9050613286565b600660005260096020527fbb6daa0c283751197dfdc76590680f9005e97d6f23870deb1164ab60b28b9f5f546012546132839190614c34565b90505b60005b825181101561338d57600061329e8284614c34565b90506132c560008584815181106132b7576132b7614d6e565b6020026020010151836137d1565b8382815181106132d7576132d7614d6e565b60200260200101516017600083815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060016018600086858151811061332e5761332e614d6e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060008282546133659190614c34565b909155505060009081526007602052604090208490558061338581614cfd565b915050613289565b50600083815260096020526040812080548692906133ac908490614c34565b909155505050505050565b6000546001600160a01b031633146133e15760405162461bcd60e51b8152600401610e4290614ae3565b6016805460ff1916911515919091179055565b6000818152601760205260409020546060906001600160a01b03166134735760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610e42565b60006004805461348290614cc2565b80601f01602080910402602001604051908101604052809291908181526020018280546134ae90614cc2565b80156134fb5780601f106134d0576101008083540402835291602001916134fb565b820191906000526020600020905b8154815290600101906020018083116134de57829003601f168201915b505050505090508061350c84613d3e565b60405160200161351d929190614922565b604051602081830303815290604052915050919050565b6000546001600160a01b0316331461355e5760405162461bcd60e51b8152600401610e4290614ae3565b601455565b60006132d38210158015610e105750506138ae101590565b6000546001600160a01b031633146135a55760405162461bcd60e51b8152600401610e4290614ae3565b600f55565b6000546001600160a01b031633146135d45760405162461bcd60e51b8152600401610e4290614ae3565b601555565b6001600160a01b039182166000908152601a6020908152604080832093909416825291909152205460ff1690565b6000546001600160a01b031633146136315760405162461bcd60e51b8152600401610e4290614ae3565b6001600160a01b0381166136965760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610e42565b612bb481613cee565b6000816136ae57506000919050565b600182101580156136c0575060088211155b156136cd57506001919050565b8160091480156136dd575081600a145b156136ea57506002919050565b600b82101580156136fd57506113928211155b1561370a57506003919050565b611393821015801561371e575061271a8211155b1561372b57506004919050565b61271b821015801561373f57506132d28211155b1561374c57506005919050565b6132d3821015801561376057506138ae8211155b1561376d57506006919050565b60405162461bcd60e51b815260206004820152602e60248201527f5468697320494420646f6573206e6f742062656c6f6e6720746f20612076616c60448201526d696420746f6b656e20636c61737360901b6064820152608401610e42565b919050565b6001600160a01b03831661382c5761382781601d80546000838152601e60205260408120829055600182018355919091527f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f0155565b61384f565b816001600160a01b0316836001600160a01b03161461384f5761384f8382613e3b565b6001600160a01b03821661386b5761386681613ee6565b505050565b826001600160a01b0316826001600160a01b031614613866576001600160a01b0391909116600090815260186020908152604080832054601b83528184208185528352818420859055938352601c90915290205550565b60006001600160a01b0384163b156139c457604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290613906903390899088908890600401614951565b602060405180830381600087803b15801561392057600080fd5b505af1925050508015613950575060408051601f3d908101601f1916820190925261394d918101906146f4565b60015b6139aa573d80801561397e576040519150601f19603f3d011682016040523d82523d6000602084013e613983565b606091505b5080516139a25760405162461bcd60e51b8152600401610e42906149fa565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506139c8565b5060015b949350505050565b6000818152601760205260409020546001600160a01b038581169116146139f657600080fd5b816001600160a01b0316846001600160a01b03161480613a2f5750816001600160a01b0316613a24826111a4565b6001600160a01b0316145b80613a3f5750613a3f84836135d9565b613a5b5760405162461bcd60e51b8152600401610e4290614b96565b613a668484836137d1565b6001600160a01b0384166000908152601860205260408120805460019290613a8f908490614c7f565b90915550506001600160a01b0383166000908152601860205260408120805460019290613abd908490614c34565b909155505060008181526017602052604080822080546001600160a01b0319166001600160a01b038781169182179092559151849391881691600080516020614de683398151915291a4600090815260196020526040902080546001600160a01b0319169055505050565b600082613b358584613f95565b14949350505050565b601f5460609060ff16158015613b5c5750601f54610100900460ff16155b15613c3857600360009054906101000a90046001600160a01b03166001600160a01b0316634fdc84dc6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613bb157600080fd5b505af1925050508015613be657506040513d6000823e601f3d908101601f19168201604052613be39190810190614592565b60015b610e10576000613bf5836121b1565b90507fc36a191bf96c0e51ac78765045a165404afd7594ad423922b0e84d0ee2f39afa814233604051613c2a939291906149a1565b60405180910390a192915050565b601f5460ff16158015613c525750601f54610100900460ff165b15613ce357600360009054906101000a90046001600160a01b03166001600160a01b0316634fdc84dc6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613ca757600080fd5b505af1158015613cbb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e109190810190614592565b6000613bf5836121b1565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b606081613d625750506040805180820190915260018152600360fc1b602082015290565b8160005b8115613d8c5780613d7681614cfd565b9150613d859050600a83614c4c565b9150613d66565b6000816001600160401b03811115613da657613da6614d84565b6040519080825280601f01601f191660200182016040528015613dd0576020820181803683370190505b5090505b84156139c857613de5600183614c7f565b9150613df2600a86614d18565b613dfd906030614c34565b60f81b818381518110613e1257613e12614d6e565b60200101906001600160f81b031916908160001a905350613e34600a86614c4c565b9450613dd4565b6001600160a01b038216600090815260186020526040812054613e6090600190614c7f565b6000838152601c6020526040902054909150808214613eb3576001600160a01b0384166000908152601b602090815260408083208584528252808320548484528184208190558352601c90915290208190555b506000918252601c602090815260408084208490556001600160a01b039094168352601b81528383209183525290812055565b601d54600090613ef890600190614c7f565b6000838152601e6020526040812054601d8054939450909284908110613f2057613f20614d6e565b9060005260206000200154905080601d8381548110613f4157613f41614d6e565b6000918252602080832090910192909255828152601e9091526040808220849055858252812055601d805480613f7957613f79614d58565b6001900381819060005260206000200160009055905550505050565b600081815b8451811015611b2b576000858281518110613fb757613fb7614d6e565b60200260200101519050808311613ff9576040805160208101859052908101829052606001604051602081830303815290604052805190602001209250614026565b60408051602081018390529081018490526060016040516020818303038152906040528051906020012092505b508061403181614cfd565b915050613f9a565b82805461404590614cc2565b90600052602060002090601f01602090048101928261406757600085556140ad565b82601f1061408057805160ff19168380011785556140ad565b828001600101855582156140ad579182015b828111156140ad578251825591602001919060010190614092565b506140b99291506140bd565b5090565b5b808211156140b957600081556001016140be565b600082601f8301126140e357600080fd5b813560206140f86140f383614c11565b614be1565b80838252828201915082860187848660051b890101111561411857600080fd5b60005b858110156141375781358452928401929084019060010161411b565b5090979650505050505050565b803580151581146137cc57600080fd5b60006020828403121561416657600080fd5b813561417181614d9a565b9392505050565b60006020828403121561418a57600080fd5b815161417181614d9a565b600080604083850312156141a857600080fd5b82356141b381614d9a565b915060208301356141c381614d9a565b809150509250929050565b600080600080606085870312156141e457600080fd5b84356141ef81614d9a565b935060208501356141ff81614d9a565b925060408501356001600160401b038082111561421b57600080fd5b818701915087601f83011261422f57600080fd5b81358181111561423e57600080fd5b8860208260051b850101111561425357600080fd5b95989497505060200194505050565b60008060006060848603121561427757600080fd5b833561428281614d9a565b9250602084013561429281614d9a565b929592945050506040919091013590565b6000806000806000608086880312156142bb57600080fd5b85356142c681614d9a565b945060208601356142d681614d9a565b93506040860135925060608601356001600160401b03808211156142f957600080fd5b818801915088601f83011261430d57600080fd5b81358181111561431c57600080fd5b89602082850101111561432e57600080fd5b9699959850939650602001949392505050565b6000806040838503121561435457600080fd5b823561435f81614d9a565b915060208301356001600160401b0381111561437a57600080fd5b614386858286016140d2565b9150509250929050565b600080604083850312156143a357600080fd5b82356143ae81614d9a565b91506143bc60208401614144565b90509250929050565b600080604083850312156143d857600080fd5b82356143e381614d9a565b946020939093013593505050565b60008060006060848603121561440657600080fd5b833561441181614d9a565b9250602084810135925060408501356001600160401b0381111561443457600080fd5b8501601f8101871361444557600080fd5b80356144536140f382614c11565b8082825284820191508484018a868560051b870101111561447357600080fd5b600094505b83851015614496578035835260019490940193918501918501614478565b5080955050505050509250925092565b6000806000606084860312156144bb57600080fd5b83356144c681614d9a565b95602085013595506040909401359392505050565b600060208083850312156144ee57600080fd5b82356001600160401b038082111561450557600080fd5b818501915085601f83011261451957600080fd5b81356145276140f382614c11565b80828252858201915085850189878560051b880101111561454757600080fd5b6000805b8581101561458257823587811115614561578283fd5b61456f8d8b838c01016140d2565b865250938801939188019160010161454b565b50919a9950505050505050505050565b600060208083850312156145a557600080fd5b82516001600160401b03808211156145bc57600080fd5b818501915085601f8301126145d057600080fd5b81516145de6140f382614c11565b80828252858201915085850189878560051b88010111156145fe57600080fd5b60005b848110156146945781518681111561461857600080fd5b8701603f81018c1361462957600080fd5b888101516146396140f382614c11565b808282528b82019150604084018f60408560051b870101111561465b57600080fd5b600094505b8385101561467e578051835260019490940193918c01918c01614660565b5087525050509287019290870190600101614601565b50909998505050505050505050565b6000602082840312156146b557600080fd5b61417182614144565b6000602082840312156146d057600080fd5b5035919050565b6000602082840312156146e957600080fd5b813561417181614daf565b60006020828403121561470657600080fd5b815161417181614daf565b6000602080838503121561472457600080fd5b82356001600160401b038082111561473b57600080fd5b818501915085601f83011261474f57600080fd5b81358181111561476157614761614d84565b614773601f8201601f19168501614be1565b9150808252868482850101111561478957600080fd5b8084840185840137600090820190930192909252509392505050565b6000806000606084860312156147ba57600080fd5b83359250602080850135925060408501356001600160401b038111156147df57600080fd5b8501601f810187136147f057600080fd5b80356147fe6140f382614c11565b8082825284820191508484018a868560051b870101111561481e57600080fd5b600094505b8385101561449657803561483681614d9a565b835260019490940193918501918501614823565b600081518084526020808501808196508360051b8101915082860160005b8581101561489257828403895261488084835161489f565b98850198935090840190600101614868565b5091979650505050505050565b600081518084526020808501945080840160005b838110156148cf578151875295820195908201906001016148b3565b509495945050505050565b600081518084526148f2816020860160208601614c96565b601f01601f19169290920160200192915050565b60008251614918818460208701614c96565b9190910192915050565b60008351614934818460208801614c96565b835190830190614948818360208801614c96565b01949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090614984908301846148da565b9695505050505050565b602081526000614171602083018461484a565b6060815260006149b4606083018661484a565b6020830194909452506001600160a01b0391909116604090910152919050565b602081526000614171602083018461489f565b60208152600061417160208301846148da565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60208082526022908201527f4572726f723a20746f6b656e207472616e73666572207768696c652070617573604082015261195960f21b606082015260800190565b60208082526035908201527f4572726f723a20596f75206578636565642074686520737570706c792063617060408201527420666f722074686973206170706c6520636c61737360581b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526027908201527f4572726f723a206163636f756e74206973206e6f74206f776e6572206f6620746040820152661bdad95b881a5960ca1b606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252602b908201527f4572726f723a2063616c6c6572206973206e656974686572206f776e6572206e60408201526a1bdc88185c1c1c9bdd995960aa1b606082015260800190565b604051601f8201601f191681016001600160401b0381118282101715614c0957614c09614d84565b604052919050565b60006001600160401b03821115614c2a57614c2a614d84565b5060051b60200190565b60008219821115614c4757614c47614d2c565b500190565b600082614c5b57614c5b614d42565b500490565b6000816000190483118215151615614c7a57614c7a614d2c565b500290565b600082821015614c9157614c91614d2c565b500390565b60005b83811015614cb1578181015183820152602001614c99565b8381111561141a5750506000910152565b600181811c90821680614cd657607f821691505b60208210811415614cf757634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415614d1157614d11614d2c565b5060010190565b600082614d2757614d27614d42565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114612bb457600080fd5b6001600160e01b031981168114612bb457600080fdfe74b05292d1d4b2b48b65261b07099d24244bcb069f138d9a6bfdcf776becac4cddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220f6962069aa3fa14caeae5ea33523e05f6f991abca9f2659833dfad42dc9f28fd64736f6c63430008070033

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

00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000002ed8143a3684df0167a0030f61bb58d9e5a16cb60000000000000000000000004ee58496dc8eba4811709f51a90a1cb4797c27cc000000000000000000000000000000000000000000000000000000000000000e446976696e6520416e617263687900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024441000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005168747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066732f516d65654c33357436344e6d6b37514343727465396e32776e3244394d344c6567596d73486f45695a536a5736632f000000000000000000000000000000

-----Decoded View---------------
Arg [0] : name_ (string): Divine Anarchy
Arg [1] : symbol_ (string): DA
Arg [2] : baseURI_ (string): https://gateway.pinata.cloud/ipfs/QmeeL35t64Nmk7QCCrte9n2wn2D9M4LegYmsHoEiZSjW6c/
Arg [3] : _adminwallets (address): 0x2Ed8143a3684Df0167a0030f61bb58d9e5A16cB6
Arg [4] : _oracle (address): 0x4eE58496DC8EBa4811709F51A90a1CB4797c27cC

-----Encoded View---------------
13 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000120
Arg [3] : 0000000000000000000000002ed8143a3684df0167a0030f61bb58d9e5a16cb6
Arg [4] : 0000000000000000000000004ee58496dc8eba4811709f51a90a1cb4797c27cc
Arg [5] : 000000000000000000000000000000000000000000000000000000000000000e
Arg [6] : 446976696e6520416e6172636879000000000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [8] : 4441000000000000000000000000000000000000000000000000000000000000
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000051
Arg [10] : 68747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066
Arg [11] : 732f516d65654c33357436344e6d6b37514343727465396e32776e3244394d34
Arg [12] : 4c6567596d73486f45695a536a5736632f000000000000000000000000000000


Deployed Bytecode Sourcemap

8213:29026:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28954:368;;;;;;;;;;-1:-1:-1;28954:368:0;;;;;:::i;:::-;;:::i;:::-;;;17435:14:1;;17428:22;17410:41;;17398:2;17383:18;28954:368:0;;;;;;;;22376:1019;;;;;;;;;;-1:-1:-1;22376:1019:0;;;;;:::i;:::-;;:::i;:::-;;12931:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;16738:221::-;;;;;;;;;;-1:-1:-1;16738:221:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;15647:32:1;;;15629:51;;15617:2;15602:18;16738:221:0;15483:203:1;16269:461:0;;;;;;;;;;-1:-1:-1;16269:461:0;;;;;:::i;:::-;;:::i;35936:87::-;;;;;;;;;;-1:-1:-1;35936:87:0;;;;;:::i;:::-;;:::i;29583:105::-;;;;;;;;;;-1:-1:-1;29663:10:0;:17;29583:105;;;17608:25:1;;;17596:2;17581:18;29583:105:0;17462:177:1;17446:119:0;;;;;;;;;;-1:-1:-1;17529:28:0;;;;17446:119;;14828:154;;;;;;;;;;-1:-1:-1;14828:154:0;;;;;:::i;:::-;14913:7;14940:34;;;:24;:34;;;;;;;14828:154;20646:263;;;;;;;;;;-1:-1:-1;20646:263:0;;;;;:::i;:::-;;:::i;8614:32::-;;;;;;;;;;;;8645:1;8614:32;;26942:1079;;;;;;;;;;-1:-1:-1;26942:1079:0;;;;;:::i;:::-;;:::i;33471:387::-;;;;;;;;;;-1:-1:-1;33471:387:0;;;;;:::i;:::-;;:::i;29334:241::-;;;;;;;;;;-1:-1:-1;29334:241:0;;;;;:::i;:::-;;:::i;13779:118::-;;;;;;;;;;-1:-1:-1;13779:118:0;;;;;:::i;:::-;13846:7;13873:16;;;:11;:16;;;;;;;13779:118;34429:128;;;;;;;;;;-1:-1:-1;34429:128:0;;;;;:::i;:::-;;:::i;32705:432::-;;;;;;;;;;-1:-1:-1;32705:432:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;20917:::-;;;;;;;;;;-1:-1:-1;20917:432:0;;;;;:::i;:::-;;:::i;32353:340::-;;;;;;;;;;-1:-1:-1;32353:340:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;8568:39::-;;;;;;;;;;;;8606:1;8568:39;;9435:47;;;;;;;;;;;;;;;;28058:124;;;;;;;;;;-1:-1:-1;28058:124:0;;;;;:::i;:::-;28120:4;28144:16;;;:7;:16;;;;;;-1:-1:-1;;;;;28144:16:0;:30;;;28058:124;29696:208;;;;;;;;;;-1:-1:-1;29696:208:0;;;;;:::i;:::-;;:::i;13139:101::-;;;;;;;;;;-1:-1:-1;13139:101:0;;;;;:::i;:::-;;:::i;3110:86::-;;;;;;;;;;-1:-1:-1;3157:4:0;3181:7;-1:-1:-1;;;3181:7:0;;;;3110:86;;8410:33;;;;;;;;;;-1:-1:-1;8410:33:0;;;;-1:-1:-1;;;;;8410:33:0;;;15968:97;;;;;;;;;;-1:-1:-1;15968:97:0;;;;;:::i;:::-;16018:7;16045:12;;;:7;:12;;;;;;-1:-1:-1;;;;;16045:12:0;;15968:97;18806:1832;;;;;;:::i;:::-;;:::i;34569:1355::-;;;;;;;;;;-1:-1:-1;34569:1355:0;;;;;:::i;:::-;;:::i;15851:109::-;;;;;;;;;;-1:-1:-1;15851:109:0;;;;;:::i;:::-;-1:-1:-1;;;;;15934:18:0;15907:7;15934:18;;;:9;:18;;;;;;;15851:109;5811:103;;;;;;;;;;;;;:::i;15148:157::-;;;;;;;;;;-1:-1:-1;15148:157:0;;;;;:::i;:::-;-1:-1:-1;;;;;15257:40:0;15230:7;15257:40;;;:31;:40;;;;;;;15148:157;34319:98;;;;;;;;;;-1:-1:-1;34319:98:0;;;;;:::i;:::-;;:::i;10632:20::-;;;;;;;;;;-1:-1:-1;10632:20:0;;;;;;;;8450:21;;;;;;;;;;-1:-1:-1;8450:21:0;;;;-1:-1:-1;;;;;8450:21:0;;;16073:147;;;;;;;;;;-1:-1:-1;16073:147:0;;;;;:::i;:::-;-1:-1:-1;;;;;16179:33:0;16152:7;16179:33;;;:24;:33;;;;;;;16073:147;37132:94;;;;;;;;;;-1:-1:-1;37203:15:0;;;;37132:94;;33149:314;;;;;;;;;;;;;:::i;8696:38::-;;;;;;;;;;;;8733:1;8696:38;;5584:87;;;;;;;;;;-1:-1:-1;5630:7:0;5657:6;-1:-1:-1;;;;;5657:6:0;5584:87;;14990:150;;;;;;;;;;-1:-1:-1;14990:150:0;;;;;:::i;:::-;15073:7;15100:32;;;:22;:32;;;;;;;14990:150;15581:130;;;;;;;;;;-1:-1:-1;15581:130:0;;;;;:::i;:::-;;:::i;13033:98::-;;;;;;;;;;;;;:::i;36035:93::-;;;;;;;;;;-1:-1:-1;36035:93:0;;;;;:::i;:::-;;:::i;23407:796::-;;;;;;;;;;-1:-1:-1;23407:796:0;;;;;:::i;:::-;;:::i;17608:1186::-;;;;;;;;;;-1:-1:-1;17608:1186:0;;;;;:::i;:::-;;:::i;34068:245::-;;;;;;;;;;-1:-1:-1;34068:245:0;;;;;:::i;:::-;;:::i;16967:303::-;;;;;;;;;;-1:-1:-1;16967:303:0;;;;;:::i;:::-;;:::i;14674:146::-;;;;;;;;;;-1:-1:-1;14674:146:0;;;;;:::i;:::-;14755:7;14782:30;;;:20;:30;;;;;;;14674:146;13673:98;;;;;;;;;;-1:-1:-1;13756:6:0;;-1:-1:-1;;;;;13756:6:0;13673:98;;26463:471;;;;;;;;;;-1:-1:-1;26463:471:0;;;;;:::i;:::-;;:::i;24211:1080::-;;;;;;;;;;-1:-1:-1;24211:1080:0;;;;;:::i;:::-;;:::i;8653:36::-;;;;;;;;;;;;8688:1;8653:36;;21357:475;;;;;;;;;;-1:-1:-1;21357:475:0;;;;;:::i;:::-;;:::i;25299:1156::-;;;;;;;;;;-1:-1:-1;25299:1156:0;;;;;:::i;:::-;;:::i;9177:44::-;;;;;;;;;;;;;;;;33870:92;;;;;;;;;;-1:-1:-1;33870:92:0;;;;;:::i;:::-;;:::i;13248:299::-;;;;;;;;;;-1:-1:-1;13248:299:0;;;;;:::i;:::-;;:::i;15443:130::-;;;;;;;;;;-1:-1:-1;15443:130:0;;;;;:::i;:::-;15559:5;-1:-1:-1;15552:12:0;;15443:130;8741:41;;;;;;;;;;;;8781:1;8741:41;;37010:110;;;;;;;;;;-1:-1:-1;37010:110:0;;;;;:::i;:::-;;:::i;10659:24::-;;;;;;;;;;-1:-1:-1;10659:24:0;;;;;;;;;;;15719:124;;;;;;;;;;-1:-1:-1;15719:124:0;;;;;:::i;:::-;;:::i;36870:128::-;;;;;;;;;;-1:-1:-1;36870:128:0;;;;;:::i;:::-;;:::i;33974:82::-;;;;;;;;;;-1:-1:-1;33974:82:0;;;;;:::i;:::-;;:::i;15313:122::-;;;;;;;;;;-1:-1:-1;15313:122:0;;;;;:::i;:::-;15421:5;-1:-1:-1;15414:12:0;;15313:122;9719:45;;;;;;;;;;;;;;;;8790:43;;;;;;;;;;;;8832:1;8790:43;;8840:37;;;;;;;;;;;;8876:1;8840:37;;17278:160;;;;;;;;;;-1:-1:-1;17278:160:0;;;;;:::i;:::-;;:::i;9777:88::-;;;;;;;;;;;;;;;;13555:110;;;;;;;;;;-1:-1:-1;13644:12:0;;-1:-1:-1;;;;;13644:12:0;13555:110;;5925:201;;;;;;;;;;-1:-1:-1;5925:201:0;;;;;:::i;:::-;;:::i;13905:761::-;;;;;;;;;;-1:-1:-1;13905:761:0;;;;;:::i;:::-;;:::i;28954:368::-;29056:4;-1:-1:-1;;;;;;29089:50:0;;-1:-1:-1;;;29089:50:0;;:107;;-1:-1:-1;;;;;;;29156:40:0;;-1:-1:-1;;;29156:40:0;29089:107;:172;;;-1:-1:-1;;;;;;;29213:48:0;;-1:-1:-1;;;29213:48:0;29089:172;:225;;;-1:-1:-1;;;;;;;;;;2701:40:0;;;29278:36;29073:241;28954:368;-1:-1:-1;;28954:368:0:o;22376:1019::-;22508:16;3181:7;2869:10;;-1:-1:-1;;;3181:7:0;;;;22558:9;22550:56;;;;-1:-1:-1;;;22550:56:0;;;;;;;:::i;:::-;;;;;;;;;22631:8;-1:-1:-1;;;;;22623:16:0;:4;-1:-1:-1;;;;;22623:16:0;;;:61;;;;;22643:32;22660:4;22666:8;22643:16;:32::i;:::-;:41;22623:61;22619:256;;;22706:9;22701:163;22721:14;;;22701:163;;;22792:8;-1:-1:-1;;;;;22769:31:0;:19;22781:3;;22785:1;22781:6;;;;;;;:::i;:::-;;;;;;;22769:11;:19::i;:::-;-1:-1:-1;;;;;22769:31:0;;22761:87;;;;-1:-1:-1;;;22761:87:0;;;;;;;:::i;:::-;22737:3;;;;:::i;:::-;;;;22701:163;;;;22619:256;22914:9;22909:479;22929:14;;;22909:479;;;22992:4;-1:-1:-1;;;;;22973:23:0;:7;:15;22981:3;;22985:1;22981:6;;;;;;;:::i;:::-;;;;;;;;;;22973:15;;-1:-1:-1;22973:15:0;;;;;;;;-1:-1:-1;22973:15:0;;-1:-1:-1;;;;;22973:15:0;:23;22965:32;;;;;;23012:38;23033:4;23039:2;23043:3;;23047:1;23043:6;;;;;;;:::i;:::-;;;;;;;23012:20;:38::i;:::-;-1:-1:-1;;;;;23065:15:0;;;;;;:9;:15;;;;;:20;;23084:1;;23065:15;:20;;23084:1;;23065:20;:::i;:::-;;;;-1:-1:-1;;;;;;;23100:13:0;;;;;;:9;:13;;;;;:18;;23117:1;;23100:13;:18;;23117:1;;23100:18;:::i;:::-;;;;-1:-1:-1;23151:2:0;;-1:-1:-1;23133:7:0;:15;23141:3;;23145:1;23141:6;;;;;;;:::i;:::-;;;;;;;23133:15;;;;;;;;;;;;:20;;;;;-1:-1:-1;;;;;23133:20:0;;;;;-1:-1:-1;;;;;23133:20:0;;;;;;23194:3;;23198:1;23194:6;;;;;;;:::i;:::-;;;;;;;23190:2;-1:-1:-1;;;;;23175:26:0;23184:4;-1:-1:-1;;;;;23175:26:0;-1:-1:-1;;;;;;;;;;;23175:26:0;;;;;;;;;23250:1;23216:15;:23;23232:3;;23236:1;23232:6;;;;;;;:::i;:::-;;;;;;;23216:23;;;;;;;;;;;;:36;;;;;-1:-1:-1;;;;;23216:36:0;;;;;-1:-1:-1;;;;;23216:36:0;;;;;;23277:44;23300:4;23306:2;23310:3;;23314:1;23310:6;;;;;;;:::i;:::-;;;;;;;23277:44;;;;;;;;;;;;:22;:44::i;:::-;23269:107;;;;-1:-1:-1;;;23269:107:0;;;;;;;:::i;:::-;22945:3;;;;:::i;:::-;;;;22909:479;;;;22464:931;22376:1019;;;;:::o;12931:94::-;12979:13;13012:5;13005:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12931:94;:::o;16738:221::-;16806:16;28144;;;:7;:16;;;;;;-1:-1:-1;;;;;28144:16:0;16835:72;;;;-1:-1:-1;;;16835:72:0;;25740:2:1;16835:72:0;;;25722:21:1;25779:2;25759:18;;;25752:30;25818:34;25798:18;;;25791:62;-1:-1:-1;;;25869:18:1;;;25862:42;25921:19;;16835:72:0;25538:408:1;16835:72:0;-1:-1:-1;16927:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;16927:24:0;;16738:221::o;16269:461::-;16344:13;16045:12;;;:7;:12;;;;;;-1:-1:-1;;;;;16045:12:0;;;;16395:11;;;;;16387:57;;;;-1:-1:-1;;;16387:57:0;;27358:2:1;16387:57:0;;;27340:21:1;27397:2;27377:18;;;27370:30;27436:34;27416:18;;;27409:62;-1:-1:-1;;;27487:18:1;;;27480:31;27528:19;;16387:57:0;27156:397:1;16387:57:0;2869:10;-1:-1:-1;;;;;16479:21:0;;;;:62;;-1:-1:-1;16504:37:0;16521:5;2869:10;17278:160;:::i;16504:37::-;16457:168;;;;-1:-1:-1;;;16457:168:0;;23037:2:1;16457:168:0;;;23019:21:1;23076:2;23056:18;;;23049:30;23115:34;23095:18;;;23088:62;23186:26;23166:18;;;23159:54;23230:19;;16457:168:0;22835:420:1;16457:168:0;16638:24;;;;:15;:24;;;;;;;;:29;;-1:-1:-1;;;;;;16638:29:0;-1:-1:-1;;;;;16638:29:0;;;;;;;;;16045:7;:12;;;;;;;16683:39;;16638:24;;16045:12;;;;;16683:39;;;16333:397;16269:461;;:::o;35936:87::-;5630:7;5657:6;-1:-1:-1;;;;;5657:6:0;2869:10;5719:23;5711:68;;;;-1:-1:-1;;;5711:68:0;;;;;;;:::i;:::-;35998:8:::1;:17:::0;;-1:-1:-1;;35998:17:0::1;::::0;::::1;;::::0;;;::::1;::::0;;35936:87::o;20646:263::-;20757:16;3181:7;2869:10;;-1:-1:-1;;;3181:7:0;;;;20807:9;20799:56;;;;-1:-1:-1;;;20799:56:0;;;;;;;:::i;:::-;20868:33;20878:4;20884:2;20888:8;20898:2;20868:9;:33::i;:::-;20713:196;20646:263;;;:::o;26942:1079::-;2869:10;27090:19;27101:7;27090:10;:19::i;:::-;27082:70;;;;-1:-1:-1;;;27082:70:0;;28162:2:1;27082:70:0;;;28144:21:1;28201:2;28181:18;;;28174:30;28240:34;28220:18;;;28213:62;-1:-1:-1;;;28291:18:1;;;28284:36;28337:19;;27082:70:0;27960:402:1;27082:70:0;27171:29;27192:7;15559:5;-1:-1:-1;15552:12:0;;15443:130;27171:29;27163:75;;;;-1:-1:-1;;;27163:75:0;;27760:2:1;27163:75:0;;;27742:21:1;27799:2;27779:18;;;27772:30;27838:34;27818:18;;;27811:62;-1:-1:-1;;;27889:18:1;;;27882:31;27930:19;;27163:75:0;27558:397:1;27163:75:0;27259:16;;;;:7;:16;;;;;;-1:-1:-1;;;;;27259:28:0;;;:16;;:28;;:64;;;27315:8;-1:-1:-1;;;;;27291:32:0;:20;27303:7;27291:11;:20::i;:::-;-1:-1:-1;;;;;27291:32:0;;27259:64;:103;;;;27327:35;27344:7;27353:8;27327:16;:35::i;:::-;27251:159;;;;-1:-1:-1;;;27251:159:0;;;;;;;:::i;:::-;27423:22;27428:7;27437;27423:4;:22::i;:::-;27456;27461:7;27470;27456:4;:22::i;:::-;8832:1;27594:37;;;;27545:24;27594:37;27545:41;-1:-1:-1;;;;;;;;;;;27545:41:0;:45;;27589:1;27545:45;:::i;:::-;:86;;27537:152;;;;-1:-1:-1;;;27537:152:0;;;;;;;:::i;:::-;8832:1;27702:24;27751:41;;;:24;:41;;-1:-1:-1;;;;;;;;;;;27751:41:0;27729:19;;:63;;27751:41;27729:63;:::i;:::-;27702:90;;27817:59;27846:1;27850:7;27859:16;27817:20;:59::i;:::-;27887:25;;;;:7;:25;;;;;;;;:35;;-1:-1:-1;;;;;;27887:35:0;-1:-1:-1;;;;;27887:35:0;;;;;;;;27933:18;;:9;:18;;;;;:23;;-1:-1:-1;;27887:25:0;27933:23;;-1:-1:-1;;27933:23:0;:::i;:::-;;;;-1:-1:-1;;8832:1:0;27967:41;;;;:24;:41;;-1:-1:-1;;;;;;;;;;;27967:46:0;;28012:1;;27967:41;:46;;28012:1;;27967:46;:::i;:::-;;;;-1:-1:-1;;;;;;;26942:1079:0:o;33471:387::-;5630:7;5657:6;-1:-1:-1;;;;;5657:6:0;2869:10;5719:23;5711:68;;;;-1:-1:-1;;;5711:68:0;;;;;;;:::i;:::-;6463:1:::1;6605:7;;:19;;6597:63;;;;-1:-1:-1::0;;;6597:63:0::1;;;;;;;:::i;:::-;6463:1;6671:7;:18:::0;33566:21:::2;33606:11:::0;33598:37:::2;;;::::0;-1:-1:-1;;;33598:37:0;;25398:2:1;33598:37:0::2;::::0;::::2;25380:21:1::0;25437:2;25417:18;;;25410:30;-1:-1:-1;;;25456:18:1;;;25449:43;25509:18;;33598:37:0::2;25196:337:1::0;33598:37:0::2;33664:7;33654;:17;33646:64;;;::::0;-1:-1:-1;;;33646:64:0;;24995:2:1;33646:64:0::2;::::0;::::2;24977:21:1::0;25034:2;25014:18;;;25007:30;25073:34;25053:18;;;25046:62;-1:-1:-1;;;25124:18:1;;;25117:32;25166:19;;33646:64:0::2;24793:398:1::0;33646:64:0::2;33780:12;::::0;;33722::::2;33780::::0;;;::::2;::::0;::::2;::::0;;;33747:10:::2;::::0;33771:7;;33739:54:::2;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33721:72;;;33808:7;33804:46;;33816:34;::::0;-1:-1:-1;;;33816:34:0;;24234:2:1;33816:34:0::2;::::0;::::2;24216:21:1::0;24273:2;24253:18;;;24246:30;-1:-1:-1;;;24292:18:1;;;24285:54;24356:18;;33816:34:0::2;24032:348:1::0;33804:46:0::2;-1:-1:-1::0;;6419:1:0::1;6712:22:::0;;-1:-1:-1;33471:387:0:o;29334:241::-;-1:-1:-1;;;;;15934:18:0;;29423:7;15934:18;;;:9;:18;;;;;;29451:5;:24;29443:80;;;;-1:-1:-1;;;29443:80:0;;20560:2:1;29443:80:0;;;20542:21:1;20599:2;20579:18;;;20572:30;20638:34;20618:18;;;20611:62;-1:-1:-1;;;20689:18:1;;;20682:41;20740:19;;29443:80:0;20358:407:1;29443:80:0;-1:-1:-1;;;;;;29541:19:0;;;;;;;;:12;:19;;;;;;;;:26;;;;;;;;;29334:241::o;34429:128::-;5630:7;5657:6;-1:-1:-1;;;;;5657:6:0;2869:10;5719:23;5711:68;;;;-1:-1:-1;;;5711:68:0;;;;;;;:::i;:::-;34506:12:::1;:43:::0;;-1:-1:-1;;;;;;34506:43:0::1;-1:-1:-1::0;;;;;34506:43:0;;;::::1;::::0;;;::::1;::::0;;34429:128::o;32705:432::-;32817:18;;;32833:1;32817:18;;;32761;32817;;;;;;32791:23;;32817:18;;;;;;;;;;;;;;;;;;;;;32791:44;;32846:30;32879:23;32893:8;32879:13;:23::i;:::-;32943:16;;;32957:1;32943:16;;;;;;;;32846:56;;-1:-1:-1;32913:27:0;;32943:16;;;;;;;;;;;;-1:-1:-1;32943:16:0;32913:46;;32986:13;29663:10;:17;;29583:105;32986:13;32970:10;32981:1;32970:13;;;;;;;;:::i;:::-;;;;;;:29;;;;;33026:16;;33010:10;33021:1;33010:13;;;;;;;;:::i;:::-;;;;;;:32;;;;;33063:13;33053:4;33058:1;33053:7;;;;;;;;:::i;:::-;;;;;;:23;;;;33097:10;33087:4;33092:1;33087:7;;;;;;;;:::i;:::-;;;;;;;;;;:20;-1:-1:-1;33125:4:0;;32705:432;-1:-1:-1;;;32705:432:0:o;20917:::-;21033:16;3181:7;2869:10;;-1:-1:-1;;;3181:7:0;;;;21083:9;21075:56;;;;-1:-1:-1;;;21075:56:0;;;;;;;:::i;:::-;21144:33;21154:4;21160:2;21164:8;21174:2;21144:9;:33::i;:::-;21246:40;21269:4;21275:2;21279;21246:40;;;;;;;;;;;;:22;:40::i;:::-;21238:103;;;;-1:-1:-1;;;21238:103:0;;;;;;;:::i;32353:340::-;32413:16;32442:18;32463:17;32473:6;-1:-1:-1;;;;;15934:18:0;15907:7;15934:18;;;:9;:18;;;;;;;15851:109;32463:17;32442:38;;32491:23;32531:10;-1:-1:-1;;;;;32517:25:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32517:25:0;;32491:51;;32557:9;32553:109;32576:10;32572:1;:14;32553:109;;;32620:30;32640:6;32648:1;32620:19;:30::i;:::-;32608:6;32615:1;32608:9;;;;;;;;:::i;:::-;;;;;;;;;;:42;32588:3;;;;:::i;:::-;;;;32553:109;;;-1:-1:-1;32679:6:0;32353:340;-1:-1:-1;;;32353:340:0:o;29696:208::-;29763:7;29799:13;29663:10;:17;;29583:105;29799:13;29791:5;:21;29783:78;;;;-1:-1:-1;;;29783:78:0;;28981:2:1;29783:78:0;;;28963:21:1;29020:2;29000:18;;;28993:30;29059:34;29039:18;;;29032:62;-1:-1:-1;;;29110:18:1;;;29103:42;29162:19;;29783:78:0;28779:408:1;29783:78:0;29879:10;29890:5;29879:17;;;;;;;;:::i;:::-;;;;;;;;;29872:24;;29696:208;;;:::o;13139:101::-;5630:7;5657:6;-1:-1:-1;;;;;5657:6:0;2869:10;5719:23;5711:68;;;;-1:-1:-1;;;5711:68:0;;;;;;;:::i;:::-;13213:19;;::::1;::::0;:8:::1;::::0;:19:::1;::::0;::::1;::::0;::::1;:::i;:::-;;13139:101:::0;:::o;18806:1832::-;6463:1;6605:7;;:19;;6597:63;;;;-1:-1:-1;;;6597:63:0;;;;;;;:::i;:::-;6463:1;6671:7;:18;19015:16:::1;::::0;2869:10;;19015:25:::1;::::0;19034:6;;19015:25:::1;:::i;:::-;19002:9;:38;;18994:94;;;::::0;-1:-1:-1;;;18994:94:0;;28569:2:1;18994:94:0::1;::::0;::::1;28551:21:1::0;28608:2;28588:18;;;28581:30;28647:34;28627:18;;;28620:62;-1:-1:-1;;;28698:18:1;;;28691:41;28749:19;;18994:94:0::1;28367:407:1::0;18994:94:0::1;-1:-1:-1::0;;;;;19107:21:0;::::1;19099:65;;;::::0;-1:-1:-1;;;19099:65:0;;30225:2:1;19099:65:0::1;::::0;::::1;30207:21:1::0;30264:2;30244:18;;;30237:30;30303:33;30283:18;;;30276:61;30354:18;;19099:65:0::1;30023:355:1::0;19099:65:0::1;3157:4:::0;3181:7;-1:-1:-1;;;3181:7:0;;;;19183:9:::1;19175:56;;;;-1:-1:-1::0;;;19175:56:0::1;;;;;;;:::i;:::-;19250:28;::::0;::::1;;:36;;:28:::0;:36:::1;19242:103;;;::::0;-1:-1:-1;;;19242:103:0;;29802:2:1;19242:103:0::1;::::0;::::1;29784:21:1::0;29841:2;29821:18;;;29814:30;29880:34;29860:18;;;29853:62;-1:-1:-1;;;29931:18:1;;;29924:52;29993:19;;19242:103:0::1;29600:418:1::0;19242:103:0::1;19360:15;::::0;::::1;;:23;;:15:::0;:23:::1;19356:497;;;-1:-1:-1::0;;;;;19408:41:0;::::1;;::::0;;;:31:::1;:41;::::0;;;;;9351:1:::1;::::0;19408:50:::1;::::0;19452:6;;19408:50:::1;:::i;:::-;:90;;19400:148;;;::::0;-1:-1:-1;;;19400:148:0;;22201:2:1;19400:148:0::1;::::0;::::1;22183:21:1::0;22240:2;22220:18;;;22213:30;22279:34;22259:18;;;22252:62;-1:-1:-1;;;22330:18:1;;;22323:43;22383:19;;19400:148:0::1;21999:409:1::0;19400:148:0::1;19597:4;::::0;19613:26:::1;::::0;-1:-1:-1;;13962:2:1;13958:15;;;13954:53;19613:26:0::1;::::0;::::1;13942:66:1::0;19571:70:0::1;::::0;19590:5;;14024:12:1;;19613:26:0::1;;;;;;;;;;;;19603:37;;;;;;19571:18;:70::i;:::-;19563:125;;;::::0;-1:-1:-1;;;19563:125:0;;19332:2:1;19563:125:0::1;::::0;::::1;19314:21:1::0;19371:2;19351:18;;;19344:30;19410:34;19390:18;;;19383:62;-1:-1:-1;;;19461:18:1;;;19454:40;19511:19;;19563:125:0::1;19130:406:1::0;19563:125:0::1;19356:497;;;19774:28;::::0;-1:-1:-1;;;;;19729:32:0;::::1;;::::0;;;:22:::1;:32;::::0;;;;;:41:::1;::::0;19764:6;;19729:41:::1;:::i;:::-;:73;;19721:120;;;::::0;-1:-1:-1;;;19721:120:0;;18929:2:1;19721:120:0::1;::::0;::::1;18911:21:1::0;18968:2;18948:18;;;18941:30;19007:34;18987:18;;;18980:62;-1:-1:-1;;;19058:18:1;;;19051:32;19100:19;;19721:120:0::1;18727:398:1::0;19721:120:0::1;19865:29;19897:15;19905:6;19897:7;:15::i;:::-;19865:47;;19923:26;19952:10;19963:1;19952:13;;;;;;;;:::i;:::-;;;;;;;19923:42;;19976:25;20004:10;20015:1;20004:13;;;;;;;;:::i;:::-;;;;;;;19976:41;;20035:9;20030:381;20054:6;20050:1;:10;20030:381;;;20082:55;20111:1;20115:7;20124:9;20134:1;20124:12;;;;;;;;:::i;:::-;;;;;;;20082:20;:55::i;:::-;20178:7;20154;:21;20162:9;20172:1;20162:12;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;20154:21;;;;::::1;::::0;;;;;;;;-1:-1:-1;20154:21:0;;;:31;;-1:-1:-1;;;;;;20154:31:0::1;-1:-1:-1::0;;;;;20154:31:0;;::::1;;::::0;;20200:18;;::::1;::::0;;:9:::1;:18:::0;;;;;:23;;-1:-1:-1;;;20200:23:0::1;::::0;-1:-1:-1;;20200:23:0::1;:::i;:::-;;;;;;;;20266:8;20275:1;20266:11;;;;;;;;:::i;:::-;;;;;;;20238;:25;20250:9;20260:1;20250:12;;;;;;;;:::i;:::-;;;;;;;20238:25;;;;;;;;;;;:39;;;;20333:1;20292:24;:37;20317:8;20326:1;20317:11;;;;;;;;:::i;:::-;;;;;;;20292:37;;;;;;;;;;;;:42;;;;;;;:::i;:::-;;;;;;;;20386:9;20396:1;20386:12;;;;;;;;:::i;:::-;;;;;;;20377:7;-1:-1:-1::0;;;;;20356:43:0::1;20373:1;-1:-1:-1::0;;;;;20356:43:0::1;-1:-1:-1::0;;;;;;;;;;;20356:43:0::1;;;;;;;;;20062:3:::0;::::1;::::0;::::1;:::i;:::-;;;;20030:381;;;-1:-1:-1::0;20453:15:0::1;::::0;::::1;;:23;;:15:::0;:23:::1;20449:182;;;-1:-1:-1::0;;;;;20493:41:0;::::1;;::::0;;;:31:::1;:41;::::0;;;;:51;;20538:6;;20493:41;:51:::1;::::0;20538:6;;20493:51:::1;:::i;:::-;::::0;;;-1:-1:-1;20449:182:0::1;::::0;-1:-1:-1;20449:182:0::1;;-1:-1:-1::0;;;;;20577:32:0;::::1;;::::0;;;:22:::1;:32;::::0;;;;:42;;20613:6;;20577:32;:42:::1;::::0;20613:6;;20577:42:::1;:::i;:::-;::::0;;;-1:-1:-1;;20449:182:0::1;-1:-1:-1::0;;6419:1:0;6712:22;;-1:-1:-1;;;;;18806:1832:0:o;34569:1355::-;34685:18;;;34701:1;34685:18;;;34628:17;34685:18;;;;;;34658:24;;34685:18;;;;;;;;;;;;;;;;;;;;;34658:45;;34714:25;34756:7;-1:-1:-1;;;;;34742:22:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34742:22:0;;34714:50;;34775:25;34817:7;-1:-1:-1;;;;;34803:22:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34803:22:0;-1:-1:-1;34775:50:0;-1:-1:-1;34836:16:0;;;34920;34935:1;34920:12;:16;:::i;:::-;34910:27;34894:43;;34950:879;34968:7;34956:8;:19;34950:879;;34991:20;35357:5;35153:15;35200:5;2869:10;35106:206;;;;;;15266:19:1;;;;15301:12;;15294:28;;;;-1:-1:-1;;15360:2:1;15356:15;;;15352:53;15338:12;;;15331:75;15422:12;;;15415:28;;;15459:13;;35106:206:0;;;;;;;;;;;;35070:265;;;;;;35040:314;;:322;;;;:::i;:::-;34991:386;-1:-1:-1;35392:12:0;;35419:157;35440:8;35438:1;:10;35419:157;;;35492:8;35501:1;35492:11;;;;;;;;:::i;:::-;;;;;;;35476:12;:27;35473:88;;;35537:4;35527:14;;35473:88;35450:3;;;;:::i;:::-;;;;35419:157;;;-1:-1:-1;28120:4:0;28144:16;;;:7;:16;;;;;;-1:-1:-1;;;;;28144:16:0;:30;;;35593:33;;;35619:7;35618:8;35593:33;35590:204;;;35667:12;35646:8;35655;35646:18;;;;;;;;:::i;:::-;;;;;;:33;;;;;35719:27;35733:12;35719:13;:27::i;:::-;35698:8;35707;35698:18;;;;;;;;:::i;:::-;;;;;;;;;;:48;35765:13;35777:1;35765:13;;:::i;:::-;;;35590:204;35808:9;35816:1;35808:9;;:::i;:::-;;;34976:853;;34950:879;;;35850:8;35839:5;35845:1;35839:8;;;;;;;;:::i;:::-;;;;;;:19;;;;35880:8;35869:5;35875:1;35869:8;;;;;;;;:::i;:::-;;;;;;;;;;:19;-1:-1:-1;35902:5:0;;34569:1355;-1:-1:-1;;;;;;34569:1355:0:o;5811:103::-;5630:7;5657:6;-1:-1:-1;;;;;5657:6:0;2869:10;5719:23;5711:68;;;;-1:-1:-1;;;5711:68:0;;;;;;;:::i;:::-;5876:30:::1;5903:1;5876:18;:30::i;:::-;5811:103::o:0;34319:98::-;5630:7;5657:6;-1:-1:-1;;;;;5657:6:0;2869:10;5719:23;5711:68;;;;-1:-1:-1;;;5711:68:0;;;;;;;:::i;:::-;34384:6:::1;:25:::0;;-1:-1:-1;;;;;;34384:25:0::1;-1:-1:-1::0;;;;;34384:25:0;;;::::1;::::0;;;::::1;::::0;;34319:98::o;33149:314::-;5630:7;5657:6;-1:-1:-1;;;;;5657:6:0;2869:10;5719:23;5711:68;;;;-1:-1:-1;;;5711:68:0;;;;;;;:::i;:::-;6463:1:::1;6605:7;;:19;;6597:63;;;;-1:-1:-1::0;;;6597:63:0::1;;;;;;;:::i;:::-;6463:1;6671:7;:18:::0;33232:21:::2;33272:11:::0;33264:37:::2;;;::::0;-1:-1:-1;;;33264:37:0;;25398:2:1;33264:37:0::2;::::0;::::2;25380:21:1::0;25437:2;25417:18;;;25410:30;-1:-1:-1;;;25456:18:1;;;25449:43;25509:18;;33264:37:0::2;25196:337:1::0;33264:37:0::2;33371:12;::::0;;33313::::2;33371::::0;;;::::2;::::0;::::2;::::0;;;33338:10:::2;::::0;33362:7;;33330:54:::2;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33312:72;;;33399:7;33395:46;;33407:34;::::0;-1:-1:-1;;;33407:34:0;;24234:2:1;33407:34:0::2;::::0;::::2;24216:21:1::0;24273:2;24253:18;;;24246:30;-1:-1:-1;;;24292:18:1;;;24285:54;24356:18;;33407:34:0::2;24032:348:1::0;33395:46:0::2;-1:-1:-1::0;;6419:1:0::1;6712:22:::0;;33149:314::o;15581:130::-;15649:4;15681:5;15674:3;:12;;:28;;;;-1:-1:-1;;15697:5:0;-1:-1:-1;15690:12:0;;15581:130::o;13033:98::-;13083:13;13116:7;13109:14;;;;;:::i;36035:93::-;5630:7;5657:6;-1:-1:-1;;;;;5657:6:0;2869:10;5719:23;5711:68;;;;-1:-1:-1;;;5711:68:0;;;;;;;:::i;:::-;36099:12:::1;:21:::0;;;::::1;;;;-1:-1:-1::0;;36099:21:0;;::::1;::::0;;;::::1;::::0;;36035:93::o;23407:796::-;23500:16;3181:7;2869:10;;-1:-1:-1;;;3181:7:0;;;;23550:9;23542:56;;;;-1:-1:-1;;;23542:56:0;;;;;;;:::i;:::-;23630:8;-1:-1:-1;;;;;23619:19:0;:7;-1:-1:-1;;;;;23619:19:0;;:50;;;;23661:8;-1:-1:-1;;;;;23642:27:0;:15;23654:2;23642:11;:15::i;:::-;-1:-1:-1;;;;;23642:27:0;;23619:50;:89;;;;23673:35;23690:7;23699:8;23673:16;:35::i;:::-;23611:145;;;;-1:-1:-1;;;23611:145:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23775:21:0;;23767:67;;;;-1:-1:-1;;;23767:67:0;;20158:2:1;23767:67:0;;;20140:21:1;20197:2;20177:18;;;20170:30;20236:34;20216:18;;;20209:62;-1:-1:-1;;;20287:18:1;;;20280:31;20328:19;;23767:67:0;19956:397:1;23767:67:0;23853:11;;;;:7;:11;;;;;;-1:-1:-1;;;;;23853:22:0;;;:11;;:22;23845:74;;;;-1:-1:-1;;;23845:74:0;;;;;;;:::i;:::-;23931:45;23952:7;23969:1;23973:2;23931:20;:45::i;:::-;24037:1;24015:11;;;:7;:11;;;;;;;;:24;;-1:-1:-1;;;;;;24015:24:0;;;-1:-1:-1;;;;;24050:18:0;;;;:9;:18;;;;;:23;;24015:24;;24037:1;24050:23;;24015:24;;24050:23;:::i;:::-;;;;-1:-1:-1;;24091:33:0;;24121:2;;24117:1;;-1:-1:-1;;;;;24091:33:0;;;-1:-1:-1;;;;;;;;;;;24091:33:0;24117:1;;24091:33;-1:-1:-1;24193:1:0;24163:19;;;:15;:19;;;;;:32;;-1:-1:-1;;;;;;24163:32:0;;;-1:-1:-1;23407:796:0:o;17608:1186::-;5630:7;5657:6;-1:-1:-1;;;;;5657:6:0;2869:10;5719:23;5711:68;;;;-1:-1:-1;;;5711:68:0;;;;;;;:::i;:::-;17731:12:::1;::::0;:38:::1;::::0;;-1:-1:-1;;;17731:38:0;;;;17700:28:::1;::::0;-1:-1:-1;;;;;17731:12:0::1;::::0;:36:::1;::::0;:38:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:12;:38;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3157:4:::0;3181:7;17700:69;;-1:-1:-1;;;;3181:7:0;;;;17788:9:::1;17780:56;;;;-1:-1:-1::0;;;17780:56:0::1;;;;;;;:::i;:::-;17847:25;17875:14;17890:1;17875:17;;;;;;;;:::i;:::-;;;;;;;17847:45;;17903:25;17931:14;17946:1;17931:17;;;;;;;;:::i;:::-;;;;;;;17903:45;;17986:8;:15;17967:8;:15;:34;17959:43;;;::::0;::::1;;18030:15:::0;;18094:22:::1;::::0;18064:17:::1;::::0;:26:::1;::::0;18030:15;;18064:26:::1;:::i;:::-;:52;;18056:124;;;::::0;-1:-1:-1;;;18056:124:0;;26930:2:1;18056:124:0::1;::::0;::::1;26912:21:1::0;26969:2;26949:18;;;26942:30;27008:34;26988:18;;;26981:62;27079:29;27059:18;;;27052:57;27126:19;;18056:124:0::1;26728:423:1::0;18056:124:0::1;18196:9;18191:434;18215:8;:15;18211:1;:19;18191:434;;;18252:67;18281:1;18285:20;18307:8;18316:1;18307:11;;;;;;;;:::i;18252:67::-;-1:-1:-1::0;;;;;18334:31:0;::::1;;::::0;;;:9:::1;:31;::::0;;;;:36;;18369:1:::1;::::0;18334:31;:36:::1;::::0;18369:1;;18334:36:::1;:::i;:::-;;;;;;;;18408:20;18385:7;:20;18393:8;18402:1;18393:11;;;;;;;;:::i;:::-;;;;;;;18385:20;;;;;;;;;;;;:43;;;;;-1:-1:-1::0;;;;;18385:43:0::1;;;;;-1:-1:-1::0;;;;;18385:43:0::1;;;;;;18470:8;18479:1;18470:11;;;;;;;;:::i;:::-;;;;;;;18443;:24;18455:8;18464:1;18455:11;;;;;;;;:::i;:::-;;;;;;;18443:24;;;;;;;;;;;:38;;;;18537:1;18496:24;:37;18521:8;18530:1;18521:11;;;;;;;;:::i;:::-;;;;;;;18496:37;;;;;;;;;;;;:42;;;;;;;:::i;:::-;;;;;;;;18601:8;18610:1;18601:11;;;;;;;;:::i;:::-;;;;;;;18579:20;-1:-1:-1::0;;;;;18558:55:0::1;18575:1;-1:-1:-1::0;;;;;18558:55:0::1;-1:-1:-1::0;;;;;;;;;;;18558:55:0::1;;;;;;;;;18232:3:::0;::::1;::::0;::::1;:::i;:::-;;;;18191:434;;;;18658:6;18637:17;;:27;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;18701:22:0::1;::::0;18680:17:::1;::::0;:43:::1;18677:110;;;18740:28;:35:::0;;-1:-1:-1;;18740:35:0::1;18771:4;18740:35;::::0;;18677:110:::1;17689:1105;;;;17608:1186:::0;:::o;34068:245::-;5630:7;5657:6;-1:-1:-1;;;;;5657:6:0;2869:10;5719:23;5711:68;;;;-1:-1:-1;;;5711:68:0;;;;;;;:::i;:::-;34145:22:::1;:32:::0;;;34199:17:::1;::::0;:43;::::1;34196:110;;;34259:28;:35:::0;;-1:-1:-1;;34259:35:0::1;34290:4;34259:35;::::0;;34196:110:::1;34068:245:::0;:::o;16967:303::-;2869:10;-1:-1:-1;;;;;17064:24:0;;;;17056:76;;;;-1:-1:-1;;;17056:76:0;;24587:2:1;17056:76:0;;;24569:21:1;24626:2;24606:18;;;24599:30;24665:34;24645:18;;;24638:62;-1:-1:-1;;;24716:18:1;;;24709:37;24763:19;;17056:76:0;24385:403:1;17056:76:0;2869:10;17145:32;;;;:18;:32;;;;;;;;-1:-1:-1;;;;;17145:42:0;;;;;;;;;;;;:53;;-1:-1:-1;;17145:53:0;;;;;;;;;;17214:48;;17410:41:1;;;17145:42:0;;2869:10;17214:48;;17383:18:1;17214:48:0;;;;;;;16967:303;;:::o;26463:471::-;2869:10;26600:25;26617:7;26600:16;:25::i;:::-;26592:82;;;;-1:-1:-1;;;26592:82:0;;23821:2:1;26592:82:0;;;23803:21:1;23860:2;23840:18;;;23833:30;23899:34;23879:18;;;23872:62;-1:-1:-1;;;23950:18:1;;;23943:42;24002:19;;26592:82:0;23619:408:1;26592:82:0;26693:16;;;;:7;:16;;;;;;-1:-1:-1;;;;;26693:28:0;;;:16;;:28;;:64;;;26749:8;-1:-1:-1;;;;;26725:32:0;:20;26737:7;26725:11;:20::i;:::-;-1:-1:-1;;;;;26725:32:0;;26693:64;:103;;;;26761:35;26778:7;26787:8;26761:16;:35::i;:::-;26685:159;;;;-1:-1:-1;;;26685:159:0;;;;;;;:::i;:::-;26855:22;26860:7;26869;26855:4;:22::i;:::-;-1:-1:-1;;;;;26888:33:0;;;;;;:24;:33;;;;;:38;;26925:1;;26888:33;:38;;26925:1;;26888:38;:::i;:::-;;;;-1:-1:-1;;;;;26463:471:0:o;24211:1080::-;24319:16;3181:7;2869:10;;-1:-1:-1;;;3181:7:0;;;;24369:9;24361:56;;;;-1:-1:-1;;;24361:56:0;;;;;;;:::i;:::-;24445:8;-1:-1:-1;;;;;24434:19:0;:7;-1:-1:-1;;;;;24434:19:0;;;:67;;;;;24457:35;24474:7;24483:8;24457:16;:35::i;:::-;:44;24434:67;24430:262;;;24523:9;24518:163;24542:3;:10;24538:1;:14;24518:163;;;24609:8;-1:-1:-1;;;;;24586:31:0;:19;24598:3;24602:1;24598:6;;;;;;;;:::i;:::-;;;;;;;24586:11;:19::i;:::-;-1:-1:-1;;;;;24586:31:0;;24578:87;;;;-1:-1:-1;;;24578:87:0;;;;;;;:::i;:::-;24554:3;;;;:::i;:::-;;;;24518:163;;;;24430:262;24710:9;24705:146;24729:3;:10;24725:1;:14;24705:146;;;24788:7;-1:-1:-1;;;;;24769:26:0;:7;:15;24777:3;24781:1;24777:6;;;;;;;;:::i;:::-;;;;;;;;;;;;24769:15;;;;;;;;;;-1:-1:-1;24769:15:0;;-1:-1:-1;;;;;24769:15:0;:26;24761:78;;;;-1:-1:-1;;;24761:78:0;;;;;;;:::i;:::-;24741:3;;;;:::i;:::-;;;;24705:146;;;;24894:9;24889:255;24913:3;:10;24909:1;:14;24889:255;;;24945:49;24966:7;24983:1;24987:3;24991:1;24987:6;;;;;;;;:::i;24945:49::-;25035:1;25009:7;:15;25017:3;25021:1;25017:6;;;;;;;;:::i;:::-;;;;;;;;;;;;25009:15;;;;;;;;;;;;;-1:-1:-1;25009:15:0;;;:28;;-1:-1:-1;;;;;;25009:28:0;-1:-1:-1;;;;;25009:28:0;;;;;;25052:18;;;;;:9;:18;;;;;:23;;-1:-1:-1;;;25052:23:0;;-1:-1:-1;;25052:23:0;:::i;:::-;;;;;;;;25125:3;25129:1;25125:6;;;;;;;;:::i;:::-;;;;;;;25121:1;-1:-1:-1;;;;;25095:37:0;25104:7;-1:-1:-1;;;;;25095:37:0;-1:-1:-1;;;;;;;;;;;25095:37:0;;;;;;;;;24925:3;;;;:::i;:::-;;;;24889:255;;;;25187:9;25182:102;25204:3;:10;25200:1;:14;25182:102;;;25270:1;25236:15;:23;25252:3;25256:1;25252:6;;;;;;;;:::i;:::-;;;;;;;25236:23;;;;;;;;;;;;:36;;;;;-1:-1:-1;;;;;25236:36:0;;;;;-1:-1:-1;;;;;25236:36:0;;;;;;25216:3;;;;;:::i;:::-;;;;25182:102;;21357:475;21494:16;3181:7;2869:10;;-1:-1:-1;;;3181:7:0;;;;21544:9;21536:56;;;;-1:-1:-1;;;21536:56:0;;;;;;;:::i;:::-;21605:33;21615:4;21621:2;21625:8;21635:2;21605:9;:33::i;:::-;21725:42;21748:4;21754:2;21758;21762:4;;21725:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21725:22:0;;-1:-1:-1;;;21725:42:0:i;:::-;21717:105;;;;-1:-1:-1;;;21717:105:0;;;;;;;:::i;25299:1156::-;5630:7;5657:6;-1:-1:-1;;;;;5657:6:0;2869:10;5719:23;5711:68;;;;-1:-1:-1;;;5711:68:0;;;;;;;:::i;:::-;25459:6:::1;25440:8;:15;:25;25432:68;;;::::0;-1:-1:-1;;;25432:68:0;;23462:2:1;25432:68:0::1;::::0;::::1;23444:21:1::0;23501:2;23481:18;;;23474:30;23540:32;23520:18;;;23513:60;23590:18;;25432:68:0::1;23260:354:1::0;25432:68:0::1;8832:1;25519:10;:29;:56;;;;8876:1;25552:10;:23;25519:56;25511:107;;;::::0;-1:-1:-1;;;25511:107:0;;18522:2:1;25511:107:0::1;::::0;::::1;18504:21:1::0;18561:2;18541:18;;;18534:30;18600:34;18580:18;;;18573:62;-1:-1:-1;;;18651:18:1;;;18644:36;18697:19;;25511:107:0::1;18320:402:1::0;25511:107:0::1;25686:32;::::0;;;:20:::1;:32;::::0;;;;;;;;25637:24:::1;:36:::0;;;;;;;:45:::1;::::0;25676:6;;25637:45:::1;:::i;:::-;:81;;25629:147;;;;-1:-1:-1::0;;;25629:147:0::1;;;;;;;:::i;:::-;25789:21;8832:1;25827:10;:29;25823:241;;;8832:1;25911:41;::::0;:24:::1;:41;::::0;-1:-1:-1;;;;;;;;;;;25911:41:0;25889:19:::1;::::0;:63:::1;::::0;25911:41;25889:63:::1;:::i;:::-;25873:79;;25823:241;;;8876:1;26017:35;::::0;:24:::1;:35;::::0;;;26001:13:::1;::::0;:51:::1;::::0;26017:35;26001:51:::1;:::i;:::-;25985:67;;25823:241;26081:9;26076:312;26100:8;:15;26096:1;:19;26076:312;;;26137:15;26155:17;26171:1:::0;26155:13;:17:::1;:::i;:::-;26137:35;;26187:54;26216:1;26220:8;26229:1;26220:11;;;;;;;;:::i;:::-;;;;;;;26233:7;26187:20;:54::i;:::-;26275:8;26284:1;26275:11;;;;;;;;:::i;:::-;;;;;;;26256:7;:16;26264:7;26256:16;;;;;;;;;;;;:30;;;;;-1:-1:-1::0;;;;;26256:30:0::1;;;;;-1:-1:-1::0;;;;;26256:30:0::1;;;;;;26327:1;26301:9;:22;26311:8;26320:1;26311:11;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;26301:22:0::1;-1:-1:-1::0;;;;;26301:22:0::1;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;26343:20:0::1;::::0;;;:11:::1;:20;::::0;;;;:33;;;26117:3;::::1;::::0;::::1;:::i;:::-;;;;26076:312;;;-1:-1:-1::0;26401:36:0::1;::::0;;;:24:::1;:36;::::0;;;;:46;;26441:6;;26401:36;:46:::1;::::0;26441:6;;26401:46:::1;:::i;:::-;::::0;;;-1:-1:-1;;;;;;25299:1156:0:o;33870:92::-;5630:7;5657:6;-1:-1:-1;;;;;5657:6:0;2869:10;5719:23;5711:68;;;;-1:-1:-1;;;5711:68:0;;;;;;;:::i;:::-;33931:15:::1;:23:::0;;-1:-1:-1;;33931:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;33870:92::o;13248:299::-;28120:4;28144:16;;;:7;:16;;;;;;13315:13;;-1:-1:-1;;;;;28144:16:0;13341:75;;;;-1:-1:-1;;;13341:75:0;;26514:2:1;13341:75:0;;;26496:21:1;26553:2;26533:18;;;26526:30;26592:34;26572:18;;;26565:62;-1:-1:-1;;;26643:18:1;;;26636:45;26698:19;;13341:75:0;26312:411:1;13341:75:0;13429:21;13453:8;13429:32;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13503:7;13512:25;13529:7;13512:16;:25::i;:::-;13486:52;;;;;;;;;:::i;:::-;;;;;;;;;;;;;13472:67;;;13248:299;;;:::o;37010:110::-;5630:7;5657:6;-1:-1:-1;;;;;5657:6:0;2869:10;5719:23;5711:68;;;;-1:-1:-1;;;5711:68:0;;;;;;;:::i;:::-;37084:16:::1;:28:::0;37010:110::o;15719:124::-;15781:4;15813:5;15806:3;:12;;:28;;;;-1:-1:-1;;15829:5:0;-1:-1:-1;15822:12:0;;15719:124::o;36870:128::-;5630:7;5657:6;-1:-1:-1;;;;;5657:6:0;2869:10;5719:23;5711:68;;;;-1:-1:-1;;;5711:68:0;;;;;;;:::i;:::-;36952:28:::1;:38:::0;36870:128::o;33974:82::-;5630:7;5657:6;-1:-1:-1;;;;;5657:6:0;2869:10;5719:23;5711:68;;;;-1:-1:-1;;;5711:68:0;;;;;;;:::i;:::-;34036:4:::1;:12:::0;33974:82::o;17278:160::-;-1:-1:-1;;;;;17393:27:0;;;17369:4;17393:27;;;:18;:27;;;;;;;;:37;;;;;;;;;;;;;;;17278:160::o;5925:201::-;5630:7;5657:6;-1:-1:-1;;;;;5657:6:0;2869:10;5719:23;5711:68;;;;-1:-1:-1;;;5711:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6014:22:0;::::1;6006:73;;;::::0;-1:-1:-1;;;6006:73:0;;21391:2:1;6006:73:0::1;::::0;::::1;21373:21:1::0;21430:2;21410:18;;;21403:30;21469:34;21449:18;;;21442:62;-1:-1:-1;;;21520:18:1;;;21513:36;21566:19;;6006:73:0::1;21189:402:1::0;6006:73:0::1;6090:28;6109:8;6090:18;:28::i;13905:761::-:0;13958:7;14031:8;14027:632;;-1:-1:-1;8606:1:0;;13905:761;-1:-1:-1;13905:761:0:o;14027:632::-;14104:1;14097:3;:8;;:20;;;;;14116:1;14109:3;:8;;14097:20;14093:566;;;-1:-1:-1;8645:1:0;;13905:761;-1:-1:-1;13905:761:0:o;14093:566::-;14167:3;14174:1;14167:8;:21;;;;;14179:3;14186:2;14179:9;14167:21;14163:496;;;-1:-1:-1;8688:1:0;;13905:761;-1:-1:-1;13905:761:0:o;14163:496::-;14249:2;14242:3;:9;;:24;;;;;14262:4;14255:3;:11;;14242:24;14238:421;;;-1:-1:-1;8733:1:0;;13905:761;-1:-1:-1;13905:761:0:o;14238:421::-;14329:4;14322:3;:11;;:27;;;;;14344:5;14337:3;:12;;14322:27;14318:341;;;-1:-1:-1;8781:1:0;;13905:761;-1:-1:-1;13905:761:0:o;14318:341::-;14415:5;14408:3;:12;;:28;;;;;14431:5;14424:3;:12;;14408:28;14404:255;;;-1:-1:-1;8832:1:0;;13905:761;-1:-1:-1;13905:761:0:o;14404:255::-;14504:5;14497:3;:12;;:28;;;;;14520:5;14513:3;:12;;14497:28;14493:166;;;-1:-1:-1;8876:1:0;;13905:761;-1:-1:-1;13905:761:0:o;14493:166::-;14591:56;;-1:-1:-1;;;14591:56:0;;19743:2:1;14591:56:0;;;19725:21:1;19782:2;19762:18;;;19755:30;19821:34;19801:18;;;19794:62;-1:-1:-1;;;19872:18:1;;;19865:44;19926:19;;14591:56:0;19541:410:1;14493:166:0;13905:761;;;:::o;29919:516::-;-1:-1:-1;;;;;30052:18:0;;30048:187;;30087:40;30119:7;30769:10;:17;;30742:24;;;;:15;:24;;;;;:44;;;30797:24;;;;;;;;;;;;30665:164;30087:40;30048:187;;;30157:2;-1:-1:-1;;;;;30149:10:0;:4;-1:-1:-1;;;;;30149:10:0;;30145:90;;30176:47;30209:4;30215:7;30176:32;:47::i;:::-;-1:-1:-1;;;;;30249:16:0;;30245:183;;30282:45;30319:7;30282:36;:45::i;:::-;29919:516;;;:::o;30245:183::-;30355:4;-1:-1:-1;;;;;30349:10:0;:2;-1:-1:-1;;;;;30349:10:0;;30345:83;;-1:-1:-1;;;;;15934:18:0;;;;30528:14;15934:18;;;:9;:18;;;;;;;;;30569:12;:16;;;;;:24;;;;;;;;:34;;;30614:26;;;:17;:26;;;;;:35;-1:-1:-1;29919:516:0:o;28190:756::-;28302:4;-1:-1:-1;;;;;28323:13:0;;5269:20;5317:8;28319:620;;28359:72;;-1:-1:-1;;;28359:72:0;;-1:-1:-1;;;;;28359:36:0;;;;;:72;;2869:10;;28410:4;;28416:7;;28425:5;;28359:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28359:72:0;;;;;;;;-1:-1:-1;;28359:72:0;;;;;;;;;;;;:::i;:::-;;;28355:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28601:13:0;;28597:272;;28644:60;;-1:-1:-1;;;28644:60:0;;;;;;;:::i;28597:272::-;28819:6;28813:13;28804:6;28800:2;28796:15;28789:38;28355:529;-1:-1:-1;;;;;;28482:51:0;-1:-1:-1;;;28482:51:0;;-1:-1:-1;28475:58:0;;28319:620;-1:-1:-1;28923:4:0;28319:620;28190:756;;;;;;:::o;21840:528::-;21951:11;;;;:7;:11;;;;;;-1:-1:-1;;;;;21951:19:0;;;:11;;:19;21943:28;;;;;;21998:8;-1:-1:-1;;;;;21990:16:0;:4;-1:-1:-1;;;;;21990:16:0;;:47;;;;22029:8;-1:-1:-1;;;;;22010:27:0;:15;22022:2;22010:11;:15::i;:::-;-1:-1:-1;;;;;22010:27:0;;21990:47;:83;;;;22041:32;22058:4;22064:8;22041:16;:32::i;:::-;21982:139;;;;-1:-1:-1;;;21982:139:0;;;;;;;:::i;:::-;22132:34;22153:4;22159:2;22163;22132:20;:34::i;:::-;-1:-1:-1;;;;;22201:15:0;;;;;;:9;:15;;;;;:20;;22220:1;;22201:15;:20;;22220:1;;22201:20;:::i;:::-;;;;-1:-1:-1;;;;;;;22232:13:0;;;;;;:9;:13;;;;;:18;;22249:1;;22232:13;:18;;22249:1;;22232:18;:::i;:::-;;;;-1:-1:-1;;22261:11:0;;;;:7;:11;;;;;;:16;;-1:-1:-1;;;;;;22261:16:0;-1:-1:-1;;;;;22261:16:0;;;;;;;;;22295:22;;22261:11;;22295:22;;;;-1:-1:-1;;;;;;;;;;;22295:22:0;;22358:1;22328:19;;;:15;:19;;;;;:32;;-1:-1:-1;;;;;;22328:32:0;;;-1:-1:-1;;;21840:528:0:o;6782:190::-;6907:4;6960;6931:25;6944:5;6951:4;6931:12;:25::i;:::-;:33;;6782:190;-1:-1:-1;;;;6782:190:0:o;36140:718::-;36226:8;;36191:18;;36226:8;;36225:9;:26;;;;-1:-1:-1;36239:12:0;;;;;;;36238:13;36225:26;36222:629;;;36271:6;;;;;;;;;-1:-1:-1;;;;;36271:6:0;-1:-1:-1;;;;;36271:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;36271:25:0;;;;;;;;;;;;:::i;:::-;;;36267:300;;36405:22;36430:21;36443:7;36430:12;:21::i;:::-;36405:46;;36475:47;36489:3;36494:15;36511:10;36475:47;;;;;;;;:::i;:::-;;;;;;;;36548:3;36140:718;-1:-1:-1;;36140:718:0:o;36222:629::-;36588:8;;;;36587:9;:25;;;;-1:-1:-1;36600:12:0;;;;;;;36587:25;36584:267;;;36635:6;;;;;;;;;-1:-1:-1;;;;;36635:6:0;-1:-1:-1;;;;;36635:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;36635:25:0;;;;;;;;;;;;:::i;36584:267::-;36693:22;36718:21;36731:7;36718:12;:21::i;6138:191::-;6212:16;6231:6;;-1:-1:-1;;;;;6248:17:0;;;-1:-1:-1;;;;;;6248:17:0;;;;;;6281:40;;6231:6;;;;;;;6281:40;;6212:16;6281:40;6201:128;6138:191;:::o;3751:532::-;3807:13;3837:10;3833:53;;-1:-1:-1;;3864:10:0;;;;;;;;;;;;-1:-1:-1;;;3864:10:0;;;;;3751:532::o;3833:53::-;3911:5;3896:12;3952:78;3959:9;;3952:78;;3985:8;;;;:::i;:::-;;-1:-1:-1;4008:10:0;;-1:-1:-1;4016:2:0;4008:10;;:::i;:::-;;;3952:78;;;4040:19;4072:6;-1:-1:-1;;;;;4062:17:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4062:17:0;;4040:39;;4090:154;4097:10;;4090:154;;4124:11;4134:1;4124:11;;:::i;:::-;;-1:-1:-1;4193:10:0;4201:2;4193:5;:10;:::i;:::-;4180:24;;:2;:24;:::i;:::-;4167:39;;4150:6;4157;4150:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;4150:56:0;;;;;;;;-1:-1:-1;4221:11:0;4230:2;4221:11;;:::i;:::-;;;4090:154;;30837:981;-1:-1:-1;;;;;15934:18:0;;31103:22;15934:18;;;:9;:18;;;;;;31128:19;;31146:1;;31128:19;:::i;:::-;31158:18;31179:26;;;:17;:26;;;;;;31103:44;;-1:-1:-1;31312:28:0;;;31308:328;;-1:-1:-1;;;;;31379:18:0;;31357:19;31379:18;;;:12;:18;;;;;;;;:34;;;;;;;;;31430:30;;;;;;:44;;;31547:30;;:17;:30;;;;;:43;;;31308:328;-1:-1:-1;31732:26:0;;;;:17;:26;;;;;;;;31725:33;;;-1:-1:-1;;;;;31776:18:0;;;;;:12;:18;;;;;:34;;;;;;;31769:41;30837:981::o;31826:515::-;31933:10;:17;31908:22;;31933:21;;31953:1;;31933:21;:::i;:::-;31965:18;31986:24;;;:15;:24;;;;;;32043:10;:26;;31908:46;;-1:-1:-1;31986:24:0;;31908:46;;32043:26;;;;;;:::i;:::-;;;;;;;;;32021:48;;32107:11;32082:10;32093;32082:22;;;;;;;;:::i;:::-;;;;;;;;;;;;:36;;;;32187:28;;;:15;:28;;;;;;;:41;;;32282:24;;;;;32275:31;32317:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;31897:444;;;31826:515;:::o;6986:701::-;7069:7;7112:4;7069:7;7127:523;7151:5;:12;7147:1;:16;7127:523;;;7185:20;7208:5;7214:1;7208:8;;;;;;;;:::i;:::-;;;;;;;7185:31;;7251:12;7235;:28;7231:408;;7388:44;;;;;;14204:19:1;;;14239:12;;;14232:28;;;14276:12;;7388:44:0;;;;;;;;;;;;7378:55;;;;;;7363:70;;7231:408;;;7578:44;;;;;;14204:19:1;;;14239:12;;;14232:28;;;14276:12;;7578:44:0;;;;;;;;;;;;7568:55;;;;;;7553:70;;7231:408;-1:-1:-1;7165:3:0;;;;:::i;:::-;;;;7127:523;;-1:-1:-1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:673:1;68:5;121:3;114:4;106:6;102:17;98:27;88:55;;139:1;136;129:12;88:55;175:6;162:20;201:4;225:60;241:43;281:2;241:43;:::i;:::-;225:60;:::i;:::-;307:3;331:2;326:3;319:15;359:2;354:3;350:12;343:19;;394:2;386:6;382:15;446:3;441:2;435;432:1;428:10;420:6;416:23;412:32;409:41;406:61;;;463:1;460;453:12;406:61;485:1;495:163;509:2;506:1;503:9;495:163;;;566:17;;554:30;;604:12;;;;636;;;;527:1;520:9;495:163;;;-1:-1:-1;676:5:1;;14:673;-1:-1:-1;;;;;;;14:673:1:o;692:160::-;757:20;;813:13;;806:21;796:32;;786:60;;842:1;839;832:12;857:247;916:6;969:2;957:9;948:7;944:23;940:32;937:52;;;985:1;982;975:12;937:52;1024:9;1011:23;1043:31;1068:5;1043:31;:::i;:::-;1093:5;857:247;-1:-1:-1;;;857:247:1:o;1109:251::-;1179:6;1232:2;1220:9;1211:7;1207:23;1203:32;1200:52;;;1248:1;1245;1238:12;1200:52;1280:9;1274:16;1299:31;1324:5;1299:31;:::i;1365:388::-;1433:6;1441;1494:2;1482:9;1473:7;1469:23;1465:32;1462:52;;;1510:1;1507;1500:12;1462:52;1549:9;1536:23;1568:31;1593:5;1568:31;:::i;:::-;1618:5;-1:-1:-1;1675:2:1;1660:18;;1647:32;1688:33;1647:32;1688:33;:::i;:::-;1740:7;1730:17;;;1365:388;;;;;:::o;1758:891::-;1862:6;1870;1878;1886;1939:2;1927:9;1918:7;1914:23;1910:32;1907:52;;;1955:1;1952;1945:12;1907:52;1994:9;1981:23;2013:31;2038:5;2013:31;:::i;:::-;2063:5;-1:-1:-1;2120:2:1;2105:18;;2092:32;2133:33;2092:32;2133:33;:::i;:::-;2185:7;-1:-1:-1;2243:2:1;2228:18;;2215:32;-1:-1:-1;;;;;2296:14:1;;;2293:34;;;2323:1;2320;2313:12;2293:34;2361:6;2350:9;2346:22;2336:32;;2406:7;2399:4;2395:2;2391:13;2387:27;2377:55;;2428:1;2425;2418:12;2377:55;2468:2;2455:16;2494:2;2486:6;2483:14;2480:34;;;2510:1;2507;2500:12;2480:34;2563:7;2558:2;2548:6;2545:1;2541:14;2537:2;2533:23;2529:32;2526:45;2523:65;;;2584:1;2581;2574:12;2523:65;1758:891;;;;-1:-1:-1;;2615:2:1;2607:11;;-1:-1:-1;;;1758:891:1:o;2654:456::-;2731:6;2739;2747;2800:2;2788:9;2779:7;2775:23;2771:32;2768:52;;;2816:1;2813;2806:12;2768:52;2855:9;2842:23;2874:31;2899:5;2874:31;:::i;:::-;2924:5;-1:-1:-1;2981:2:1;2966:18;;2953:32;2994:33;2953:32;2994:33;:::i;:::-;2654:456;;3046:7;;-1:-1:-1;;;3100:2:1;3085:18;;;;3072:32;;2654:456::o;3115:936::-;3212:6;3220;3228;3236;3244;3297:3;3285:9;3276:7;3272:23;3268:33;3265:53;;;3314:1;3311;3304:12;3265:53;3353:9;3340:23;3372:31;3397:5;3372:31;:::i;:::-;3422:5;-1:-1:-1;3479:2:1;3464:18;;3451:32;3492:33;3451:32;3492:33;:::i;:::-;3544:7;-1:-1:-1;3598:2:1;3583:18;;3570:32;;-1:-1:-1;3653:2:1;3638:18;;3625:32;-1:-1:-1;;;;;3706:14:1;;;3703:34;;;3733:1;3730;3723:12;3703:34;3771:6;3760:9;3756:22;3746:32;;3816:7;3809:4;3805:2;3801:13;3797:27;3787:55;;3838:1;3835;3828:12;3787:55;3878:2;3865:16;3904:2;3896:6;3893:14;3890:34;;;3920:1;3917;3910:12;3890:34;3965:7;3960:2;3951:6;3947:2;3943:15;3939:24;3936:37;3933:57;;;3986:1;3983;3976:12;3933:57;3115:936;;;;-1:-1:-1;3115:936:1;;-1:-1:-1;4017:2:1;4009:11;;4039:6;3115:936;-1:-1:-1;;;3115:936:1:o;4056:483::-;4149:6;4157;4210:2;4198:9;4189:7;4185:23;4181:32;4178:52;;;4226:1;4223;4216:12;4178:52;4265:9;4252:23;4284:31;4309:5;4284:31;:::i;:::-;4334:5;-1:-1:-1;4390:2:1;4375:18;;4362:32;-1:-1:-1;;;;;4406:30:1;;4403:50;;;4449:1;4446;4439:12;4403:50;4472:61;4525:7;4516:6;4505:9;4501:22;4472:61;:::i;:::-;4462:71;;;4056:483;;;;;:::o;4544:315::-;4609:6;4617;4670:2;4658:9;4649:7;4645:23;4641:32;4638:52;;;4686:1;4683;4676:12;4638:52;4725:9;4712:23;4744:31;4769:5;4744:31;:::i;:::-;4794:5;-1:-1:-1;4818:35:1;4849:2;4834:18;;4818:35;:::i;:::-;4808:45;;4544:315;;;;;:::o;4864:::-;4932:6;4940;4993:2;4981:9;4972:7;4968:23;4964:32;4961:52;;;5009:1;5006;4999:12;4961:52;5048:9;5035:23;5067:31;5092:5;5067:31;:::i;:::-;5117:5;5169:2;5154:18;;;;5141:32;;-1:-1:-1;;;4864:315:1:o;5184:1105::-;5286:6;5294;5302;5355:2;5343:9;5334:7;5330:23;5326:32;5323:52;;;5371:1;5368;5361:12;5323:52;5410:9;5397:23;5429:31;5454:5;5429:31;:::i;:::-;5479:5;-1:-1:-1;5503:2:1;5537:18;;;5524:32;;-1:-1:-1;5607:2:1;5592:18;;5579:32;-1:-1:-1;;;;;5623:30:1;;5620:50;;;5666:1;5663;5656:12;5620:50;5689:22;;5742:4;5734:13;;5730:27;-1:-1:-1;5720:55:1;;5771:1;5768;5761:12;5720:55;5807:2;5794:16;5830:60;5846:43;5886:2;5846:43;:::i;5830:60::-;5912:3;5936:2;5931:3;5924:15;5964:2;5959:3;5955:12;5948:19;;5995:2;5991;5987:11;6043:7;6038:2;6032;6029:1;6025:10;6021:2;6017:19;6013:28;6010:41;6007:61;;;6064:1;6061;6054:12;6007:61;6086:1;6077:10;;6096:163;6110:2;6107:1;6104:9;6096:163;;;6167:17;;6155:30;;6128:1;6121:9;;;;;6205:12;;;;6237;;6096:163;;;6100:3;6278:5;6268:15;;;;;;;5184:1105;;;;;:::o;6294:383::-;6371:6;6379;6387;6440:2;6428:9;6419:7;6415:23;6411:32;6408:52;;;6456:1;6453;6446:12;6408:52;6495:9;6482:23;6514:31;6539:5;6514:31;:::i;:::-;6564:5;6616:2;6601:18;;6588:32;;-1:-1:-1;6667:2:1;6652:18;;;6639:32;;6294:383;-1:-1:-1;;;6294:383:1:o;6682:1127::-;6791:6;6822:2;6865;6853:9;6844:7;6840:23;6836:32;6833:52;;;6881:1;6878;6871:12;6833:52;6921:9;6908:23;-1:-1:-1;;;;;6991:2:1;6983:6;6980:14;6977:34;;;7007:1;7004;6997:12;6977:34;7045:6;7034:9;7030:22;7020:32;;7090:7;7083:4;7079:2;7075:13;7071:27;7061:55;;7112:1;7109;7102:12;7061:55;7148:2;7135:16;7171:60;7187:43;7227:2;7187:43;:::i;7171:60::-;7253:3;7277:2;7272:3;7265:15;7305:2;7300:3;7296:12;7289:19;;7336:2;7332;7328:11;7384:7;7379:2;7373;7370:1;7366:10;7362:2;7358:19;7354:28;7351:41;7348:61;;;7405:1;7402;7395:12;7348:61;7427:1;7448;7458:321;7474:2;7469:3;7466:11;7458:321;;;7555:3;7542:17;7591:2;7578:11;7575:19;7572:39;;;7607:1;7604;7597:12;7572:39;7636:68;7696:7;7691:2;7677:11;7673:2;7669:20;7665:29;7636:68;:::i;:::-;7624:81;;-1:-1:-1;7725:12:1;;;;7757;;;;7496:1;7487:11;7458:321;;;-1:-1:-1;7798:5:1;;6682:1127;-1:-1:-1;;;;;;;;;;6682:1127:1:o;7814:1703::-;7934:6;7965:2;8008;7996:9;7987:7;7983:23;7979:32;7976:52;;;8024:1;8021;8014:12;7976:52;8057:9;8051:16;-1:-1:-1;;;;;8127:2:1;8119:6;8116:14;8113:34;;;8143:1;8140;8133:12;8113:34;8181:6;8170:9;8166:22;8156:32;;8226:7;8219:4;8215:2;8211:13;8207:27;8197:55;;8248:1;8245;8238:12;8197:55;8277:2;8271:9;8300:60;8316:43;8356:2;8316:43;:::i;8300:60::-;8382:3;8406:2;8401:3;8394:15;8434:2;8429:3;8425:12;8418:19;;8465:2;8461;8457:11;8513:7;8508:2;8502;8499:1;8495:10;8491:2;8487:19;8483:28;8480:41;8477:61;;;8534:1;8531;8524:12;8477:61;8556:1;8566:921;8580:2;8577:1;8574:9;8566:921;;;8650:3;8644:10;8686:2;8673:11;8670:19;8667:39;;;8702:1;8699;8692:12;8667:39;8729:20;;8784:2;8776:11;;8772:25;-1:-1:-1;8762:53:1;;8811:1;8808;8801:12;8762:53;8852:2;8848;8844:11;8838:18;8882:60;8898:43;8938:2;8898:43;:::i;8882:60::-;8968:5;9000:2;8993:5;8986:17;9036:2;9029:5;9025:14;9016:23;;9073:2;9069;9065:11;9125:7;9120:2;9114;9111:1;9107:10;9103:2;9099:19;9095:28;9092:41;9089:61;;;9146:1;9143;9136:12;9089:61;9174:1;9163:12;;9188:194;9204:2;9199:3;9196:11;9188:194;;;9275:12;;9261:27;;9226:1;9217:11;;;;;9314:14;;;;9354;;9188:194;;;-1:-1:-1;9395:18:1;;-1:-1:-1;;;9433:12:1;;;;9465;;;;8598:1;8591:9;8566:921;;;-1:-1:-1;9506:5:1;;7814:1703;-1:-1:-1;;;;;;;;;7814:1703:1:o;9522:180::-;9578:6;9631:2;9619:9;9610:7;9606:23;9602:32;9599:52;;;9647:1;9644;9637:12;9599:52;9670:26;9686:9;9670:26;:::i;9707:180::-;9766:6;9819:2;9807:9;9798:7;9794:23;9790:32;9787:52;;;9835:1;9832;9825:12;9787:52;-1:-1:-1;9858:23:1;;9707:180;-1:-1:-1;9707:180:1:o;9892:245::-;9950:6;10003:2;9991:9;9982:7;9978:23;9974:32;9971:52;;;10019:1;10016;10009:12;9971:52;10058:9;10045:23;10077:30;10101:5;10077:30;:::i;10142:249::-;10211:6;10264:2;10252:9;10243:7;10239:23;10235:32;10232:52;;;10280:1;10277;10270:12;10232:52;10312:9;10306:16;10331:30;10355:5;10331:30;:::i;10396:764::-;10465:6;10496:2;10539;10527:9;10518:7;10514:23;10510:32;10507:52;;;10555:1;10552;10545:12;10507:52;10595:9;10582:23;-1:-1:-1;;;;;10665:2:1;10657:6;10654:14;10651:34;;;10681:1;10678;10671:12;10651:34;10719:6;10708:9;10704:22;10694:32;;10764:7;10757:4;10753:2;10749:13;10745:27;10735:55;;10786:1;10783;10776:12;10735:55;10822:2;10809:16;10844:2;10840;10837:10;10834:36;;;10850:18;;:::i;:::-;10892:53;10935:2;10916:13;;-1:-1:-1;;10912:27:1;10908:36;;10892:53;:::i;:::-;10879:66;;10968:2;10961:5;10954:17;11008:7;11003:2;10998;10994;10990:11;10986:20;10983:33;10980:53;;;11029:1;11026;11019:12;10980:53;11084:2;11079;11075;11071:11;11066:2;11059:5;11055:14;11042:45;11128:1;11107:14;;;11103:23;;;11096:34;;;;-1:-1:-1;11111:5:1;10396:764;-1:-1:-1;;;10396:764:1:o;11350:1113::-;11452:6;11460;11468;11521:2;11509:9;11500:7;11496:23;11492:32;11489:52;;;11537:1;11534;11527:12;11489:52;11573:9;11560:23;11550:33;;11602:2;11651;11640:9;11636:18;11623:32;11613:42;;11706:2;11695:9;11691:18;11678:32;-1:-1:-1;;;;;11725:6:1;11722:30;11719:50;;;11765:1;11762;11755:12;11719:50;11788:22;;11841:4;11833:13;;11829:27;-1:-1:-1;11819:55:1;;11870:1;11867;11860:12;11819:55;11906:2;11893:16;11929:60;11945:43;11985:2;11945:43;:::i;11929:60::-;12011:3;12035:2;12030:3;12023:15;12063:2;12058:3;12054:12;12047:19;;12094:2;12090;12086:11;12142:7;12137:2;12131;12128:1;12124:10;12120:2;12116:19;12112:28;12109:41;12106:61;;;12163:1;12160;12153:12;12106:61;12185:1;12176:10;;12195:238;12209:2;12206:1;12203:9;12195:238;;;12280:3;12267:17;12297:31;12322:5;12297:31;:::i;:::-;12341:18;;12227:1;12220:9;;;;;12379:12;;;;12411;;12195:238;;12468:638;12531:3;12569:5;12563:12;12596:6;12591:3;12584:19;12622:4;12663:2;12658:3;12654:12;12688:11;12715;12708:18;;12765:6;12762:1;12758:14;12751:5;12747:26;12735:38;;12807:2;12800:5;12796:14;12828:1;12838:242;12852:6;12849:1;12846:13;12838:242;;;12923:5;12917:4;12913:16;12908:3;12901:29;12951:49;12995:4;12986:6;12980:13;12951:49;:::i;:::-;13058:12;;;;12943:57;-1:-1:-1;13023:15:1;;;;12874:1;12867:9;12838:242;;;-1:-1:-1;13096:4:1;;12468:638;-1:-1:-1;;;;;;;12468:638:1:o;13111:435::-;13164:3;13202:5;13196:12;13229:6;13224:3;13217:19;13255:4;13284:2;13279:3;13275:12;13268:19;;13321:2;13314:5;13310:14;13342:1;13352:169;13366:6;13363:1;13360:13;13352:169;;;13427:13;;13415:26;;13461:12;;;;13496:15;;;;13388:1;13381:9;13352:169;;;-1:-1:-1;13537:3:1;;13111:435;-1:-1:-1;;;;;13111:435:1:o;13551:257::-;13592:3;13630:5;13624:12;13657:6;13652:3;13645:19;13673:63;13729:6;13722:4;13717:3;13713:14;13706:4;13699:5;13695:16;13673:63;:::i;:::-;13790:2;13769:15;-1:-1:-1;;13765:29:1;13756:39;;;;13797:4;13752:50;;13551:257;-1:-1:-1;;13551:257:1:o;14299:274::-;14428:3;14466:6;14460:13;14482:53;14528:6;14523:3;14516:4;14508:6;14504:17;14482:53;:::i;:::-;14551:16;;;;;14299:274;-1:-1:-1;;14299:274:1:o;14578:470::-;14757:3;14795:6;14789:13;14811:53;14857:6;14852:3;14845:4;14837:6;14833:17;14811:53;:::i;:::-;14927:13;;14886:16;;;;14949:57;14927:13;14886:16;14983:4;14971:17;;14949:57;:::i;:::-;15022:20;;14578:470;-1:-1:-1;;;;14578:470:1:o;15691:488::-;-1:-1:-1;;;;;15960:15:1;;;15942:34;;16012:15;;16007:2;15992:18;;15985:43;16059:2;16044:18;;16037:34;;;16107:3;16102:2;16087:18;;16080:31;;;15885:4;;16128:45;;16153:19;;16145:6;16128:45;:::i;:::-;16120:53;15691:488;-1:-1:-1;;;;;;15691:488:1:o;16184:321::-;16413:2;16402:9;16395:21;16376:4;16433:66;16495:2;16484:9;16480:18;16472:6;16433:66;:::i;16510:489::-;16795:2;16784:9;16777:21;16758:4;16815:66;16877:2;16866:9;16862:18;16854:6;16815:66;:::i;:::-;16912:2;16897:18;;16890:34;;;;-1:-1:-1;;;;;;16960:32:1;;;;16955:2;16940:18;;;16933:60;16807:74;16510:489;-1:-1:-1;16510:489:1:o;17004:261::-;17183:2;17172:9;17165:21;17146:4;17203:56;17255:2;17244:9;17240:18;17232:6;17203:56;:::i;18096:219::-;18245:2;18234:9;18227:21;18208:4;18265:44;18305:2;18294:9;18290:18;18282:6;18265:44;:::i;20770:414::-;20972:2;20954:21;;;21011:2;20991:18;;;20984:30;21050:34;21045:2;21030:18;;21023:62;-1:-1:-1;;;21116:2:1;21101:18;;21094:48;21174:3;21159:19;;20770:414::o;21596:398::-;21798:2;21780:21;;;21837:2;21817:18;;;21810:30;21876:34;21871:2;21856:18;;21849:62;-1:-1:-1;;;21942:2:1;21927:18;;21920:32;21984:3;21969:19;;21596:398::o;22413:417::-;22615:2;22597:21;;;22654:2;22634:18;;;22627:30;22693:34;22688:2;22673:18;;22666:62;-1:-1:-1;;;22759:2:1;22744:18;;22737:51;22820:3;22805:19;;22413:417::o;25951:356::-;26153:2;26135:21;;;26172:18;;;26165:30;26231:34;26226:2;26211:18;;26204:62;26298:2;26283:18;;25951:356::o;29192:403::-;29394:2;29376:21;;;29433:2;29413:18;;;29406:30;29472:34;29467:2;29452:18;;29445:62;-1:-1:-1;;;29538:2:1;29523:18;;29516:37;29585:3;29570:19;;29192:403::o;30383:355::-;30585:2;30567:21;;;30624:2;30604:18;;;30597:30;30663:33;30658:2;30643:18;;30636:61;30729:2;30714:18;;30383:355::o;30743:407::-;30945:2;30927:21;;;30984:2;30964:18;;;30957:30;31023:34;31018:2;31003:18;;30996:62;-1:-1:-1;;;31089:2:1;31074:18;;31067:41;31140:3;31125:19;;30743:407::o;31337:275::-;31408:2;31402:9;31473:2;31454:13;;-1:-1:-1;;31450:27:1;31438:40;;-1:-1:-1;;;;;31493:34:1;;31529:22;;;31490:62;31487:88;;;31555:18;;:::i;:::-;31591:2;31584:22;31337:275;;-1:-1:-1;31337:275:1:o;31617:183::-;31677:4;-1:-1:-1;;;;;31702:6:1;31699:30;31696:56;;;31732:18;;:::i;:::-;-1:-1:-1;31777:1:1;31773:14;31789:4;31769:25;;31617:183::o;31805:128::-;31845:3;31876:1;31872:6;31869:1;31866:13;31863:39;;;31882:18;;:::i;:::-;-1:-1:-1;31918:9:1;;31805:128::o;31938:120::-;31978:1;32004;31994:35;;32009:18;;:::i;:::-;-1:-1:-1;32043:9:1;;31938:120::o;32063:168::-;32103:7;32169:1;32165;32161:6;32157:14;32154:1;32151:21;32146:1;32139:9;32132:17;32128:45;32125:71;;;32176:18;;:::i;:::-;-1:-1:-1;32216:9:1;;32063:168::o;32236:125::-;32276:4;32304:1;32301;32298:8;32295:34;;;32309:18;;:::i;:::-;-1:-1:-1;32346:9:1;;32236:125::o;32366:258::-;32438:1;32448:113;32462:6;32459:1;32456:13;32448:113;;;32538:11;;;32532:18;32519:11;;;32512:39;32484:2;32477:10;32448:113;;;32579:6;32576:1;32573:13;32570:48;;;-1:-1:-1;;32614:1:1;32596:16;;32589:27;32366:258::o;32629:380::-;32708:1;32704:12;;;;32751;;;32772:61;;32826:4;32818:6;32814:17;32804:27;;32772:61;32879:2;32871:6;32868:14;32848:18;32845:38;32842:161;;;32925:10;32920:3;32916:20;32913:1;32906:31;32960:4;32957:1;32950:15;32988:4;32985:1;32978:15;32842:161;;32629:380;;;:::o;33014:135::-;33053:3;-1:-1:-1;;33074:17:1;;33071:43;;;33094:18;;:::i;:::-;-1:-1:-1;33141:1:1;33130:13;;33014:135::o;33154:112::-;33186:1;33212;33202:35;;33217:18;;:::i;:::-;-1:-1:-1;33251:9:1;;33154:112::o;33271:127::-;33332:10;33327:3;33323:20;33320:1;33313:31;33363:4;33360:1;33353:15;33387:4;33384:1;33377:15;33403:127;33464:10;33459:3;33455:20;33452:1;33445:31;33495:4;33492:1;33485:15;33519:4;33516:1;33509:15;33535:127;33596:10;33591:3;33587:20;33584:1;33577:31;33627:4;33624:1;33617:15;33651:4;33648:1;33641:15;33667:127;33728:10;33723:3;33719:20;33716:1;33709:31;33759:4;33756:1;33749:15;33783:4;33780:1;33773:15;33799:127;33860:10;33855:3;33851:20;33848:1;33841:31;33891:4;33888:1;33881:15;33915:4;33912:1;33905:15;33931:131;-1:-1:-1;;;;;34006:31:1;;33996:42;;33986:70;;34052:1;34049;34042:12;34067:131;-1:-1:-1;;;;;;34141:32:1;;34131:43;;34121:71;;34188:1;34185;34178:12

Swarm Source

ipfs://f6962069aa3fa14caeae5ea33523e05f6f991abca9f2659833dfad42dc9f28fd

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

OVERVIEW

The Official Divine Anarchy Collection. 10,011 Children of Anarchy.

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.