ETH Price: $2,409.42 (-2.93%)
 

Overview

Max Total Supply

420 HIND

Holders

267

Total Transfers

-

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
HighIndians

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-10-22
*/

// SPDX-License-Identifier: MIT

//  https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/introspection/IERC165.sol
pragma solidity ^0.8.0;

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

// https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC721/IERC721.sol
pragma solidity ^0.8.0;

interface IERC721 is IERC165 {
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);

    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);

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

    function balanceOf(address owner) external view returns (uint256 balance);

    function ownerOf(uint256 tokenId) external view returns (address owner);

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    function approve(address to, uint256 tokenId) external;

    function getApproved(uint256 tokenId) external view returns (address operator);

    function setApprovalForAll(address operator, bool _approved) external;

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

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes calldata data
    ) external;
}


// File: @openzeppelin/contracts/utils/introspection/ERC165.sol
pragma solidity ^0.8.0;

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


pragma solidity ^0.8.0;
// conerts to ASCII
library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";


    function toString(uint256 value) internal pure returns (string memory) {
        // Inspired by OraclizeAPI's implementation - MIT licence
        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol

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

// https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Address.sol

pragma solidity ^0.8.0;
//address functions
library Address {
  
    function isContract(address account) internal view returns (bool) {

        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

 
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }


    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

  
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

  
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

   
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

   
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

   
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

  
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }


    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

  
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            
            if (returndata.length > 0) {
                

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

// https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC721/extensions/IERC721Metadata.sol

pragma solidity ^0.8.0;


//ERC-721 Token Standard
 
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);
}

// https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC721/IERC721Receiver.sol

pragma solidity ^0.8.0;



interface IERC721Receiver {

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

// https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Context.sol
pragma solidity ^0.8.0;

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

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


// https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC721/ERC721.sol
pragma solidity ^0.8.0;

contract ERC721 is Context, ERC165, IERC721, IERC721Metadata {
    using Address for address;
    using Strings for uint256;

    string private _name;

    string private _symbol;

    mapping(uint256 => address) private _owners;

    mapping(address => uint256) private _balances;

    mapping(uint256 => address) private _tokenApprovals;

    mapping(address => mapping(address => bool)) private _operatorApprovals;
//coolection constructor
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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


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


    function ownerOf(uint256 tokenId) public view virtual override returns (address) {
        address owner = _owners[tokenId];
        require(owner != address(0), "ERC721: owner query for nonexistent token");
        return owner;
    }

   
    function name() public view virtual override returns (string memory) {
        return _name;
    }

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

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

        string memory baseURI = _baseURI();
        return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : "";
    }

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

    function approve(address to, uint256 tokenId) public virtual override {
        address owner = ERC721.ownerOf(tokenId);
        require(to != owner, "ERC721: approval to current owner");

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

        _approve(to, tokenId);
    }

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

        return _tokenApprovals[tokenId];
    }

   
    function setApprovalForAll(address operator, bool approved) public virtual override {
        require(operator != _msgSender(), "ERC721: approve to caller");

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

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

    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual override {
        
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");

        _transfer(from, to, tokenId);
    }
 
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual override {
        safeTransferFrom(from, to, tokenId, "");
    }
  
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) public virtual override {
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");
        _safeTransfer(from, to, tokenId, _data);
    }

    function _safeTransfer(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) internal virtual {
        _transfer(from, to, tokenId);
        require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer");
    }


    function _exists(uint256 tokenId) internal view virtual returns (bool) {
        return _owners[tokenId] != address(0);
    }
  
    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {
        require(_exists(tokenId), "ERC721: operator query for nonexistent token");
        address owner = ERC721.ownerOf(tokenId);
        return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender));
    }
   
    function _safeMint(address to, uint256 tokenId) internal virtual {
        _safeMint(to, tokenId, "");
    }

  
    function _safeMint(
        address to,
        uint256 tokenId,
        bytes memory _data
    ) internal virtual {
        _mint(to, tokenId);
        require(
            _checkOnERC721Received(address(0), to, tokenId, _data),
            "ERC721: transfer to non ERC721Receiver implementer"
        );
    }

 
    function _mint(address to, uint256 tokenId) internal virtual {
        require(to != address(0), "ERC721: mint to the zero address");
        require(!_exists(tokenId), "ERC721: token already minted");

        _beforeTokenTransfer(address(0), to, tokenId);

        _balances[to] += 1;
        _owners[tokenId] = to;

        emit Transfer(address(0), to, tokenId);
    }

   
    function _burn(uint256 tokenId) internal virtual {
        address owner = ERC721.ownerOf(tokenId);

        _beforeTokenTransfer(owner, address(0), tokenId);

        _approve(address(0), tokenId);

        _balances[owner] -= 1;
        delete _owners[tokenId];

        emit Transfer(owner, address(0), tokenId);
    }

    function _transfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual {
        require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own");
        require(to != address(0), "ERC721: transfer to the zero address");

        _beforeTokenTransfer(from, to, tokenId);

        _approve(address(0), tokenId);

        _balances[from] -= 1;
        _balances[to] += 1;
        _owners[tokenId] = to;

        emit Transfer(from, to, tokenId);
    }

  
    function _approve(address to, uint256 tokenId) internal virtual {
        _tokenApprovals[tokenId] = to;
        emit Approval(ERC721.ownerOf(tokenId), to, tokenId);
    }

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

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual {}
}


pragma solidity ^0.8.0;

/**
 * @dev Contract module that helps prevent reentrant calls to a function.
 *
 * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
 * available, which can be applied to functions to make sure there are no nested
 * (reentrant) calls to them.
 *
 * Note that because there is a single `nonReentrant` guard, functions marked as
 * `nonReentrant` may not call one another. This can be worked around by making
 * those functions `private`, and then adding `external` `nonReentrant` entry
 * points to them.
 *
 * TIP: If you would like to learn more about reentrancy and alternative ways
 * to protect against it, check out our blog post
 * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
 */
abstract contract ReentrancyGuard {
    // Booleans are more expensive than uint256 or any type that takes up a full
    // word because each write operation emits an extra SLOAD to first read the
    // slot's contents, replace the bits taken up by the boolean, and then write
    // back. This is the compiler's defense against contract upgrades and
    // pointer aliasing, and it cannot be disabled.

    // The values being non-zero value makes deployment a bit more expensive,
    // but in exchange the refund on every call to nonReentrant will be lower in
    // amount. Since refunds are capped to a percentage of the total
    // transaction's gas, it is best to keep them low in cases like this one, to
    // increase the likelihood of the full refund coming into effect.
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and make it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        // On the first call to nonReentrant, _notEntered will be true
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        // Any calls to nonReentrant after this point will fail
        _status = _ENTERED;

        _;

        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        _status = _NOT_ENTERED;
    }
}


// https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol

pragma solidity ^0.8.0;
// owner only commands
abstract contract Ownable is Context {
    address private _owner;

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

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

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}


/*  

                       |
                      |.|
                      |.|
                     |\./|
                     |\./|
     .               |\./|               .
      \^.\          |\\.//|          /.^/
       \--.|\       |\\.//|       /|.--/
         \--.| \    |\\.//|    / |.--/
          \---.|\    |\./|    /|.---/
             \--.|\  |\./|  /|.--/
                \ .\  |.|  /. /
      _ -_^_^_^_-  \ \\ // /  -_^_^_^_- _
        - -/_/_/- ^_^/| |\^_^ -\_\_\- -
                  /_ / | \ _\
                       |
                    
                ___,  , ,    _,              
               ' |    |_|,  /_,              
                 |   '| |  '\_               
                 '    ' `     `              
                                       
             , ,   ___,   _,   , ,           
             |_|, ' |    / _   |_|,          
            '| |   _|_, '\_|` '| |           
             ' `  '       _|   ' `           
                                      
       ___, ,  ,   ,_   ___,  _    ,  ,   _, 
      ' |   |\ |   | \ ' |   '|\   |\ |  (_' 
       _|_, |'\|  _|_/  _|_,  |-\  |'\|   _) 
      '     '  ` '     '      '  ` '  `  '  
           



      Contract provided By B.A.S.S. Studios 
       (Blockchain and Software Solutions)
              f i r e b u g 5 0 9                     
*/
pragma solidity >=0.7.0 <0.9.0;


contract HighIndians is ERC721, Ownable, ReentrancyGuard {
  using Strings for uint256;

  //collection details
  string public _collectionName= "High Indians";
  string public _collectionSymbol="HIND";

  //metadata details
  string baseURI="ipfs://QmPj7WbrZmC7kM7gRjdP9VwqwJ8VRSQEY5hMerkowG7ybt/";
  string public baseExtension = ".json";

  //mint details
  uint256 public cost = 420 ether;
  uint256 public maxSupply = 420;
  uint256 public maxMintAmount = 420;

  //track mints
  uint256 public amountMinted;

  //airdrop management
  uint256 amountAirdropped;

//Event variables
  //Portal
  string public EventURI="ipfs://__CID__/";
  //Dimentional mapping
  mapping (uint256=>bool) private isEventActive;
  //portal states
  bool public EventToggle=false;
  //costs
  uint256 public portalCost= 0 ether;

  constructor() ERC721(_collectionName, _collectionSymbol)
   {
  }

  function _baseURI() internal view virtual override returns (string memory) {
    return baseURI;
  }
  function _EventURI() internal view returns (string memory) {
      return EventURI;
  }

//minting fuction access given to only the owner or pay 420 eth
  function mint(uint256 _mintAmount) public payable {

    uint256 mintSupply = totalSupply();
    require(_mintAmount > 0, "mint amount cant be 0");
    require(_mintAmount <= maxMintAmount, "Cant mint over the max amount");
    require(mintSupply + _mintAmount <= maxSupply, "Mint amount is too high ");

    if (msg.sender != owner()) {
      require(msg.value >= cost * _mintAmount);
    }
   
    for (uint256 i = 1; i <= _mintAmount; i++) {
      _safeMint(msg.sender, mintSupply + i);
    }
    amountMinted+=_mintAmount;
  }
  
  //Airdrop to upload a list of addresses and list of number recieved
  function airdropTo(address[] memory addressList, uint256[] memory amountRecievedList) external payable onlyOwner{
      uint256 mintedSupply;
      require((addressList.length)+mintedSupply <= maxSupply, "the amount to airdrop exceeds max supply");
     
      for(uint256 i = 0; i< addressList.length;i++){
          mintedSupply=totalSupply();

          for(uint256 j=1; j<=amountRecievedList[i];j++){
                 _safeMint(addressList[i],mintedSupply+j);
        
          }
            amountAirdropped+=amountRecievedList[i];
            amountMinted+=amountRecievedList[i];
      }

  }
//return total supply 
 function totalSupply() public view returns (uint256) {
    return amountMinted;
  }
//function to find token ids 
   function walletOfOwner(address _owner)
    public
    view
    returns (uint256[] memory)
  {
    uint256 ownerTokenCount = balanceOf(_owner);
    uint256[] memory ownedTokenIds = new uint256[](ownerTokenCount);
    uint256 currentTokenId = 1;
    uint256 ownedTokenIndex = 0;
    while (ownedTokenIndex < ownerTokenCount && currentTokenId <= maxSupply) {
      address currentTokenOwner = ownerOf(currentTokenId);
      if (currentTokenOwner == _owner) {
        ownedTokenIds[ownedTokenIndex] = currentTokenId;
        ownedTokenIndex++;
      }
      currentTokenId++;
    }
    return ownedTokenIds;
  }

  function tokenURI(uint256 tokenId)
    public
    view
    virtual
    override
    returns (string memory)
  {
    require(_exists(tokenId),"ERC721Metadata: URI query nonexistent token");   
    //management of portal access to determine image version
    if(isEventActive[tokenId]==true ){
       
            string memory currentBaseURItemp = _EventURI();
            return(           
                bytes(currentBaseURItemp).length > 0
                ? string(abi.encodePacked(currentBaseURItemp, tokenId.toString(), baseExtension))
                 : ""
                   );
    }
    else{
    string memory currentBaseURI = _baseURI();
    return bytes(currentBaseURI).length > 0
        ? string(abi.encodePacked(currentBaseURI, tokenId.toString(), baseExtension))
        : "";
    }
  }

//Portal Ex=ntry management Functions
  function toggleEvent() public onlyOwner(){
      EventToggle=!EventToggle;
  }
  function enterEvent(uint256 tokenID) public payable {
  require(ownerOf(tokenID)==msg.sender,"not the owner o fthe token ID");
  require (EventToggle==true, "Event not open");
  require(msg.value >= portalCost);
  isEventActive[tokenID]=true;
}
  function exitEvent(uint256 token) public payable {
      require(ownerOf(token)==msg.sender,"not the owner of the token ID");
      require(msg.value >= portalCost);
      isEventActive[token]=false;

  }
// owner set style
  function manualSetEventStateForIDs(uint256[] memory tokenNum, bool choice)public onlyOwner(){
      
      for(uint256 i=0; i<tokenNum.length;i++){     
      isEventActive[tokenNum[i]]= choice;

      }
  }
  //check portal
  function portalState(uint256 id) public view returns (uint256){
      uint256 state=0;
      if (isEventActive[id]==true){
          state=1;
          return (state);
      }
      else{
          return(state);
      }
  }
  //Access Functions

// update mint cost
  function setCost(uint256 _newCost) public onlyOwner() {
    cost = _newCost; 
  }
//update portal cost
  function setPortalCost(uint256 _newCost) public onlyOwner() {
    portalCost = _newCost; 
  }
//base URI extension
  function setBaseURI(string memory _newBaseURI) public onlyOwner() {
    baseURI = _newBaseURI;
  }
//Event URI set functions
  function setEventURI(string memory _newURI) public onlyOwner(){
      EventURI=_newURI;
  }
//set extension (.json)
  function setBaseExtension(string memory _newBaseExtension) public onlyOwner() {
    baseExtension = _newBaseExtension;
  }
 //get amount airdropped
  function getAirdroppedAmount() external view onlyOwner() returns (uint256){
      return amountAirdropped;
  }
//backup witdraw 
  function backupWithdraw() public payable onlyOwner() nonReentrant{
 
    (bool success, ) = payable(msg.sender).call{value: address(this).balance}("");
    require(success);
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"EventToggle","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EventURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_collectionName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_collectionSymbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addressList","type":"address[]"},{"internalType":"uint256[]","name":"amountRecievedList","type":"uint256[]"}],"name":"airdropTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"amountMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"backupWithdraw","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseExtension","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"enterEvent","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"token","type":"uint256"}],"name":"exitEvent","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getAirdroppedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenNum","type":"uint256[]"},{"internalType":"bool","name":"choice","type":"bool"}],"name":"manualSetEventStateForIDs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxMintAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintAmount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"portalCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"portalState","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newBaseExtension","type":"string"}],"name":"setBaseExtension","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newCost","type":"uint256"}],"name":"setCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newURI","type":"string"}],"name":"setEventURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newCost","type":"uint256"}],"name":"setPortalCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toggleEvent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"walletOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"}]

60c0604052600c60809081526b4869676820496e6469616e7360a01b60a0526008906200002d908262000387565b506040805180820190915260048152631212539160e21b602082015260099062000058908262000387565b5060405180606001604052806036815260200162002b5260369139600a9062000082908262000387565b50604080518082019091526005815264173539b7b760d91b6020820152600b90620000ae908262000387565b506816c4abbebea0100000600c556101a4600d556101a4600e556040518060400160405280600f81526020016e697066733a2f2f5f5f4349445f5f2f60881b8152506011908162000100919062000387565b506013805460ff1916905560006014553480156200011d57600080fd5b50600880546200012d90620002f8565b80601f01602080910402602001604051908101604052809291908181526020018280546200015b90620002f8565b8015620001ac5780601f106200018057610100808354040283529160200191620001ac565b820191906000526020600020905b8154815290600101906020018083116200018e57829003601f168201915b505050505060098054620001c090620002f8565b80601f0160208091040260200160405190810160405280929190818152602001828054620001ee90620002f8565b80156200023f5780601f1062000213576101008083540402835291602001916200023f565b820191906000526020600020905b8154815290600101906020018083116200022157829003601f168201915b5050505050816000908162000255919062000387565b50600162000264828262000387565b505050620002816200027b6200028c60201b60201c565b62000290565b600160075562000453565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200030d57607f821691505b6020821081036200032e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200038257600081815260208120601f850160051c810160208610156200035d5750805b601f850160051c820191505b818110156200037e5782815560010162000369565b5050505b505050565b81516001600160401b03811115620003a357620003a3620002e2565b620003bb81620003b48454620002f8565b8462000334565b602080601f831160018114620003f35760008415620003da5750858301515b600019600386901b1c1916600185901b1785556200037e565b600085815260208120601f198616915b82811015620004245788860151825594840194600190910190840162000403565b5085821015620004435787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6126ef80620004636000396000f3fe6080604052600436106102515760003560e01c8063715018a611610139578063bd98b849116100b6578063da3ef23f1161007a578063da3ef23f14610655578063e985e9c514610675578063f05f9e1514610695578063f2fde38b146106b5578063f520e78d146106d5578063fab1f9b1146106e857600080fd5b8063bd98b849146105ed578063c668286214610602578063c87b56dd14610617578063d5abeb0114610637578063da3870821461064d57600080fd5b80639d581854116100fd5780639d58185414610564578063a0712d681461057a578063a22cb4651461058d578063b6003f14146105ad578063b88d4fde146105cd57600080fd5b8063715018a6146104f35780637af284d5146105085780638da5cb5b1461051e57806392af341f1461053c57806395d89b411461054f57600080fd5b8063349cd113116101d257806344a0d68a1161019657806344a0d68a146104395780634b3679af146104595780634cebf3cb1461047957806355f804b3146104935780636352211e146104b357806370a08231146104d357600080fd5b8063349cd113146103a257806335dfe091146103b75780633a780d16146103d757806342842e0e146103ec578063438b63001461040c57600080fd5b8063095ea7b311610219578063095ea7b31461031357806313faede61461033357806318160ddd14610357578063239c70ae1461036c57806323b872dd1461038257600080fd5b806301f342581461025657806301ffc9a71461028157806306fdde03146102b1578063081812fc146102c657806308d899b0146102fe575b600080fd5b34801561026257600080fd5b5061026b6106fd565b6040516102789190611e45565b60405180910390f35b34801561028d57600080fd5b506102a161029c366004611e6e565b61078b565b6040519015158152602001610278565b3480156102bd57600080fd5b5061026b6107dd565b3480156102d257600080fd5b506102e66102e1366004611e8b565b61086f565b6040516001600160a01b039091168152602001610278565b61031161030c366004611f91565b610909565b005b34801561031f57600080fd5b5061031161032e366004612051565b610a94565b34801561033f57600080fd5b50610349600c5481565b604051908152602001610278565b34801561036357600080fd5b50600f54610349565b34801561037857600080fd5b50610349600e5481565b34801561038e57600080fd5b5061031161039d36600461207b565b610ba9565b3480156103ae57600080fd5b5061026b610bda565b3480156103c357600080fd5b506103116103d236600461210f565b610be7565b3480156103e357600080fd5b50610311610c21565b3480156103f857600080fd5b5061031161040736600461207b565b610c5f565b34801561041857600080fd5b5061042c610427366004612158565b610c7a565b6040516102789190612173565b34801561044557600080fd5b50610311610454366004611e8b565b610d5a565b34801561046557600080fd5b506103116104743660046121c7565b610d89565b34801561048557600080fd5b506013546102a19060ff1681565b34801561049f57600080fd5b506103116104ae36600461210f565b610e16565b3480156104bf57600080fd5b506102e66104ce366004611e8b565b610e4c565b3480156104df57600080fd5b506103496104ee366004612158565b610ec3565b3480156104ff57600080fd5b50610311610f4a565b34801561051457600080fd5b50610349600f5481565b34801561052a57600080fd5b506006546001600160a01b03166102e6565b61031161054a366004611e8b565b610f80565b34801561055b57600080fd5b5061026b611052565b34801561057057600080fd5b5061034960145481565b610311610588366004611e8b565b611061565b34801561059957600080fd5b506103116105a8366004612215565b6111d5565b3480156105b957600080fd5b506103116105c8366004611e8b565b611299565b3480156105d957600080fd5b506103116105e836600461223f565b6112c8565b3480156105f957600080fd5b506103496112fa565b34801561060e57600080fd5b5061026b61132e565b34801561062357600080fd5b5061026b610632366004611e8b565b61133b565b34801561064357600080fd5b50610349600d5481565b61031161143f565b34801561066157600080fd5b5061031161067036600461210f565b61151d565b34801561068157600080fd5b506102a16106903660046122bb565b611553565b3480156106a157600080fd5b506103496106b0366004611e8b565b611581565b3480156106c157600080fd5b506103116106d0366004612158565b6115ad565b6103116106e3366004611e8b565b611648565b3480156106f457600080fd5b5061026b6116cf565b6011805461070a906122e5565b80601f0160208091040260200160405190810160405280929190818152602001828054610736906122e5565b80156107835780601f1061075857610100808354040283529160200191610783565b820191906000526020600020905b81548152906001019060200180831161076657829003601f168201915b505050505081565b60006001600160e01b031982166380ac58cd60e01b14806107bc57506001600160e01b03198216635b5e139f60e01b145b806107d757506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546107ec906122e5565b80601f0160208091040260200160405190810160405280929190818152602001828054610818906122e5565b80156108655780601f1061083a57610100808354040283529160200191610865565b820191906000526020600020905b81548152906001019060200180831161084857829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b03166108ed5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b6006546001600160a01b031633146109335760405162461bcd60e51b81526004016108e490612319565b6000600d548184516109459190612364565b11156109a45760405162461bcd60e51b815260206004820152602860248201527f74686520616d6f756e7420746f2061697264726f702065786365656473206d616044820152677820737570706c7960c01b60648201526084016108e4565b60005b8351811015610a8e57600f54915060015b8382815181106109ca576109ca612377565b60200260200101518111610a1857610a068583815181106109ed576109ed612377565b60200260200101518285610a019190612364565b6116dc565b80610a108161238d565b9150506109b8565b50828181518110610a2b57610a2b612377565b602002602001015160106000828254610a449190612364565b92505081905550828181518110610a5d57610a5d612377565b6020026020010151600f6000828254610a769190612364565b90915550819050610a868161238d565b9150506109a7565b50505050565b6000610a9f82610e4c565b9050806001600160a01b0316836001600160a01b031603610b0c5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084016108e4565b336001600160a01b0382161480610b285750610b288133611553565b610b9a5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c000000000000000060648201526084016108e4565b610ba483836116f6565b505050565b610bb33382611764565b610bcf5760405162461bcd60e51b81526004016108e4906123a6565b610ba483838361183b565b6008805461070a906122e5565b6006546001600160a01b03163314610c115760405162461bcd60e51b81526004016108e490612319565b6011610c1d8282612445565b5050565b6006546001600160a01b03163314610c4b5760405162461bcd60e51b81526004016108e490612319565b6013805460ff19811660ff90911615179055565b610ba4838383604051806020016040528060008152506112c8565b60606000610c8783610ec3565b905060008167ffffffffffffffff811115610ca457610ca4611ea4565b604051908082528060200260200182016040528015610ccd578160200160208202803683370190505b509050600160005b8381108015610ce65750600d548211155b15610d50576000610cf683610e4c565b9050866001600160a01b0316816001600160a01b031603610d3d5782848381518110610d2457610d24612377565b602090810291909101015281610d398161238d565b9250505b82610d478161238d565b93505050610cd5565b5090949350505050565b6006546001600160a01b03163314610d845760405162461bcd60e51b81526004016108e490612319565b600c55565b6006546001600160a01b03163314610db35760405162461bcd60e51b81526004016108e490612319565b60005b8251811015610ba4578160126000858481518110610dd657610dd6612377565b6020026020010151815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610e0e9061238d565b915050610db6565b6006546001600160a01b03163314610e405760405162461bcd60e51b81526004016108e490612319565b600a610c1d8282612445565b6000818152600260205260408120546001600160a01b0316806107d75760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b60648201526084016108e4565b60006001600160a01b038216610f2e5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b60648201526084016108e4565b506001600160a01b031660009081526003602052604090205490565b6006546001600160a01b03163314610f745760405162461bcd60e51b81526004016108e490612319565b610f7e60006119db565b565b33610f8a82610e4c565b6001600160a01b031614610fe05760405162461bcd60e51b815260206004820152601d60248201527f6e6f7420746865206f776e6572206f206674686520746f6b656e20494400000060448201526064016108e4565b60135460ff1615156001146110285760405162461bcd60e51b815260206004820152600e60248201526d22bb32b73a103737ba1037b832b760911b60448201526064016108e4565b60145434101561103757600080fd5b6000908152601260205260409020805460ff19166001179055565b6060600180546107ec906122e5565b600061106c600f5490565b9050600082116110b65760405162461bcd60e51b815260206004820152601560248201527406d696e7420616d6f756e742063616e74206265203605c1b60448201526064016108e4565b600e548211156111085760405162461bcd60e51b815260206004820152601d60248201527f43616e74206d696e74206f76657220746865206d617820616d6f756e7400000060448201526064016108e4565b600d546111158383612364565b11156111635760405162461bcd60e51b815260206004820152601860248201527f4d696e7420616d6f756e7420697320746f6f206869676820000000000000000060448201526064016108e4565b6006546001600160a01b0316331461118f5781600c546111839190612505565b34101561118f57600080fd5b60015b8281116111b9576111a733610a018385612364565b806111b18161238d565b915050611192565b5081600f60008282546111cc9190612364565b90915550505050565b336001600160a01b0383160361122d5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016108e4565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6006546001600160a01b031633146112c35760405162461bcd60e51b81526004016108e490612319565b601455565b6112d23383611764565b6112ee5760405162461bcd60e51b81526004016108e4906123a6565b610a8e84848484611a2d565b6006546000906001600160a01b031633146113275760405162461bcd60e51b81526004016108e490612319565b5060105490565b600b805461070a906122e5565b6000818152600260205260409020546060906001600160a01b03166113b65760405162461bcd60e51b815260206004820152602b60248201527f4552433732314d657461646174613a20555249207175657279206e6f6e65786960448201526a39ba32b73a103a37b5b2b760a91b60648201526084016108e4565b60008281526012602052604090205460ff1615156001036114305760006113db611a60565b905060008151116113fb5760405180602001604052806000815250611429565b8061140584611a6f565b600b6040516020016114199392919061251c565b6040516020818303038152906040525b9392505050565b60006113db611b70565b919050565b6006546001600160a01b031633146114695760405162461bcd60e51b81526004016108e490612319565b6002600754036114bb5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016108e4565b6002600755604051600090339047908381818185875af1925050503d8060008114611502576040519150601f19603f3d011682016040523d82523d6000602084013e611507565b606091505b505090508061151557600080fd5b506001600755565b6006546001600160a01b031633146115475760405162461bcd60e51b81526004016108e490612319565b600b610c1d8282612445565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b600081815260126020526040812054819060ff1615156001036107d75750600192915050565b50919050565b6006546001600160a01b031633146115d75760405162461bcd60e51b81526004016108e490612319565b6001600160a01b03811661163c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108e4565b611645816119db565b50565b3361165282610e4c565b6001600160a01b0316146116a85760405162461bcd60e51b815260206004820152601d60248201527f6e6f7420746865206f776e6572206f662074686520746f6b656e20494400000060448201526064016108e4565b6014543410156116b757600080fd5b6000908152601260205260409020805460ff19169055565b6009805461070a906122e5565b610c1d828260405180602001604052806000815250611b7f565b600081815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061172b82610e4c565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b03166117dd5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084016108e4565b60006117e883610e4c565b9050806001600160a01b0316846001600160a01b031614806118235750836001600160a01b03166118188461086f565b6001600160a01b0316145b8061183357506118338185611553565b949350505050565b826001600160a01b031661184e82610e4c565b6001600160a01b0316146118b65760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b60648201526084016108e4565b6001600160a01b0382166119185760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016108e4565b6119236000826116f6565b6001600160a01b038316600090815260036020526040812080546001929061194c9084906125bc565b90915550506001600160a01b038216600090815260036020526040812080546001929061197a908490612364565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611a3884848461183b565b611a4484848484611bb2565b610a8e5760405162461bcd60e51b81526004016108e4906125cf565b6060601180546107ec906122e5565b606081600003611a965750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611ac05780611aaa8161238d565b9150611ab99050600a83612637565b9150611a9a565b60008167ffffffffffffffff811115611adb57611adb611ea4565b6040519080825280601f01601f191660200182016040528015611b05576020820181803683370190505b5090505b841561183357611b1a6001836125bc565b9150611b27600a8661264b565b611b32906030612364565b60f81b818381518110611b4757611b47612377565b60200101906001600160f81b031916908160001a905350611b69600a86612637565b9450611b09565b6060600a80546107ec906122e5565b611b898383611cb3565b611b966000848484611bb2565b610ba45760405162461bcd60e51b81526004016108e4906125cf565b60006001600160a01b0384163b15611ca857604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611bf690339089908890889060040161265f565b6020604051808303816000875af1925050508015611c31575060408051601f3d908101601f19168201909252611c2e9181019061269c565b60015b611c8e573d808015611c5f576040519150601f19603f3d011682016040523d82523d6000602084013e611c64565b606091505b508051600003611c865760405162461bcd60e51b81526004016108e4906125cf565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611833565b506001949350505050565b6001600160a01b038216611d095760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016108e4565b6000818152600260205260409020546001600160a01b031615611d6e5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016108e4565b6001600160a01b0382166000908152600360205260408120805460019290611d97908490612364565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60005b83811015611e10578181015183820152602001611df8565b50506000910152565b60008151808452611e31816020860160208601611df5565b601f01601f19169290920160200192915050565b6020815260006114296020830184611e19565b6001600160e01b03198116811461164557600080fd5b600060208284031215611e8057600080fd5b813561142981611e58565b600060208284031215611e9d57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611ee357611ee3611ea4565b604052919050565b600067ffffffffffffffff821115611f0557611f05611ea4565b5060051b60200190565b80356001600160a01b038116811461143a57600080fd5b600082601f830112611f3757600080fd5b81356020611f4c611f4783611eeb565b611eba565b82815260059290921b84018101918181019086841115611f6b57600080fd5b8286015b84811015611f865780358352918301918301611f6f565b509695505050505050565b60008060408385031215611fa457600080fd5b823567ffffffffffffffff80821115611fbc57600080fd5b818501915085601f830112611fd057600080fd5b81356020611fe0611f4783611eeb565b82815260059290921b84018101918181019089841115611fff57600080fd5b948201945b838610156120245761201586611f0f565b82529482019490820190612004565b9650508601359250508082111561203a57600080fd5b5061204785828601611f26565b9150509250929050565b6000806040838503121561206457600080fd5b61206d83611f0f565b946020939093013593505050565b60008060006060848603121561209057600080fd5b61209984611f0f565b92506120a760208501611f0f565b9150604084013590509250925092565b600067ffffffffffffffff8311156120d1576120d1611ea4565b6120e4601f8401601f1916602001611eba565b90508281528383830111156120f857600080fd5b828260208301376000602084830101529392505050565b60006020828403121561212157600080fd5b813567ffffffffffffffff81111561213857600080fd5b8201601f8101841361214957600080fd5b611833848235602084016120b7565b60006020828403121561216a57600080fd5b61142982611f0f565b6020808252825182820181905260009190848201906040850190845b818110156121ab5783518352928401929184019160010161218f565b50909695505050505050565b8035801515811461143a57600080fd5b600080604083850312156121da57600080fd5b823567ffffffffffffffff8111156121f157600080fd5b6121fd85828601611f26565b92505061220c602084016121b7565b90509250929050565b6000806040838503121561222857600080fd5b61223183611f0f565b915061220c602084016121b7565b6000806000806080858703121561225557600080fd5b61225e85611f0f565b935061226c60208601611f0f565b925060408501359150606085013567ffffffffffffffff81111561228f57600080fd5b8501601f810187136122a057600080fd5b6122af878235602084016120b7565b91505092959194509250565b600080604083850312156122ce57600080fd5b6122d783611f0f565b915061220c60208401611f0f565b600181811c908216806122f957607f821691505b6020821081036115a757634e487b7160e01b600052602260045260246000fd5b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808201808211156107d7576107d761234e565b634e487b7160e01b600052603260045260246000fd5b60006001820161239f5761239f61234e565b5060010190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b601f821115610ba457600081815260208120601f850160051c8101602086101561241e5750805b601f850160051c820191505b8181101561243d5782815560010161242a565b505050505050565b815167ffffffffffffffff81111561245f5761245f611ea4565b6124738161246d84546122e5565b846123f7565b602080601f8311600181146124a857600084156124905750858301515b600019600386901b1c1916600185901b17855561243d565b600085815260208120601f198616915b828110156124d7578886015182559484019460019091019084016124b8565b50858210156124f55787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b80820281158282048414176107d7576107d761234e565b60008451602061252f8285838a01611df5565b8551918401916125428184848a01611df5565b8554920191600090612553816122e5565b6001828116801561256b5760018114612580576125ac565b60ff19841687528215158302870194506125ac565b896000528560002060005b848110156125a45781548982015290830190870161258b565b505082870194505b50929a9950505050505050505050565b818103818111156107d7576107d761234e565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261264657612646612621565b500490565b60008261265a5761265a612621565b500690565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061269290830184611e19565b9695505050505050565b6000602082840312156126ae57600080fd5b815161142981611e5856fea2646970667358221220ef984dd03d432e218c86e222d500e831a3600523caab9301297fa12b32eaccf364736f6c63430008110033697066733a2f2f516d506a375762725a6d43376b4d3767526a645039567771774a3856525351455935684d65726b6f7747377962742f

Deployed Bytecode

0x6080604052600436106102515760003560e01c8063715018a611610139578063bd98b849116100b6578063da3ef23f1161007a578063da3ef23f14610655578063e985e9c514610675578063f05f9e1514610695578063f2fde38b146106b5578063f520e78d146106d5578063fab1f9b1146106e857600080fd5b8063bd98b849146105ed578063c668286214610602578063c87b56dd14610617578063d5abeb0114610637578063da3870821461064d57600080fd5b80639d581854116100fd5780639d58185414610564578063a0712d681461057a578063a22cb4651461058d578063b6003f14146105ad578063b88d4fde146105cd57600080fd5b8063715018a6146104f35780637af284d5146105085780638da5cb5b1461051e57806392af341f1461053c57806395d89b411461054f57600080fd5b8063349cd113116101d257806344a0d68a1161019657806344a0d68a146104395780634b3679af146104595780634cebf3cb1461047957806355f804b3146104935780636352211e146104b357806370a08231146104d357600080fd5b8063349cd113146103a257806335dfe091146103b75780633a780d16146103d757806342842e0e146103ec578063438b63001461040c57600080fd5b8063095ea7b311610219578063095ea7b31461031357806313faede61461033357806318160ddd14610357578063239c70ae1461036c57806323b872dd1461038257600080fd5b806301f342581461025657806301ffc9a71461028157806306fdde03146102b1578063081812fc146102c657806308d899b0146102fe575b600080fd5b34801561026257600080fd5b5061026b6106fd565b6040516102789190611e45565b60405180910390f35b34801561028d57600080fd5b506102a161029c366004611e6e565b61078b565b6040519015158152602001610278565b3480156102bd57600080fd5b5061026b6107dd565b3480156102d257600080fd5b506102e66102e1366004611e8b565b61086f565b6040516001600160a01b039091168152602001610278565b61031161030c366004611f91565b610909565b005b34801561031f57600080fd5b5061031161032e366004612051565b610a94565b34801561033f57600080fd5b50610349600c5481565b604051908152602001610278565b34801561036357600080fd5b50600f54610349565b34801561037857600080fd5b50610349600e5481565b34801561038e57600080fd5b5061031161039d36600461207b565b610ba9565b3480156103ae57600080fd5b5061026b610bda565b3480156103c357600080fd5b506103116103d236600461210f565b610be7565b3480156103e357600080fd5b50610311610c21565b3480156103f857600080fd5b5061031161040736600461207b565b610c5f565b34801561041857600080fd5b5061042c610427366004612158565b610c7a565b6040516102789190612173565b34801561044557600080fd5b50610311610454366004611e8b565b610d5a565b34801561046557600080fd5b506103116104743660046121c7565b610d89565b34801561048557600080fd5b506013546102a19060ff1681565b34801561049f57600080fd5b506103116104ae36600461210f565b610e16565b3480156104bf57600080fd5b506102e66104ce366004611e8b565b610e4c565b3480156104df57600080fd5b506103496104ee366004612158565b610ec3565b3480156104ff57600080fd5b50610311610f4a565b34801561051457600080fd5b50610349600f5481565b34801561052a57600080fd5b506006546001600160a01b03166102e6565b61031161054a366004611e8b565b610f80565b34801561055b57600080fd5b5061026b611052565b34801561057057600080fd5b5061034960145481565b610311610588366004611e8b565b611061565b34801561059957600080fd5b506103116105a8366004612215565b6111d5565b3480156105b957600080fd5b506103116105c8366004611e8b565b611299565b3480156105d957600080fd5b506103116105e836600461223f565b6112c8565b3480156105f957600080fd5b506103496112fa565b34801561060e57600080fd5b5061026b61132e565b34801561062357600080fd5b5061026b610632366004611e8b565b61133b565b34801561064357600080fd5b50610349600d5481565b61031161143f565b34801561066157600080fd5b5061031161067036600461210f565b61151d565b34801561068157600080fd5b506102a16106903660046122bb565b611553565b3480156106a157600080fd5b506103496106b0366004611e8b565b611581565b3480156106c157600080fd5b506103116106d0366004612158565b6115ad565b6103116106e3366004611e8b565b611648565b3480156106f457600080fd5b5061026b6116cf565b6011805461070a906122e5565b80601f0160208091040260200160405190810160405280929190818152602001828054610736906122e5565b80156107835780601f1061075857610100808354040283529160200191610783565b820191906000526020600020905b81548152906001019060200180831161076657829003601f168201915b505050505081565b60006001600160e01b031982166380ac58cd60e01b14806107bc57506001600160e01b03198216635b5e139f60e01b145b806107d757506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546107ec906122e5565b80601f0160208091040260200160405190810160405280929190818152602001828054610818906122e5565b80156108655780601f1061083a57610100808354040283529160200191610865565b820191906000526020600020905b81548152906001019060200180831161084857829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b03166108ed5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b6006546001600160a01b031633146109335760405162461bcd60e51b81526004016108e490612319565b6000600d548184516109459190612364565b11156109a45760405162461bcd60e51b815260206004820152602860248201527f74686520616d6f756e7420746f2061697264726f702065786365656473206d616044820152677820737570706c7960c01b60648201526084016108e4565b60005b8351811015610a8e57600f54915060015b8382815181106109ca576109ca612377565b60200260200101518111610a1857610a068583815181106109ed576109ed612377565b60200260200101518285610a019190612364565b6116dc565b80610a108161238d565b9150506109b8565b50828181518110610a2b57610a2b612377565b602002602001015160106000828254610a449190612364565b92505081905550828181518110610a5d57610a5d612377565b6020026020010151600f6000828254610a769190612364565b90915550819050610a868161238d565b9150506109a7565b50505050565b6000610a9f82610e4c565b9050806001600160a01b0316836001600160a01b031603610b0c5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084016108e4565b336001600160a01b0382161480610b285750610b288133611553565b610b9a5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c000000000000000060648201526084016108e4565b610ba483836116f6565b505050565b610bb33382611764565b610bcf5760405162461bcd60e51b81526004016108e4906123a6565b610ba483838361183b565b6008805461070a906122e5565b6006546001600160a01b03163314610c115760405162461bcd60e51b81526004016108e490612319565b6011610c1d8282612445565b5050565b6006546001600160a01b03163314610c4b5760405162461bcd60e51b81526004016108e490612319565b6013805460ff19811660ff90911615179055565b610ba4838383604051806020016040528060008152506112c8565b60606000610c8783610ec3565b905060008167ffffffffffffffff811115610ca457610ca4611ea4565b604051908082528060200260200182016040528015610ccd578160200160208202803683370190505b509050600160005b8381108015610ce65750600d548211155b15610d50576000610cf683610e4c565b9050866001600160a01b0316816001600160a01b031603610d3d5782848381518110610d2457610d24612377565b602090810291909101015281610d398161238d565b9250505b82610d478161238d565b93505050610cd5565b5090949350505050565b6006546001600160a01b03163314610d845760405162461bcd60e51b81526004016108e490612319565b600c55565b6006546001600160a01b03163314610db35760405162461bcd60e51b81526004016108e490612319565b60005b8251811015610ba4578160126000858481518110610dd657610dd6612377565b6020026020010151815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610e0e9061238d565b915050610db6565b6006546001600160a01b03163314610e405760405162461bcd60e51b81526004016108e490612319565b600a610c1d8282612445565b6000818152600260205260408120546001600160a01b0316806107d75760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b60648201526084016108e4565b60006001600160a01b038216610f2e5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b60648201526084016108e4565b506001600160a01b031660009081526003602052604090205490565b6006546001600160a01b03163314610f745760405162461bcd60e51b81526004016108e490612319565b610f7e60006119db565b565b33610f8a82610e4c565b6001600160a01b031614610fe05760405162461bcd60e51b815260206004820152601d60248201527f6e6f7420746865206f776e6572206f206674686520746f6b656e20494400000060448201526064016108e4565b60135460ff1615156001146110285760405162461bcd60e51b815260206004820152600e60248201526d22bb32b73a103737ba1037b832b760911b60448201526064016108e4565b60145434101561103757600080fd5b6000908152601260205260409020805460ff19166001179055565b6060600180546107ec906122e5565b600061106c600f5490565b9050600082116110b65760405162461bcd60e51b815260206004820152601560248201527406d696e7420616d6f756e742063616e74206265203605c1b60448201526064016108e4565b600e548211156111085760405162461bcd60e51b815260206004820152601d60248201527f43616e74206d696e74206f76657220746865206d617820616d6f756e7400000060448201526064016108e4565b600d546111158383612364565b11156111635760405162461bcd60e51b815260206004820152601860248201527f4d696e7420616d6f756e7420697320746f6f206869676820000000000000000060448201526064016108e4565b6006546001600160a01b0316331461118f5781600c546111839190612505565b34101561118f57600080fd5b60015b8281116111b9576111a733610a018385612364565b806111b18161238d565b915050611192565b5081600f60008282546111cc9190612364565b90915550505050565b336001600160a01b0383160361122d5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016108e4565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6006546001600160a01b031633146112c35760405162461bcd60e51b81526004016108e490612319565b601455565b6112d23383611764565b6112ee5760405162461bcd60e51b81526004016108e4906123a6565b610a8e84848484611a2d565b6006546000906001600160a01b031633146113275760405162461bcd60e51b81526004016108e490612319565b5060105490565b600b805461070a906122e5565b6000818152600260205260409020546060906001600160a01b03166113b65760405162461bcd60e51b815260206004820152602b60248201527f4552433732314d657461646174613a20555249207175657279206e6f6e65786960448201526a39ba32b73a103a37b5b2b760a91b60648201526084016108e4565b60008281526012602052604090205460ff1615156001036114305760006113db611a60565b905060008151116113fb5760405180602001604052806000815250611429565b8061140584611a6f565b600b6040516020016114199392919061251c565b6040516020818303038152906040525b9392505050565b60006113db611b70565b919050565b6006546001600160a01b031633146114695760405162461bcd60e51b81526004016108e490612319565b6002600754036114bb5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016108e4565b6002600755604051600090339047908381818185875af1925050503d8060008114611502576040519150601f19603f3d011682016040523d82523d6000602084013e611507565b606091505b505090508061151557600080fd5b506001600755565b6006546001600160a01b031633146115475760405162461bcd60e51b81526004016108e490612319565b600b610c1d8282612445565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b600081815260126020526040812054819060ff1615156001036107d75750600192915050565b50919050565b6006546001600160a01b031633146115d75760405162461bcd60e51b81526004016108e490612319565b6001600160a01b03811661163c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108e4565b611645816119db565b50565b3361165282610e4c565b6001600160a01b0316146116a85760405162461bcd60e51b815260206004820152601d60248201527f6e6f7420746865206f776e6572206f662074686520746f6b656e20494400000060448201526064016108e4565b6014543410156116b757600080fd5b6000908152601260205260409020805460ff19169055565b6009805461070a906122e5565b610c1d828260405180602001604052806000815250611b7f565b600081815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061172b82610e4c565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b03166117dd5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084016108e4565b60006117e883610e4c565b9050806001600160a01b0316846001600160a01b031614806118235750836001600160a01b03166118188461086f565b6001600160a01b0316145b8061183357506118338185611553565b949350505050565b826001600160a01b031661184e82610e4c565b6001600160a01b0316146118b65760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b60648201526084016108e4565b6001600160a01b0382166119185760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016108e4565b6119236000826116f6565b6001600160a01b038316600090815260036020526040812080546001929061194c9084906125bc565b90915550506001600160a01b038216600090815260036020526040812080546001929061197a908490612364565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611a3884848461183b565b611a4484848484611bb2565b610a8e5760405162461bcd60e51b81526004016108e4906125cf565b6060601180546107ec906122e5565b606081600003611a965750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611ac05780611aaa8161238d565b9150611ab99050600a83612637565b9150611a9a565b60008167ffffffffffffffff811115611adb57611adb611ea4565b6040519080825280601f01601f191660200182016040528015611b05576020820181803683370190505b5090505b841561183357611b1a6001836125bc565b9150611b27600a8661264b565b611b32906030612364565b60f81b818381518110611b4757611b47612377565b60200101906001600160f81b031916908160001a905350611b69600a86612637565b9450611b09565b6060600a80546107ec906122e5565b611b898383611cb3565b611b966000848484611bb2565b610ba45760405162461bcd60e51b81526004016108e4906125cf565b60006001600160a01b0384163b15611ca857604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611bf690339089908890889060040161265f565b6020604051808303816000875af1925050508015611c31575060408051601f3d908101601f19168201909252611c2e9181019061269c565b60015b611c8e573d808015611c5f576040519150601f19603f3d011682016040523d82523d6000602084013e611c64565b606091505b508051600003611c865760405162461bcd60e51b81526004016108e4906125cf565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611833565b506001949350505050565b6001600160a01b038216611d095760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016108e4565b6000818152600260205260409020546001600160a01b031615611d6e5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016108e4565b6001600160a01b0382166000908152600360205260408120805460019290611d97908490612364565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60005b83811015611e10578181015183820152602001611df8565b50506000910152565b60008151808452611e31816020860160208601611df5565b601f01601f19169290920160200192915050565b6020815260006114296020830184611e19565b6001600160e01b03198116811461164557600080fd5b600060208284031215611e8057600080fd5b813561142981611e58565b600060208284031215611e9d57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611ee357611ee3611ea4565b604052919050565b600067ffffffffffffffff821115611f0557611f05611ea4565b5060051b60200190565b80356001600160a01b038116811461143a57600080fd5b600082601f830112611f3757600080fd5b81356020611f4c611f4783611eeb565b611eba565b82815260059290921b84018101918181019086841115611f6b57600080fd5b8286015b84811015611f865780358352918301918301611f6f565b509695505050505050565b60008060408385031215611fa457600080fd5b823567ffffffffffffffff80821115611fbc57600080fd5b818501915085601f830112611fd057600080fd5b81356020611fe0611f4783611eeb565b82815260059290921b84018101918181019089841115611fff57600080fd5b948201945b838610156120245761201586611f0f565b82529482019490820190612004565b9650508601359250508082111561203a57600080fd5b5061204785828601611f26565b9150509250929050565b6000806040838503121561206457600080fd5b61206d83611f0f565b946020939093013593505050565b60008060006060848603121561209057600080fd5b61209984611f0f565b92506120a760208501611f0f565b9150604084013590509250925092565b600067ffffffffffffffff8311156120d1576120d1611ea4565b6120e4601f8401601f1916602001611eba565b90508281528383830111156120f857600080fd5b828260208301376000602084830101529392505050565b60006020828403121561212157600080fd5b813567ffffffffffffffff81111561213857600080fd5b8201601f8101841361214957600080fd5b611833848235602084016120b7565b60006020828403121561216a57600080fd5b61142982611f0f565b6020808252825182820181905260009190848201906040850190845b818110156121ab5783518352928401929184019160010161218f565b50909695505050505050565b8035801515811461143a57600080fd5b600080604083850312156121da57600080fd5b823567ffffffffffffffff8111156121f157600080fd5b6121fd85828601611f26565b92505061220c602084016121b7565b90509250929050565b6000806040838503121561222857600080fd5b61223183611f0f565b915061220c602084016121b7565b6000806000806080858703121561225557600080fd5b61225e85611f0f565b935061226c60208601611f0f565b925060408501359150606085013567ffffffffffffffff81111561228f57600080fd5b8501601f810187136122a057600080fd5b6122af878235602084016120b7565b91505092959194509250565b600080604083850312156122ce57600080fd5b6122d783611f0f565b915061220c60208401611f0f565b600181811c908216806122f957607f821691505b6020821081036115a757634e487b7160e01b600052602260045260246000fd5b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808201808211156107d7576107d761234e565b634e487b7160e01b600052603260045260246000fd5b60006001820161239f5761239f61234e565b5060010190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b601f821115610ba457600081815260208120601f850160051c8101602086101561241e5750805b601f850160051c820191505b8181101561243d5782815560010161242a565b505050505050565b815167ffffffffffffffff81111561245f5761245f611ea4565b6124738161246d84546122e5565b846123f7565b602080601f8311600181146124a857600084156124905750858301515b600019600386901b1c1916600185901b17855561243d565b600085815260208120601f198616915b828110156124d7578886015182559484019460019091019084016124b8565b50858210156124f55787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b80820281158282048414176107d7576107d761234e565b60008451602061252f8285838a01611df5565b8551918401916125428184848a01611df5565b8554920191600090612553816122e5565b6001828116801561256b5760018114612580576125ac565b60ff19841687528215158302870194506125ac565b896000528560002060005b848110156125a45781548982015290830190870161258b565b505082870194505b50929a9950505050505050505050565b818103818111156107d7576107d761234e565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261264657612646612621565b500490565b60008261265a5761265a612621565b500690565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061269290830184611e19565b9695505050505050565b6000602082840312156126ae57600080fd5b815161142981611e5856fea2646970667358221220ef984dd03d432e218c86e222d500e831a3600523caab9301297fa12b32eaccf364736f6c63430008110033

Deployed Bytecode Sourcemap

21553:6117:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22175:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9265:305;;;;;;;;;;-1:-1:-1;9265:305:0;;;;;:::i;:::-;;:::i;:::-;;;1321:14:1;;1314:22;1296:41;;1284:2;1269:18;9265:305:0;1156:187:1;10050:100:0;;;;;;;;;;;;;:::i;11148:221::-;;;;;;;;;;-1:-1:-1;11148:221:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1697:32:1;;;1679:51;;1667:2;1652:18;11148:221:0;1533:203:1;23363:614:0;;;;;;:::i;:::-;;:::i;:::-;;10724:411;;;;;;;;;;-1:-1:-1;10724:411:0;;;;;:::i;:::-;;:::i;21926:31::-;;;;;;;;;;;;;;;;;;;4742:25:1;;;4730:2;4715:18;21926:31:0;4596:177:1;24004:85:0;;;;;;;;;;-1:-1:-1;24071:12:0;;24004:85;;21997:34;;;;;;;;;;;;;;;;11861:296;;;;;;;;;;-1:-1:-1;11861:296:0;;;;;:::i;:::-;;:::i;21671:45::-;;;;;;;;;;;;;:::i;27075:93::-;;;;;;;;;;-1:-1:-1;27075:93:0;;;;;:::i;:::-;;:::i;25627:80::-;;;;;;;;;;;;;:::i;12166:185::-;;;;;;;;;;-1:-1:-1;12166:185:0;;;;;:::i;:::-;;:::i;24125:625::-;;;;;;;;;;-1:-1:-1;24125:625:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;26714:83::-;;;;;;;;;;-1:-1:-1;26714:83:0;;;;;:::i;:::-;;:::i;26197:213::-;;;;;;;;;;-1:-1:-1;26197:213:0;;;;;:::i;:::-;;:::i;22314:29::-;;;;;;;;;;-1:-1:-1;22314:29:0;;;;;;;;26944:100;;;;;;;;;;-1:-1:-1;26944:100:0;;;;;:::i;:::-;;:::i;9798:239::-;;;;;;;;;;-1:-1:-1;9798:239:0;;;;;:::i;:::-;;:::i;9580:208::-;;;;;;;;;;-1:-1:-1;9580:208:0;;;;;:::i;:::-;;:::i;19632:94::-;;;;;;;;;;;;;:::i;22055:27::-;;;;;;;;;;;;;;;;19402:87;;;;;;;;;;-1:-1:-1;19475:6:0;;-1:-1:-1;;;;;19475:6:0;19402:87;;25711:249;;;;;;:::i;:::-;;:::i;10161:104::-;;;;;;;;;;;;;:::i;22359:34::-;;;;;;;;;;;;;;;;22739:545;;;;;;:::i;:::-;;:::i;11382:295::-;;;;;;;;;;-1:-1:-1;11382:295:0;;;;;:::i;:::-;;:::i;26823:95::-;;;;;;;;;;-1:-1:-1;26823:95:0;;;;;:::i;:::-;;:::i;12361:328::-;;;;;;;;;;-1:-1:-1;12361:328:0;;;;;:::i;:::-;;:::i;27351:112::-;;;;;;;;;;;;;:::i;21864:37::-;;;;;;;;;;;;;:::i;24756:826::-;;;;;;;;;;-1:-1:-1;24756:826:0;;;;;:::i;:::-;;:::i;21962:30::-;;;;;;;;;;;;;;;;27486:181;;;:::i;27197:124::-;;;;;;;;;;-1:-1:-1;27197:124:0;;;;;:::i;:::-;;:::i;11689:164::-;;;;;;;;;;-1:-1:-1;11689:164:0;;;;;:::i;:::-;;:::i;26432:233::-;;;;;;;;;;-1:-1:-1;26432:233:0;;;;;:::i;:::-;;:::i;19737:192::-;;;;;;;;;;-1:-1:-1;19737:192:0;;;;;:::i;:::-;;:::i;25964:209::-;;;;;;:::i;:::-;;:::i;21721:38::-;;;;;;;;;;;;;:::i;22175:40::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9265:305::-;9367:4;-1:-1:-1;;;;;;9404:40:0;;-1:-1:-1;;;9404:40:0;;:105;;-1:-1:-1;;;;;;;9461:48:0;;-1:-1:-1;;;9461:48:0;9404:105;:158;;;-1:-1:-1;;;;;;;;;;1859:40:0;;;9526:36;9384:178;9265:305;-1:-1:-1;;9265:305:0:o;10050:100::-;10104:13;10137:5;10130:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10050:100;:::o;11148:221::-;11224:7;13111:16;;;:7;:16;;;;;;-1:-1:-1;;;;;13111:16:0;11244:73;;;;-1:-1:-1;;;11244:73:0;;9176:2:1;11244:73:0;;;9158:21:1;9215:2;9195:18;;;9188:30;9254:34;9234:18;;;9227:62;-1:-1:-1;;;9305:18:1;;;9298:42;9357:19;;11244:73:0;;;;;;;;;-1:-1:-1;11337:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;11337:24:0;;11148:221::o;23363:614::-;19475:6;;-1:-1:-1;;;;;19475:6:0;8404:10;19542:23;19534:68;;;;-1:-1:-1;;;19534:68:0;;;;;;;:::i;:::-;23484:20:::1;23558:9;;23542:12;23522:11;:18;23521:33;;;;:::i;:::-;:46;;23513:99;;;::::0;-1:-1:-1;;;23513:99:0;;10212:2:1;23513:99:0::1;::::0;::::1;10194:21:1::0;10251:2;10231:18;;;10224:30;10290:34;10270:18;;;10263:62;-1:-1:-1;;;10341:18:1;;;10334:38;10389:19;;23513:99:0::1;10010:404:1::0;23513:99:0::1;23632:9;23628:342;23650:11;:18;23647:1;:21;23628:342;;;24071:12:::0;;23686:26;-1:-1:-1;23741:1:0::1;23727:130;23747:18;23766:1;23747:21;;;;;;;;:::i;:::-;;;;;;;23744:1;:24;23727:130;;23793:40;23803:11;23815:1;23803:14;;;;;;;;:::i;:::-;;;;;;;23831:1;23818:12;:14;;;;:::i;:::-;23793:9;:40::i;:::-;23769:3:::0;::::1;::::0;::::1;:::i;:::-;;;;23727:130;;;;23889:18;23908:1;23889:21;;;;;;;;:::i;:::-;;;;;;;23871:16;;:39;;;;;;;:::i;:::-;;;;;;;;23939:18;23958:1;23939:21;;;;;;;;:::i;:::-;;;;;;;23925:12;;:35;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;23669:3:0;;-1:-1:-1;23669:3:0::1;::::0;::::1;:::i;:::-;;;;23628:342;;;;23475:502;23363:614:::0;;:::o;10724:411::-;10805:13;10821:23;10836:7;10821:14;:23::i;:::-;10805:39;;10869:5;-1:-1:-1;;;;;10863:11:0;:2;-1:-1:-1;;;;;10863:11:0;;10855:57;;;;-1:-1:-1;;;10855:57:0;;10893:2:1;10855:57:0;;;10875:21:1;10932:2;10912:18;;;10905:30;10971:34;10951:18;;;10944:62;-1:-1:-1;;;11022:18:1;;;11015:31;11063:19;;10855:57:0;10691:397:1;10855:57:0;8404:10;-1:-1:-1;;;;;10947:21:0;;;;:62;;-1:-1:-1;10972:37:0;10989:5;8404:10;11689:164;:::i;10972:37::-;10925:168;;;;-1:-1:-1;;;10925:168:0;;11295:2:1;10925:168:0;;;11277:21:1;11334:2;11314:18;;;11307:30;11373:34;11353:18;;;11346:62;11444:26;11424:18;;;11417:54;11488:19;;10925:168:0;11093:420:1;10925:168:0;11106:21;11115:2;11119:7;11106:8;:21::i;:::-;10794:341;10724:411;;:::o;11861:296::-;12013:41;8404:10;12046:7;12013:18;:41::i;:::-;12005:103;;;;-1:-1:-1;;;12005:103:0;;;;;;;:::i;:::-;12121:28;12131:4;12137:2;12141:7;12121:9;:28::i;21671:45::-;;;;;;;:::i;27075:93::-;19475:6;;-1:-1:-1;;;;;19475:6:0;8404:10;19542:23;19534:68;;;;-1:-1:-1;;;19534:68:0;;;;;;;:::i;:::-;27146:8:::1;:16;27155:7:::0;27146:8;:16:::1;:::i;:::-;;27075:93:::0;:::o;25627:80::-;19475:6;;-1:-1:-1;;;;;19475:6:0;8404:10;19542:23;19534:68;;;;-1:-1:-1;;;19534:68:0;;;;;;;:::i;:::-;25690:11:::1;::::0;;-1:-1:-1;;25677:24:0;::::1;25690:11;::::0;;::::1;25689:12;25677:24;::::0;;25627:80::o;12166:185::-;12304:39;12321:4;12327:2;12331:7;12304:39;;;;;;;;;;;;:16;:39::i;24125:625::-;24200:16;24228:23;24254:17;24264:6;24254:9;:17::i;:::-;24228:43;;24278:30;24325:15;24311:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24311:30:0;-1:-1:-1;24278:63:0;-1:-1:-1;24373:1:0;24348:22;24415:303;24440:15;24422;:33;:64;;;;;24477:9;;24459:14;:27;;24422:64;24415:303;;;24497:25;24525:23;24533:14;24525:7;:23::i;:::-;24497:51;;24582:6;-1:-1:-1;;;;;24561:27:0;:17;-1:-1:-1;;;;;24561:27:0;;24557:129;;24634:14;24601:13;24615:15;24601:30;;;;;;;;:::i;:::-;;;;;;;;;;:47;24659:17;;;;:::i;:::-;;;;24557:129;24694:16;;;;:::i;:::-;;;;24488:230;24415:303;;;-1:-1:-1;24731:13:0;;24125:625;-1:-1:-1;;;;24125:625:0:o;26714:83::-;19475:6;;-1:-1:-1;;;;;19475:6:0;8404:10;19542:23;19534:68;;;;-1:-1:-1;;;19534:68:0;;;;;;;:::i;:::-;26775:4:::1;:15:::0;26714:83::o;26197:213::-;19475:6;;-1:-1:-1;;;;;19475:6:0;8404:10;19542:23;19534:68;;;;-1:-1:-1;;;19534:68:0;;;;;;;:::i;:::-;26310:9:::1;26306:99;26325:8;:15;26323:1;:17;26306:99;;;26387:6;26359:13;:26;26373:8;26382:1;26373:11;;;;;;;;:::i;:::-;;;;;;;26359:26;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;26341:3;;;;;:::i;:::-;;;;26306:99;;26944:100:::0;19475:6;;-1:-1:-1;;;;;19475:6:0;8404:10;19542:23;19534:68;;;;-1:-1:-1;;;19534:68:0;;;;;;;:::i;:::-;27017:7:::1;:21;27027:11:::0;27017:7;:21:::1;:::i;9798:239::-:0;9870:7;9906:16;;;:7;:16;;;;;;-1:-1:-1;;;;;9906:16:0;;9933:73;;;;-1:-1:-1;;;9933:73:0;;14342:2:1;9933:73:0;;;14324:21:1;14381:2;14361:18;;;14354:30;14420:34;14400:18;;;14393:62;-1:-1:-1;;;14471:18:1;;;14464:39;14520:19;;9933:73:0;14140:405:1;9580:208:0;9652:7;-1:-1:-1;;;;;9680:19:0;;9672:74;;;;-1:-1:-1;;;9672:74:0;;14752:2:1;9672:74:0;;;14734:21:1;14791:2;14771:18;;;14764:30;14830:34;14810:18;;;14803:62;-1:-1:-1;;;14881:18:1;;;14874:40;14931:19;;9672:74:0;14550:406:1;9672:74:0;-1:-1:-1;;;;;;9764:16:0;;;;;:9;:16;;;;;;;9580:208::o;19632:94::-;19475:6;;-1:-1:-1;;;;;19475:6:0;8404:10;19542:23;19534:68;;;;-1:-1:-1;;;19534:68:0;;;;;;;:::i;:::-;19697:21:::1;19715:1;19697:9;:21::i;:::-;19632:94::o:0;25711:249::-;25794:10;25776:16;25784:7;25776;:16::i;:::-;-1:-1:-1;;;;;25776:28:0;;25768:69;;;;-1:-1:-1;;;25768:69:0;;15163:2:1;25768:69:0;;;15145:21:1;15202:2;15182:18;;;15175:30;15241:31;15221:18;;;15214:59;15290:18;;25768:69:0;14961:353:1;25768:69:0;25851:11;;;;:17;;:11;:17;25842:45;;;;-1:-1:-1;;;25842:45:0;;15521:2:1;25842:45:0;;;15503:21:1;15560:2;15540:18;;;15533:30;-1:-1:-1;;;15579:18:1;;;15572:44;15633:18;;25842:45:0;15319:338:1;25842:45:0;25913:10;;25900:9;:23;;25892:32;;;;;;25929:22;;;;:13;:22;;;;;:27;;-1:-1:-1;;25929:27:0;25952:4;25929:27;;;25711:249::o;10161:104::-;10217:13;10250:7;10243:14;;;;;:::i;22739:545::-;22798:18;22819:13;24071:12;;;24004:85;22819:13;22798:34;;22861:1;22847:11;:15;22839:49;;;;-1:-1:-1;;;22839:49:0;;15864:2:1;22839:49:0;;;15846:21:1;15903:2;15883:18;;;15876:30;-1:-1:-1;;;15922:18:1;;;15915:51;15983:18;;22839:49:0;15662:345:1;22839:49:0;22918:13;;22903:11;:28;;22895:70;;;;-1:-1:-1;;;22895:70:0;;16214:2:1;22895:70:0;;;16196:21:1;16253:2;16233:18;;;16226:30;16292:31;16272:18;;;16265:59;16341:18;;22895:70:0;16012:353:1;22895:70:0;23008:9;;22980:24;22993:11;22980:10;:24;:::i;:::-;:37;;22972:74;;;;-1:-1:-1;;;22972:74:0;;16572:2:1;22972:74:0;;;16554:21:1;16611:2;16591:18;;;16584:30;16650:26;16630:18;;;16623:54;16694:18;;22972:74:0;16370:348:1;22972:74:0;19475:6;;-1:-1:-1;;;;;19475:6:0;23059:10;:21;23055:84;;23119:11;23112:4;;:18;;;;:::i;:::-;23099:9;:31;;23091:40;;;;;;23167:1;23150:97;23175:11;23170:1;:16;23150:97;;23202:37;23212:10;23224:14;23237:1;23224:10;:14;:::i;23202:37::-;23188:3;;;;:::i;:::-;;;;23150:97;;;;23267:11;23253:12;;:25;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;22739:545:0:o;11382:295::-;8404:10;-1:-1:-1;;;;;11485:24:0;;;11477:62;;;;-1:-1:-1;;;11477:62:0;;17098:2:1;11477:62:0;;;17080:21:1;17137:2;17117:18;;;17110:30;17176:27;17156:18;;;17149:55;17221:18;;11477:62:0;16896:349:1;11477:62:0;8404:10;11552:32;;;;:18;:32;;;;;;;;-1:-1:-1;;;;;11552:42:0;;;;;;;;;;;;:53;;-1:-1:-1;;11552:53:0;;;;;;;;;;11621:48;;1296:41:1;;;11552:42:0;;8404:10;11621:48;;1269:18:1;11621:48:0;;;;;;;11382:295;;:::o;26823:95::-;19475:6;;-1:-1:-1;;;;;19475:6:0;8404:10;19542:23;19534:68;;;;-1:-1:-1;;;19534:68:0;;;;;;;:::i;:::-;26890:10:::1;:21:::0;26823:95::o;12361:328::-;12536:41;8404:10;12569:7;12536:18;:41::i;:::-;12528:103;;;;-1:-1:-1;;;12528:103:0;;;;;;;:::i;:::-;12642:39;12656:4;12662:2;12666:7;12675:5;12642:13;:39::i;27351:112::-;19475:6;;27417:7;;-1:-1:-1;;;;;19475:6:0;8404:10;19542:23;19534:68;;;;-1:-1:-1;;;19534:68:0;;;;;;;:::i;:::-;-1:-1:-1;27441:16:0::1;::::0;27351:112;:::o;21864:37::-;;;;;;;:::i;24756:826::-;13087:4;13111:16;;;:7;:16;;;;;;24854:13;;-1:-1:-1;;;;;13111:16:0;24879:71;;;;-1:-1:-1;;;24879:71:0;;17452:2:1;24879:71:0;;;17434:21:1;17491:2;17471:18;;;17464:30;17530:34;17510:18;;;17503:62;-1:-1:-1;;;17581:18:1;;;17574:41;17632:19;;24879:71:0;17250:407:1;24879:71:0;25025:22;;;;:13;:22;;;;;;;;:28;;:22;:28;25022:555;;25079:32;25114:11;:9;:11::i;:::-;25079:46;;25211:1;25182:18;25176:32;:36;:158;;;;;;;;;;;;;;;;;25256:18;25276;:7;:16;:18::i;:::-;25296:13;25239:71;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;25176:158;25140:216;24756:826;-1:-1:-1;;;24756:826:0:o;25022:555::-;25381:28;25412:10;:8;:10::i;25022:555::-;24756:826;;;:::o;27486:181::-;19475:6;;-1:-1:-1;;;;;19475:6:0;8404:10;19542:23;19534:68;;;;-1:-1:-1;;;19534:68:0;;;;;;;:::i;:::-;18047:1:::1;18643:7;;:19:::0;18635:63:::1;;;::::0;-1:-1:-1;;;18635:63:0;;19125:2:1;18635:63:0::1;::::0;::::1;19107:21:1::0;19164:2;19144:18;;;19137:30;19203:33;19183:18;;;19176:61;19254:18;;18635:63:0::1;18923:355:1::0;18635:63:0::1;18047:1;18776:7;:18:::0;27580:58:::2;::::0;27562:12:::2;::::0;27588:10:::2;::::0;27612:21:::2;::::0;27562:12;27580:58;27562:12;27580:58;27612:21;27588:10;27580:58:::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27561:77;;;27653:7;27645:16;;;::::0;::::2;;-1:-1:-1::0;18003:1:0::1;18955:7;:22:::0;27486:181::o;27197:124::-;19475:6;;-1:-1:-1;;;;;19475:6:0;8404:10;19542:23;19534:68;;;;-1:-1:-1;;;19534:68:0;;;;;;;:::i;:::-;27282:13:::1;:33;27298:17:::0;27282:13;:33:::1;:::i;11689:164::-:0;-1:-1:-1;;;;;11810:25:0;;;11786:4;11810:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;11689:164::o;26432:233::-;26486:7;26531:17;;;:13;:17;;;;;;26486:7;;26531:17;;:23;;:17;:23;26527:133;;-1:-1:-1;26574:1:0;;26432:233;-1:-1:-1;;26432:233:0:o;26527:133::-;26494:171;26432:233;;;:::o;19737:192::-;19475:6;;-1:-1:-1;;;;;19475:6:0;8404:10;19542:23;19534:68;;;;-1:-1:-1;;;19534:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19826:22:0;::::1;19818:73;;;::::0;-1:-1:-1;;;19818:73:0;;19695:2:1;19818:73:0::1;::::0;::::1;19677:21:1::0;19734:2;19714:18;;;19707:30;19773:34;19753:18;;;19746:62;-1:-1:-1;;;19824:18:1;;;19817:36;19870:19;;19818:73:0::1;19493:402:1::0;19818:73:0::1;19902:19;19912:8;19902:9;:19::i;:::-;19737:192:::0;:::o;25964:209::-;26046:10;26030:14;26038:5;26030:7;:14::i;:::-;-1:-1:-1;;;;;26030:26:0;;26022:67;;;;-1:-1:-1;;;26022:67:0;;20102:2:1;26022:67:0;;;20084:21:1;20141:2;20121:18;;;20114:30;20180:31;20160:18;;;20153:59;20229:18;;26022:67:0;19900:353:1;26022:67:0;26119:10;;26106:9;:23;;26098:32;;;;;;26160:5;26139:20;;;:13;:20;;;;;:26;;-1:-1:-1;;26139:26:0;;;25964:209::o;21721:38::-;;;;;;;:::i;13518:110::-;13594:26;13604:2;13608:7;13594:26;;;;;;;;;;;;:9;:26::i;15245:174::-;15320:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;15320:29:0;-1:-1:-1;;;;;15320:29:0;;;;;;;;:24;;15374:23;15320:24;15374:14;:23::i;:::-;-1:-1:-1;;;;;15365:46:0;;;;;;;;;;;15245:174;;:::o;13159:348::-;13252:4;13111:16;;;:7;:16;;;;;;-1:-1:-1;;;;;13111:16:0;13269:73;;;;-1:-1:-1;;;13269:73:0;;20460:2:1;13269:73:0;;;20442:21:1;20499:2;20479:18;;;20472:30;20538:34;20518:18;;;20511:62;-1:-1:-1;;;20589:18:1;;;20582:42;20641:19;;13269:73:0;20258:408:1;13269:73:0;13353:13;13369:23;13384:7;13369:14;:23::i;:::-;13353:39;;13422:5;-1:-1:-1;;;;;13411:16:0;:7;-1:-1:-1;;;;;13411:16:0;;:51;;;;13455:7;-1:-1:-1;;;;;13431:31:0;:20;13443:7;13431:11;:20::i;:::-;-1:-1:-1;;;;;13431:31:0;;13411:51;:87;;;;13466:32;13483:5;13490:7;13466:16;:32::i;:::-;13403:96;13159:348;-1:-1:-1;;;;13159:348:0:o;14707:526::-;14866:4;-1:-1:-1;;;;;14839:31:0;:23;14854:7;14839:14;:23::i;:::-;-1:-1:-1;;;;;14839:31:0;;14831:85;;;;-1:-1:-1;;;14831:85:0;;20873:2:1;14831:85:0;;;20855:21:1;20912:2;20892:18;;;20885:30;20951:34;20931:18;;;20924:62;-1:-1:-1;;;21002:18:1;;;20995:39;21051:19;;14831:85:0;20671:405:1;14831:85:0;-1:-1:-1;;;;;14935:16:0;;14927:65;;;;-1:-1:-1;;;14927:65:0;;21283:2:1;14927:65:0;;;21265:21:1;21322:2;21302:18;;;21295:30;21361:34;21341:18;;;21334:62;-1:-1:-1;;;21412:18:1;;;21405:34;21456:19;;14927:65:0;21081:400:1;14927:65:0;15057:29;15074:1;15078:7;15057:8;:29::i;:::-;-1:-1:-1;;;;;15099:15:0;;;;;;:9;:15;;;;;:20;;15118:1;;15099:15;:20;;15118:1;;15099:20;:::i;:::-;;;;-1:-1:-1;;;;;;;15130:13:0;;;;;;:9;:13;;;;;:18;;15147:1;;15130:13;:18;;15147:1;;15130:18;:::i;:::-;;;;-1:-1:-1;;15159:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;15159:21:0;-1:-1:-1;;;;;15159:21:0;;;;;;;;;15198:27;;15159:16;;15198:27;;;;;;;14707:526;;;:::o;19937:173::-;20012:6;;;-1:-1:-1;;;;;20029:17:0;;;-1:-1:-1;;;;;;20029:17:0;;;;;;;20062:40;;20012:6;;;20029:17;20012:6;;20062:40;;19993:16;;20062:40;19982:128;19937:173;:::o;12697:315::-;12854:28;12864:4;12870:2;12874:7;12854:9;:28::i;:::-;12901:48;12924:4;12930:2;12934:7;12943:5;12901:22;:48::i;:::-;12893:111;;;;-1:-1:-1;;;12893:111:0;;;;;;;:::i;22579:89::-;22623:13;22654:8;22647:15;;;;;:::i;2054:723::-;2110:13;2331:5;2340:1;2331:10;2327:53;;-1:-1:-1;;2358:10:0;;;;;;;;;;;;-1:-1:-1;;;2358:10:0;;;;;2054:723::o;2327:53::-;2405:5;2390:12;2446:78;2453:9;;2446:78;;2479:8;;;;:::i;:::-;;-1:-1:-1;2502:10:0;;-1:-1:-1;2510:2:0;2502:10;;:::i;:::-;;;2446:78;;;2534:19;2566:6;2556:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2556:17:0;;2534:39;;2584:154;2591:10;;2584:154;;2618:11;2628:1;2618:11;;:::i;:::-;;-1:-1:-1;2687:10:0;2695:2;2687:5;:10;:::i;:::-;2674:24;;:2;:24;:::i;:::-;2661:39;;2644:6;2651;2644:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;2644:56:0;;;;;;;;-1:-1:-1;2715:11:0;2724:2;2715:11;;:::i;:::-;;;2584:154;;22473:102;22533:13;22562:7;22555:14;;;;;:::i;13640:321::-;13770:18;13776:2;13780:7;13770:5;:18::i;:::-;13821:54;13852:1;13856:2;13860:7;13869:5;13821:22;:54::i;:::-;13799:154;;;;-1:-1:-1;;;13799:154:0;;;;;;;:::i;15427:799::-;15582:4;-1:-1:-1;;;;;15603:13:0;;3908:20;3956:8;15599:620;;15639:72;;-1:-1:-1;;;15639:72:0;;-1:-1:-1;;;;;15639:36:0;;;;;:72;;8404:10;;15690:4;;15696:7;;15705:5;;15639:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15639:72:0;;;;;;;;-1:-1:-1;;15639:72:0;;;;;;;;;;;;:::i;:::-;;;15635:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15881:6;:13;15898:1;15881:18;15877:272;;15924:60;;-1:-1:-1;;;15924:60:0;;;;;;;:::i;15877:272::-;16099:6;16093:13;16084:6;16080:2;16076:15;16069:38;15635:529;-1:-1:-1;;;;;;15762:51:0;-1:-1:-1;;;15762:51:0;;-1:-1:-1;15755:58:0;;15599:620;-1:-1:-1;16203:4:0;15427:799;;;;;;:::o;13972:382::-;-1:-1:-1;;;;;14052:16:0;;14044:61;;;;-1:-1:-1;;;14044:61:0;;23362:2:1;14044:61:0;;;23344:21:1;;;23381:18;;;23374:30;23440:34;23420:18;;;23413:62;23492:18;;14044:61:0;23160:356:1;14044:61:0;13087:4;13111:16;;;:7;:16;;;;;;-1:-1:-1;;;;;13111:16:0;:30;14116:58;;;;-1:-1:-1;;;14116:58:0;;23723:2:1;14116:58:0;;;23705:21:1;23762:2;23742:18;;;23735:30;23801;23781:18;;;23774:58;23849:18;;14116:58:0;23521:352:1;14116:58:0;-1:-1:-1;;;;;14245:13:0;;;;;;:9;:13;;;;;:18;;14262:1;;14245:13;:18;;14262:1;;14245:18;:::i;:::-;;;;-1:-1:-1;;14274:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;14274:21:0;-1:-1:-1;;;;;14274:21:0;;;;;;;;14313:33;;14274:16;;;14313:33;;14274:16;;14313:33;13972:382;;:::o;14:250:1:-;99:1;109:113;123:6;120:1;117:13;109:113;;;199:11;;;193:18;180:11;;;173:39;145:2;138:10;109:113;;;-1:-1:-1;;256:1:1;238:16;;231:27;14:250::o;269:271::-;311:3;349:5;343:12;376:6;371:3;364:19;392:76;461:6;454:4;449:3;445:14;438:4;431:5;427:16;392:76;:::i;:::-;522:2;501:15;-1:-1:-1;;497:29:1;488:39;;;;529:4;484:50;;269:271;-1:-1:-1;;269:271:1:o;545:220::-;694:2;683:9;676:21;657:4;714:45;755:2;744:9;740:18;732:6;714:45;:::i;770:131::-;-1:-1:-1;;;;;;844:32:1;;834:43;;824:71;;891:1;888;881:12;906:245;964:6;1017:2;1005:9;996:7;992:23;988:32;985:52;;;1033:1;1030;1023:12;985:52;1072:9;1059:23;1091:30;1115:5;1091:30;:::i;1348:180::-;1407:6;1460:2;1448:9;1439:7;1435:23;1431:32;1428:52;;;1476:1;1473;1466:12;1428:52;-1:-1:-1;1499:23:1;;1348:180;-1:-1:-1;1348:180:1:o;1741:127::-;1802:10;1797:3;1793:20;1790:1;1783:31;1833:4;1830:1;1823:15;1857:4;1854:1;1847:15;1873:275;1944:2;1938:9;2009:2;1990:13;;-1:-1:-1;;1986:27:1;1974:40;;2044:18;2029:34;;2065:22;;;2026:62;2023:88;;;2091:18;;:::i;:::-;2127:2;2120:22;1873:275;;-1:-1:-1;1873:275:1:o;2153:183::-;2213:4;2246:18;2238:6;2235:30;2232:56;;;2268:18;;:::i;:::-;-1:-1:-1;2313:1:1;2309:14;2325:4;2305:25;;2153:183::o;2341:173::-;2409:20;;-1:-1:-1;;;;;2458:31:1;;2448:42;;2438:70;;2504:1;2501;2494:12;2519:662;2573:5;2626:3;2619:4;2611:6;2607:17;2603:27;2593:55;;2644:1;2641;2634:12;2593:55;2680:6;2667:20;2706:4;2730:60;2746:43;2786:2;2746:43;:::i;:::-;2730:60;:::i;:::-;2824:15;;;2910:1;2906:10;;;;2894:23;;2890:32;;;2855:12;;;;2934:15;;;2931:35;;;2962:1;2959;2952:12;2931:35;2998:2;2990:6;2986:15;3010:142;3026:6;3021:3;3018:15;3010:142;;;3092:17;;3080:30;;3130:12;;;;3043;;3010:142;;;-1:-1:-1;3170:5:1;2519:662;-1:-1:-1;;;;;;2519:662:1:o;3186:1146::-;3304:6;3312;3365:2;3353:9;3344:7;3340:23;3336:32;3333:52;;;3381:1;3378;3371:12;3333:52;3421:9;3408:23;3450:18;3491:2;3483:6;3480:14;3477:34;;;3507:1;3504;3497:12;3477:34;3545:6;3534:9;3530:22;3520:32;;3590:7;3583:4;3579:2;3575:13;3571:27;3561:55;;3612:1;3609;3602:12;3561:55;3648:2;3635:16;3670:4;3694:60;3710:43;3750:2;3710:43;:::i;3694:60::-;3788:15;;;3870:1;3866:10;;;;3858:19;;3854:28;;;3819:12;;;;3894:19;;;3891:39;;;3926:1;3923;3916:12;3891:39;3950:11;;;;3970:148;3986:6;3981:3;3978:15;3970:148;;;4052:23;4071:3;4052:23;:::i;:::-;4040:36;;4003:12;;;;4096;;;;3970:148;;;4137:5;-1:-1:-1;;4180:18:1;;4167:32;;-1:-1:-1;;4211:16:1;;;4208:36;;;4240:1;4237;4230:12;4208:36;;4263:63;4318:7;4307:8;4296:9;4292:24;4263:63;:::i;:::-;4253:73;;;3186:1146;;;;;:::o;4337:254::-;4405:6;4413;4466:2;4454:9;4445:7;4441:23;4437:32;4434:52;;;4482:1;4479;4472:12;4434:52;4505:29;4524:9;4505:29;:::i;:::-;4495:39;4581:2;4566:18;;;;4553:32;;-1:-1:-1;;;4337:254:1:o;4778:328::-;4855:6;4863;4871;4924:2;4912:9;4903:7;4899:23;4895:32;4892:52;;;4940:1;4937;4930:12;4892:52;4963:29;4982:9;4963:29;:::i;:::-;4953:39;;5011:38;5045:2;5034:9;5030:18;5011:38;:::i;:::-;5001:48;;5096:2;5085:9;5081:18;5068:32;5058:42;;4778:328;;;;;:::o;5111:407::-;5176:5;5210:18;5202:6;5199:30;5196:56;;;5232:18;;:::i;:::-;5270:57;5315:2;5294:15;;-1:-1:-1;;5290:29:1;5321:4;5286:40;5270:57;:::i;:::-;5261:66;;5350:6;5343:5;5336:21;5390:3;5381:6;5376:3;5372:16;5369:25;5366:45;;;5407:1;5404;5397:12;5366:45;5456:6;5451:3;5444:4;5437:5;5433:16;5420:43;5510:1;5503:4;5494:6;5487:5;5483:18;5479:29;5472:40;5111:407;;;;;:::o;5523:451::-;5592:6;5645:2;5633:9;5624:7;5620:23;5616:32;5613:52;;;5661:1;5658;5651:12;5613:52;5701:9;5688:23;5734:18;5726:6;5723:30;5720:50;;;5766:1;5763;5756:12;5720:50;5789:22;;5842:4;5834:13;;5830:27;-1:-1:-1;5820:55:1;;5871:1;5868;5861:12;5820:55;5894:74;5960:7;5955:2;5942:16;5937:2;5933;5929:11;5894:74;:::i;5979:186::-;6038:6;6091:2;6079:9;6070:7;6066:23;6062:32;6059:52;;;6107:1;6104;6097:12;6059:52;6130:29;6149:9;6130:29;:::i;6170:632::-;6341:2;6393:21;;;6463:13;;6366:18;;;6485:22;;;6312:4;;6341:2;6564:15;;;;6538:2;6523:18;;;6312:4;6607:169;6621:6;6618:1;6615:13;6607:169;;;6682:13;;6670:26;;6751:15;;;;6716:12;;;;6643:1;6636:9;6607:169;;;-1:-1:-1;6793:3:1;;6170:632;-1:-1:-1;;;;;;6170:632:1:o;6807:160::-;6872:20;;6928:13;;6921:21;6911:32;;6901:60;;6957:1;6954;6947:12;6972:416;7062:6;7070;7123:2;7111:9;7102:7;7098:23;7094:32;7091:52;;;7139:1;7136;7129:12;7091:52;7179:9;7166:23;7212:18;7204:6;7201:30;7198:50;;;7244:1;7241;7234:12;7198:50;7267:61;7320:7;7311:6;7300:9;7296:22;7267:61;:::i;:::-;7257:71;;;7347:35;7378:2;7367:9;7363:18;7347:35;:::i;:::-;7337:45;;6972:416;;;;;:::o;7393:254::-;7458:6;7466;7519:2;7507:9;7498:7;7494:23;7490:32;7487:52;;;7535:1;7532;7525:12;7487:52;7558:29;7577:9;7558:29;:::i;:::-;7548:39;;7606:35;7637:2;7626:9;7622:18;7606:35;:::i;7652:667::-;7747:6;7755;7763;7771;7824:3;7812:9;7803:7;7799:23;7795:33;7792:53;;;7841:1;7838;7831:12;7792:53;7864:29;7883:9;7864:29;:::i;:::-;7854:39;;7912:38;7946:2;7935:9;7931:18;7912:38;:::i;:::-;7902:48;;7997:2;7986:9;7982:18;7969:32;7959:42;;8052:2;8041:9;8037:18;8024:32;8079:18;8071:6;8068:30;8065:50;;;8111:1;8108;8101:12;8065:50;8134:22;;8187:4;8179:13;;8175:27;-1:-1:-1;8165:55:1;;8216:1;8213;8206:12;8165:55;8239:74;8305:7;8300:2;8287:16;8282:2;8278;8274:11;8239:74;:::i;:::-;8229:84;;;7652:667;;;;;;;:::o;8324:260::-;8392:6;8400;8453:2;8441:9;8432:7;8428:23;8424:32;8421:52;;;8469:1;8466;8459:12;8421:52;8492:29;8511:9;8492:29;:::i;:::-;8482:39;;8540:38;8574:2;8563:9;8559:18;8540:38;:::i;8589:380::-;8668:1;8664:12;;;;8711;;;8732:61;;8786:4;8778:6;8774:17;8764:27;;8732:61;8839:2;8831:6;8828:14;8808:18;8805:38;8802:161;;8885:10;8880:3;8876:20;8873:1;8866:31;8920:4;8917:1;8910:15;8948:4;8945:1;8938:15;9387:356;9589:2;9571:21;;;9608:18;;;9601:30;9667:34;9662:2;9647:18;;9640:62;9734:2;9719:18;;9387:356::o;9748:127::-;9809:10;9804:3;9800:20;9797:1;9790:31;9840:4;9837:1;9830:15;9864:4;9861:1;9854:15;9880:125;9945:9;;;9966:10;;;9963:36;;;9979:18;;:::i;10419:127::-;10480:10;10475:3;10471:20;10468:1;10461:31;10511:4;10508:1;10501:15;10535:4;10532:1;10525:15;10551:135;10590:3;10611:17;;;10608:43;;10631:18;;:::i;:::-;-1:-1:-1;10678:1:1;10667:13;;10551:135::o;11518:413::-;11720:2;11702:21;;;11759:2;11739:18;;;11732:30;11798:34;11793:2;11778:18;;11771:62;-1:-1:-1;;;11864:2:1;11849:18;;11842:47;11921:3;11906:19;;11518:413::o;12062:545::-;12164:2;12159:3;12156:11;12153:448;;;12200:1;12225:5;12221:2;12214:17;12270:4;12266:2;12256:19;12340:2;12328:10;12324:19;12321:1;12317:27;12311:4;12307:38;12376:4;12364:10;12361:20;12358:47;;;-1:-1:-1;12399:4:1;12358:47;12454:2;12449:3;12445:12;12442:1;12438:20;12432:4;12428:31;12418:41;;12509:82;12527:2;12520:5;12517:13;12509:82;;;12572:17;;;12553:1;12542:13;12509:82;;;12513:3;;;12062:545;;;:::o;12783:1352::-;12909:3;12903:10;12936:18;12928:6;12925:30;12922:56;;;12958:18;;:::i;:::-;12987:97;13077:6;13037:38;13069:4;13063:11;13037:38;:::i;:::-;13031:4;12987:97;:::i;:::-;13139:4;;13203:2;13192:14;;13220:1;13215:663;;;;13922:1;13939:6;13936:89;;;-1:-1:-1;13991:19:1;;;13985:26;13936:89;-1:-1:-1;;12740:1:1;12736:11;;;12732:24;12728:29;12718:40;12764:1;12760:11;;;12715:57;14038:81;;13185:944;;13215:663;12009:1;12002:14;;;12046:4;12033:18;;-1:-1:-1;;13251:20:1;;;13369:236;13383:7;13380:1;13377:14;13369:236;;;13472:19;;;13466:26;13451:42;;13564:27;;;;13532:1;13520:14;;;;13399:19;;13369:236;;;13373:3;13633:6;13624:7;13621:19;13618:201;;;13694:19;;;13688:26;-1:-1:-1;;13777:1:1;13773:14;;;13789:3;13769:24;13765:37;13761:42;13746:58;13731:74;;13618:201;-1:-1:-1;;;;;13865:1:1;13849:14;;;13845:22;13832:36;;-1:-1:-1;12783:1352:1:o;16723:168::-;16796:9;;;16827;;16844:15;;;16838:22;;16824:37;16814:71;;16865:18;;:::i;17662:1256::-;17886:3;17924:6;17918:13;17950:4;17963:64;18020:6;18015:3;18010:2;18002:6;17998:15;17963:64;:::i;:::-;18090:13;;18049:16;;;;18112:68;18090:13;18049:16;18147:15;;;18112:68;:::i;:::-;18269:13;;18202:20;;;18242:1;;18307:36;18269:13;18307:36;:::i;:::-;18362:1;18379:18;;;18406:141;;;;18561:1;18556:337;;;;18372:521;;18406:141;-1:-1:-1;;18441:24:1;;18427:39;;18518:16;;18511:24;18497:39;;18486:51;;;-1:-1:-1;18406:141:1;;18556:337;18587:6;18584:1;18577:17;18635:2;18632:1;18622:16;18660:1;18674:169;18688:8;18685:1;18682:15;18674:169;;;18770:14;;18755:13;;;18748:37;18813:16;;;;18705:10;;18674:169;;;18678:3;;18874:8;18867:5;18863:20;18856:27;;18372:521;-1:-1:-1;18909:3:1;;17662:1256;-1:-1:-1;;;;;;;;;;17662:1256:1:o;21486:128::-;21553:9;;;21574:11;;;21571:37;;;21588:18;;:::i;21619:414::-;21821:2;21803:21;;;21860:2;21840:18;;;21833:30;21899:34;21894:2;21879:18;;21872:62;-1:-1:-1;;;21965:2:1;21950:18;;21943:48;22023:3;22008:19;;21619:414::o;22038:127::-;22099:10;22094:3;22090:20;22087:1;22080:31;22130:4;22127:1;22120:15;22154:4;22151:1;22144:15;22170:120;22210:1;22236;22226:35;;22241:18;;:::i;:::-;-1:-1:-1;22275:9:1;;22170:120::o;22295:112::-;22327:1;22353;22343:35;;22358:18;;:::i;:::-;-1:-1:-1;22392:9:1;;22295:112::o;22412:489::-;-1:-1:-1;;;;;22681:15:1;;;22663:34;;22733:15;;22728:2;22713:18;;22706:43;22780:2;22765:18;;22758:34;;;22828:3;22823:2;22808:18;;22801:31;;;22606:4;;22849:46;;22875:19;;22867:6;22849:46;:::i;:::-;22841:54;22412:489;-1:-1:-1;;;;;;22412:489:1:o;22906:249::-;22975:6;23028:2;23016:9;23007:7;23003:23;22999:32;22996:52;;;23044:1;23041;23034:12;22996:52;23076:9;23070:16;23095:30;23119:5;23095:30;:::i

Swarm Source

ipfs://ef984dd03d432e218c86e222d500e831a3600523caab9301297fa12b32eaccf3
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.